Xorg
Xorg 是X11 图基窥镜系统的一个开源实现。 一般地,如果你想在Arch上使用图形交互界面,需要用到xorg(也可以是wayland——但还不成熟).
安装 Xorg[ ]
开始之前,确定你做了一下事情:
- 确保 pacman 已经配置和更新.
- 记录下第三方驱动 (如 nVidia 或 ATI 驱动).
首先让我们安装完整的'xorg'软件包组:
# pacman -S xorg
缺省的vesa显示驱动虽然兼容绝大部分芯片组,但它仅仅是一个后备方案(没有加速并且很多分辨率不支持),因此可以的话你还是需要一个合适的驱动。你可以打入以下命令获取显示驱动列表:
# pacman -Ss xf86-video
找到合适你显卡的驱动后,用pacman -S命令安装。
想要知道你的显卡类型,可以安装hwd (pacman -S hwdetect)或community/lshw:
$ hwd -s
或者:
$lshw -short
或者:
$ lspci | grep "VGA"
配置xorg[ ]
在运行xorg以前,你需要对它进行配置,使得它识别你的图形卡、显示器、鼠标和键盘。有几种方法可以自动进行配置:
无需xorg.conf[ ]
从1.8版起,Xorg server已经不需要通过hal进行硬件访问,udev能够很好的完成硬件检测工作.xorg不再依赖hal,而且使用xorg.conf文件成为一个可选方案。一开始不使用xorg.conf},然后只是增加些必须的部分,这样做可能更好。 启动X:
$ startx
或者
$ xinit
如果X可以正常启动,而你需要一个基本的xorg.conf文件,那么就可以根据Xorg.0.log文件中创建它。
如果没有检测到闭源驱动如nvidia,可以加入一个最小的xorg.conf,就像下面这样:
Section "ServerLayout" Identifier "Layout0" Screen 0 "Screen0" 0 0 EndSection Section "Files" FontPath "/usr/share/fonts/local/" EndSection Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" BoardName "GeForce Go 7300" EndSection Section "Screen" Identifier "Screen0" Device "Device0" EndSection
不使用xorg.conf配置non-us键盘[ ]
# cp /usr/share/hal/fdi/policy/10osvendor/10-keymap.fdi /etc/hal/fdi/policy/
然后打开/etc/hal/fdi/policy/10-keymap.fdi,编辑 input.xkb.layout中的"us"成为你所希望的键盘布局,如果有必要,可以一同修改input.xkb.variant.
在X里执行命令
# setxkbmap pl
(用你自己的键盘布局而不是pl)可以切换你的键盘布局。 想要永久生效,你可以采用将此命令加入到~/.xinitrc文件中(在启动窗口管理器之前)等方式。
hwd[ ]
注意:hwd目前已经升级(5.5版)并能工作于xorg-server-1.5.x和1.6.x。 目前,它会禁用基于HAL的输入设备的热插拔功能,取而代之的是产生一个包含输入设备的传统xorg.conf文件。 |
hwd已经从community官方仓库中移动到AUR。 |
或许简单快捷配置好Xorg的方法就是使用hwd,一个由Arch linux社区用户所写的工具。它主要是一个硬件探测工具,当然还有其他功能。其中一项就是设置X server,幸运的是,hwd 比xorgconf 更加简明,根本不需要任何输入。
首先,你需要安装AUR中的hwd软件包.
现在只需要以roor权限运行下面的命令,便可生成一个缺省的xorg.conf文件:
# hwd -xa
这将用hwd检测到的硬件生成一些配置,覆盖掉已有的/etc/X11/xorg.conf文件,原有的xorg.conf文件将被重命名为xorg.conf.bak。
另外一种做法是, 你可以生成一个范例Xorg文件(/etc/X11/xorg.conf.hwd)而不覆盖你已有的设置。 使用-x参数来运行hwd:
# hwd -x
结果范例:
/etc/X11/xorg.conf.ati /etc/X11/xorg.conf.vesa
有了范例文件,把它们之一重命名为'xorg.conf'。如果不确定,可以先尝试'vesa'(缺省)。
要使用这些范例文件,你得手动将它更名,例如:
# mv xorg.conf.hwd xorg.conf
注意,以我的经验hwd生成的XF86Config-4文件,如果当前没有xorg.conf的话,Xorg就会自动使用它。
Xorg -configure[ ]
你也可以使用
# Xorg -configure
或者
# X -configure
以下命令在当前目录下自动生成缺省的xorg.conf.new文件。
# X -config ./xorg.conf.new
你可以将它复制为/etc/X11/xorg.conf。
nvidia-xconfig[ ]
nVidia 用户也可以使用
# nvidia-xconfig
用户要安装 nvidia 官方驱动.
在Module段注释掉这行
Load "type1"
这是因为新版本的xorg-server已经不含type1字体模块了(已被freetype完全替代)。
根据Xorg.0.log文件中创建[ ]
如果你可以不使用xorg.conf文件成功启动x,那么就可以在/var/log/Xorg.0.log中找到缺省的xorg配置。只要复制下面两行
(==) --- Start of built-in configuration ---
和
(==) --- End of built-in configuration ---
之间的文本到你新建的xorg.conf中就可以了。
编辑 xorg.conf[ ]
在xorg.conf生成后,你可能想要修改它. 打开你最心爱的文本编辑器, 如 Vim (你需要 root 权限):
vim /etc/X11/xorg.conf
如果你想要设置鼠标滚轮, 请看Get All Mouse Buttons Working.
显示器设置[ ]
依赖于你的硬件, Xorg 可能无法正确探测显示器参数, 又或者你只想使用显示器性能之外的低分辨率。在设置以下参数前,你可能要查看以下显示器的手册。 以下设置在Monitor section中指定:
水平同步[ ]
HorizSync 28-64
刷新率[ ]
VertRefresh 60
以下设置在Screen section中指定:
色深[ ]
Depth 24
分辨率[ ]
Modes "1280x1024" "1024x768" "800x600"
键盘设置[ ]
Xorg 可能会探测键盘失败,这可能是没有正确设置键盘布局(keyboard layout)和键盘模型(keyboard model)。
想看keyboard models, layouts, variants and options的完整的列表, 请打开.
/usr/share/X11/xkb/rules/xorg.lst
键盘布局 Keyboard Layout[ ]
在keyboard InputDevice section中使用XkbLayout选项来改变键盘布局。如果你有一个英文布局的键盘,如下所示:
Option "XkbLayout" "gb"
键盘模型 Keyboard Model[ ]
在keyboard InputDevice section中使用XkbModel选项来改变键盘模型。如果你有一个M$的无线多媒体键盘,如下所示:
Option "XkbModel" "microsoftmult"
显示尺寸 Display Size/DPI[ ]
为得到正确的字体大小,显示尺寸必须设置为你所需要的DPI.在"Monitor"
段中以毫米(mm)为单位设置显示大小:
Section "Monitor" ... DisplaySize 336 252 # 96 DPI @ 1280x960 ... EndSection
计算显示尺寸值的公式是 宽 x 25.4 / DPI 和 高 x 25.4 / DPI. 如果你的xorg的分辨率是 1024x768 ,想要96的DPI, 使用 1024 x 25.4 / 96 和 768 x 25.4 / 96. Round numbers down.
# calc: (x|y)pixels * 25.4 / dpi # DisplaySize 168 126 # 96 DPI @ 640x480 # DisplaySize 210 157 # 96 DPI @ 800x600 # DisplaySize 269 201 # 96 DPI @ 1024x768 # DisplaySize 302 227 # 96 DPI @ 1152x864 # DisplaySize 336 252 # 96 DPI @ 1280x960 # DisplaySize 336 269 # 96 DPI @ 1280x1024 (non 4:3 aspect) # DisplaySize 370 277 # 96 DPI @ 1400x1050 # DisplaySize 420 315 # 96 DPI @ 1600x1200 # DisplaySize 506 315 # 96 DPI @ 1920x1200
对 nVidia 的驱动来说, 你要手动设置而不是自动设置DPI. 在这些显卡上设置DPI不难. 下面两行或者任意一行可以加在device段中即可。
Option "UseEdidDpi" "false" Option "DPI" "96 x 96"
执行以下命令可以检查结果, 如果你设置DPI为96,那么会返回96x96 per dots.
xdpyinfo | grep -B1 dot
官方驱动[ ]
首先检查X server是否运行OK. 在没有官方驱动下,Xorg也能平稳运行。官方驱动只是提供更高级的特性,如3D加速渲染,双屏设置,TV-out。 nVidia驱动查看 NVIDIA;ATI驱动查看ATI。
字体[ ]
在X字体配置有设置字体的贴士.
测试Xorg配置文件[ ]
键入以下命令:
startx
默认的X环境很简单, 一般要安装窗口管理器或者桌面环境。
为测试x配置文件,你可以:
X -config <your config file>
如果出现问题, 可以查看日志 /var/log/Xorg.0.log。 请注意以 (EE) 开头的行,它会指出错误,也注意以(WW)开头的行,它会指出其他问题。
*请注意* 使用 startx 需要~/.xinitrc 文件, 这样 X 才能知道它在启动时要运行什么。最好的选择是拷贝 /etc/skel/.xinitrc文件到你的用户目录下并做些修改。注释掉你不需要的'exec'行, 增加或者释放你所需要的内容。如果你使用GNOME,为防止HAL的许可问题,最好通过gdm来启动GNOME。
另外,你也可以安装 twm 和 xterm (通过 pacman),如果 /.xinitrc 不存在,它可以作为一个替补 (以/etc/X11/xinit/xinitrc启动).
X 启动 (/usr/bin/startx) 小窍门[ ]
参看X的选项:
man Xserver
以下的选项可以附加在/usr/bin/startx文件的"defaultserverargs"变量中.
阻止 X 侦听tcp:
-nolisten tcp
现在已是/etc/X11/xinit/xserverrc中的缺省设置。 |
在x启动时,取消灰色波纹图案,让x设置一个黑色根窗口(black root window):
-br
新版Xorg已不需要。 |
为16位字体使能延缓字形加载:
-deferglyphs 16
注意: 如果你用kdm启动x, 则不会执行startx脚本。上述这些选项必须加在/usr/share/config/kdm/kdmrc文件的"ServerArgsLocal"或者"ServerCmd"变量中. 缺省kdm的选项是
ServerArgsLocal=-nolisten tcp ServerCmd=/usr/bin/X
模块化Xorg的变化[ ]
通用包[ ]
请确认你已经安装了键盘、鼠标、显卡的驱动。鼠标和键盘驱动分别为xf86-input-keyboard 和 xf86-input-mouse 。其它类似 xf86-input-* 的包是其它输入设备的驱动。
对于显卡,在xf86-video-*中查找符合的驱动然后安装即可;ATI和Nvidia显卡需要安装非自由驱动(。安装完毕后需要在xorg.conf中显卡定义段指定相应的驱动。
要一次安装所有驱动, 可以用 xorg-input-drivers 和 xorg-video-drivers。
OpenGL 3D 加速[ ]
在Arch Linux上,Xorg 7.0 使用组件来支持 mesa, 一个 OpenGL 渲染系统. 以下是可用的一些实现:
- libgl-dri: 开源的 DRI OpenGL 实现。 如果DRI驱动没有安装,会回退到使用软件渲染。
- 其他驱动提供libGL (ati, nvidia)
当pacman安装一个需要mesa的程序时,它会自动安装这些软件包中的一个。请确保设置正确的库,在安装Xorg之前安装你想要的库。在安装完Xorg之后再安装正确的库也是可以的,但是这有可能带来一些依赖方面的错误,通过"-d"选项可以忽略这个错误。
Glxgears 和 Glxinfo[ ]
这些程序在mesa包中.
改变的路径(及相关配置)[ ]
在这里可以看到其它一些更新信息 http://www.archlinux.org/blog/2006/01/02/how-to-upgrade-xorg/
模块化X.org 7的所有文件都安装在/usr下面,以前老的版本是安装在/usr/X11R6。相应地,一些配置文件也需要更新:
- /etc/X11/xorg.conf
- 字体路径现在位于/usr/share/fonts
- RGB数据库位于/usr/share/X11/rgb
- 模块路径为/usr/lib/xorg/modules
还要注意一些X配置工具可能无法工作。现在配置X.org最简单的办法是:安装正确的驱动包,然后运行Xorg -configure,这会产生一个配置文件/root/xorg.conf.new
,你只需要在此基础上修改一下分辨率、鼠标配置、键盘布局即可。
一些软件包含有涉及/usr/X11R6的硬编码,这些包需要进行修改。在修改完成前的这段时间内,检查一下安装在/usr/X11R6下面的文件,将它们卸载掉,然后创建一个从/usr到 /usr/X11R6的链接,再重新安装相关软件包。另外一个选择是将/usr/X11R6下的内容移动到/usr下面,再创建一个链接即可。
或者你也可以在xorg.conf中加入另一个模块路径
ModulePath "/usr/X11R6/lib/modules"
这种方法对Nvidia 76.76有效。
故障和修复[ ]
startx,无反应/空屏[ ]
检查你的用户是否属于hal和dbus用户组。如果不是,则键入以下命令
# gpasswd -a user hal # gpasswd -a user dbus
然后再startx。
Xorg的常见用户问题[ ]
如果你在使用xorg中遇到问题,无法启动或者黑屏,鼠标键盘不能正常工作,那么先进行以下步骤:
- 我有没有运行任何Xorg配置脚本? ( xorg -Configure )
- 我有没有查看log日志文件? ( /var/log/Xorg.0.log )如果你使用IRC,可以将日志粘帖求助。
pacman -S wgetpaste && wgetpaste /var/log/Xorg.0.log
- 我有没有启动hal? - 键盘鼠标不能动?需要安装驱动:
pacman -S xf86-input-{mouse,keyboard}
Apple的键盘问题[ ]
快速修复 Bitstream-Vera 冲突[ ]
如果你看到ttf-bitstream-vera与xorg冲突的错误信息,可以通过以下步骤来修复:
- 通过回答“no”退出pacman会话
- 执行pacman -Rd xorg
- 执行pacman -Syu
- 执行pacman -S xorg
- 更新/etc/X11/xorg.conf中的路径
快速修复在 /usr/include 中的文件冲突[ ]
如果你看到/usr/include/X11 和 /usr/include/GL文件冲突的信息,通过以下步骤修复:
- 执行rm /usr/include/{GL,X11}
- 执行pacman -Su
删除的两个目录只是链接,在新的xorg包中会用真正的目录内容放在/usr/include/下面,就不会出现文件冲突问题了。
libgl-dri 冲突[ ]
如果你得到和下面类似的错误信息:
:: libgl-dri conflicts with nvidia-legacy. Remove nvidia-legacy? [Y/n]
这是由于前面讲述的多重不同OpenGL实现,pacman试图安装libgl-dri来满足这种依赖关系,但还试图更新现有的显卡驱动,结果造成两者冲突。试试下面的步骤也许可以解决这个问题:
- 在更新系统前先更新显卡驱动:
pacman -S nvidia-legacy pacman -Syu
如果这不能解决问题,再试试:
- 卸载现有显卡驱动,然后更新系统,再重新安装显卡驱动:
$ pacman -Rd nvidia-legacy $ pacman -Syu $ pacman -S nvidia-legacy
遇到类似下面的提示时选择“Y”:
:: nvidia-legacy conflicts with libgl-dri. Remove libgl-dri? [Y/n] Y
相关条目[ ]
参考来源[ ]
https://wiki.archlinux.org/index.php/Xorg_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)