Xorg (简体中文)
From ArchWiki
| i18n |
|---|
| English |
| Polski |
| Русский |
| Česky |
| Italiano |
| 简体中文 |
[edit] 介绍
Xorg 是X11 X窗口系统的一个开放和开源实现。(查看 X.org Wikipedia Article 或 X.org for details.) 一般地,如果你想在Arch上用GUI,你要用到xorg.
[edit] 安装 Xorg
开始之前,确定你做了一下事情:
- 确保 pacman 已经配置和更新.
- 如果你运行了其他的X server,请关闭.
ctrl+alt+backspace - 记录下第三方驱动 (如 nVidia 或 ATI 驱动).
现在让我们安装Xorg:
# pacman -S xorg
缺省的vesa显示驱动仅仅是一个fallback(没有加速并且不支持很多分辨率),因此你还需要一个合适的驱动。你可以打入以下命令获取显示驱动列表:
# pacman -Ss xf86-video
找到合适你显卡的驱动后,用pacman -S命令安装。想要知道你的显卡类型,如果安装了hwd则可以运行'hwd -s',或者运行'lspci' (查看'VGA compatible controller'这一行)。
如果 xorg 安装成功, 是时候生成 xorg.conf了
[edit] 配置 Xorg
在你运行xorg前, 你需要配置它,让它知道你的显卡,显示器,鼠标键盘. 下面有几种方法。
[edit] hwd
或许简单快捷配置好Xorg的方法就是使用hwd,一个由Arch linux社区用户所写的工具。它主要是一个硬件探测工具,当然还有其他功能。其中一项就是设置X server,幸运的是,hwd 比xorgconf 更加简明,根本不需要任何输入。
首先,你需要安装hwd:
# pacman -S 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 Your sample file(s) ready, rename 'xorg.conf'. If unsure first try 'vesa' (default).
要使用这些范例配置文件,你得手工重命名它,例如:
# mv xorg.conf.hwd xorg.conf
注意,以我的经验hwd生成的XF86Config-4文件,如果当前没有xorg.conf的话,Xorg就会自动使用它。
[edit] xorgconfig
运行 xorgconfig:
xorgconfig
会生成一个新的 xorg.conf.
回答一些问题之后,它会为您生成文件。 这个程序不是很好,但至少是个开始,你可以在这之后手动修改。
[edit] Xorg -configure
你也可以使用
# Xorg -configure
或者
# X -configure
[edit] nvidia-xconfig
nVidia 用户也可以使用
nvidia-xconfig
用户要安装 nvidia 官方驱动installed.
在Module段注释掉这行
Load "type1"
这是因为新版本的xorg-server已经不含type1字体模块了(已被freetype完全替代)。
[edit] 编辑 xorg.conf
在xorg.conf生成后,你可能想要修改它. 打开你最心爱的文本编辑器, 如 Vim (你需要 root 权限):
vim /etc/X11/xorg.conf
如果你想要设置鼠标滚轮, 请看 Get All Mouse Buttons Working.
[edit] 显示器设置
依赖于你的硬件, Xorg 可能无法正确探测显示器参数, 又或者你只想使用显示器性能之外的低分辨率。在设置以下参数前,你可能要查看以下显示器的手册。 以下设置在Monitor section中指定:
[edit] 水平同步
HorizSync 28-64
[edit] 刷新率
VertRefresh 60
以下设置在Screen section中指定:
[edit] 色深
Depth 24
[edit] 分辨率
Modes "1280x1024" "1024x768" "800x600"
[edit] 键盘设置
Xorg 可能会探测键盘失败,这可能是没有正确设置键盘布局(keyboard layout)和键盘模型(keyboard model)。
想看keyboard models, layouts, variants and options的完整的列表, 请打开.
/usr/share/X11/xkb/rules/xorg.lst
[edit] 键盘布局 Keyboard Layout
在keyboard InputDevice section中使用XkbLayout选项来改变键盘布局。如果你有一个英文布局的键盘,如下所示:
Option "XkbLayout" "gb"
[edit] 键盘模型 Keyboard Model
在keyboard InputDevice section中使用XkbModel选项来改变键盘模型。如果你有一个M$的无线多媒体键盘,如下所示:
Option "XkbModel" "microsoftmult"
[edit] 显示尺寸 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
[edit] 专利驱动
如果你想用第三方的图形驱动, 首先检查X server是否运行OK. 在没有官方驱动下,Xorg也能平稳运行。官方驱动只是提供更高级的特性,如3D加速渲染,双屏设置,TV-out。 nVidia驱动查看 NVIDIA;ATI驱动查看ATI。
[edit] 字体
在Xorg Font Configuration X字体配置有设置字体的贴士.
[edit] Xorg.conf 文件样例
如果谁有可以运行的xorg.conf文件, 可以提供一个链接让其他人也能看到! 请不要贴上整个文件; 上传到其他地方并建立一个链接,谢谢!
- Shadowhand (nv and nvidia drivers): http://people.os-zen.net/shadowhand/configs/xorg.conf
- Cerebral (fglrx and radeon drivers): http://www.student.cs.uwaterloo.ca/~tjwillar/configs/xorg.conf
- raskolnikov (via unichrome and synaptics drivers): http://athanatos.free.fr/Arch/xorg.conf
- Leigh (Three independent screens - Three nvidia cards): http://files.myopera.com/allisonleigh/linuxbackup/xorg.conf
[edit] 运行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启动).
[edit] X 启动 (/usr/bin/startx) 小窍门
参看X的选项:
man Xserver
以下的选项可以附加在/usr/bin/startx文件的"defaultserverargs"变量中.
阻止 X 侦听tcp:
-nolisten tcp
在x启动时,取消灰色波纹图案,让x设置一个黑色根窗口(black root window):
-br
为16位字体使能延缓字形加载:
-deferglyphs 16
注意: 如果你用kdm启动x, 则不会执行startx脚本。上述这些选项必须加在/opt/kde/share/config/kdm/kdmrc 文件的变量"ServerCmd"中. 缺省kdm的选项是
ServerCmd=/usr/bin/X -br -nolisten tcp
[edit] 模块化Xorg的变化
[edit] 通用包
请确认你已经安装了键盘、鼠标、显卡的驱动。鼠标和键盘驱动分别为xf86-input-keyboard 和 xf86-input-mouse 。其它类似 xf86-input-* 的包是其它输入设备的驱动。
对于显卡,在xf86-video-*中查找符合的驱动然后安装即可;ATI和Nvidia显卡需要安装非自由驱动(NVIDIA, ATI)。安装完毕后需要在xorg.conf中显卡定义段指定相应的驱动。
要一次安装所有驱动, 可以用 xorg-input-drivers 和 xorg-video-drivers。
[edit] OpenGL 3D 加速
在Arch Linux上,Xorg 7.0 使用组件来支持 mesa, 一个 OpenGL 渲染系统. 以下是可用的一些实现:
- libgl-dri: 开源的 DRI OpenGL 实现。 如果DRI驱动没有安装,会回退到使用软件渲染。
- 其他驱动提供libGL (ati, nvidia)
当pacman安装一个需要mesa的程序时,它会自动安装这些软件包中的一个。请确保设置正确的库,在安装Xorg之前安装你想要的库。在安装完Xorg之后再安装正确的库也是可以的,但是这有可能带来一些依赖方面的错误,通过"-d"选项可以忽略这个错误。
[edit] Glxgears 和 Glxinfo
这些程序在mesa包中.
[edit] 改变的路径(及相关配置)
在这里可以看到其它一些更新信息 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中加入另一个模块路径<code/>ModulePath "/usr/X11R6/lib/modules"</code> 这种方法对Nvidia 76.76有效。
[edit] 故障和修复
[edit] Xorg无法找到你的显示器支持哪些分辨率
我遇到一种情况,在我使用一台显示器(gnr ts902)时Xorg只提供了640x480和320x480选项,显然这不是我想要的。将
Load "dpms"
加到xorg.conf的"Module" Section使我可以将LCD设置为(1280x1024为最佳模式)1024x768等分辨率。如果我早点发现这点的话,就用不着花好几天功夫尝试其他人的类似(和不类似)的解决方法...
[edit] 键盘问题
自动生成的xorg.conf文件可能会产生一些问题。如果你无法通过CTRL-ALT-F1切换到tty1,或者GB的用户无法输入符号“£”,请检查一下你的xorg.conf中是否有以下入口,并根据提示进行修改:
Option "XkbLayout" "uk" #"uk"不是一个真正的键盘布局,在/usr/share/X11/xkb/symbols/下可以查看所有真正的键盘布局。 Option "XkbRules" "xfree86" #这里应该改成"xorg" Option "XkbVariant" "nodeadkeys" #这一行会导致上面描述的问题,试着将其注释掉。
加入下面这一行,可以利用ALT-SHIFT切换键盘布局:
Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll"
[edit] 快速修复 Bitstream-Vera 冲突
如果你看到ttf-bitstream-vera与xorg冲突的错误信息,可以通过以下步骤来修复:
- 通过回答“no”退出pacman会话
- 执行
pacman -Rd xorg - 执行
pacman -Syu - 执行
pacman -S xorg - 更新/etc/X11/xorg.conf中的路径
[edit] 快速修复在 /usr/include 中的文件冲突
如果你看到/usr/include/X11 和 /usr/include/GL文件冲突的信息,通过以下步骤修复:
- 执行
rm /usr/include/{GL,X11} - 执行
pacman -Su
删除的两个目录只是链接,在新的xorg包中会用真正的目录内容放在/usr/include/下面,就不会出现文件冲突问题了。
[edit] 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
[edit] 鼠标滚轮不工作
在Xorg 7中"Auto"协议似乎无法正常工作。找到InputDevice节中与鼠标相关的设置,然后进行更改:
Option "Protocol" "auto"
改成
Option "Protocol" "IMPS/2"
或者
Option "Protocol" "ExplorerPS/2"
[edit] 额外的鼠标按键不工作
使用USB鼠标的用户请参阅Get_All_Mouse_Buttons_Working.
Intellimouse (ExplorerPS/2)的用户可以发现其鼠标的滚动和侧按钮无法正常工作。原先的xorg.conf需要加入:
Option "Buttons" "7" Option "ZAxisMapping" "6 7"
同时运行以下命令来让侧按钮正常工作:
xmodmap -e "pointer = 1 2 3 6 7 4 5"
现在不再需要xmodmap命令了。取而代之,在xorg.conf中加入以下内容即可:
Option "Buttons" "5" Option "ZAxisMapping" "4 5" Option "ButtonMapping" "1 2 3 6 7"
这样7按钮Intellimouse鼠标也可以像以前一样正常工作了。
[edit] 缺少库文件
- 求助!运行程序时显示“libXxxxxx不存在"的错误!
在多数情况下,根据提示的库名称安装相应的库即可:
pacman -S libXxxx
[edit] 无法创建某些包,提示"缺少X11头文件"
安装xproto和libx11两个包即可(如果两个包已经存在,就覆盖安装)。
[edit] 无法加载'(null)'字体
- 一些程序无法运行,提示无法加载`(null)'字体.
这些软件包可能需要一些额外的字体。某些程序只能使用位图字体。 目前有两种主要的位图字体包:xorg-fonts-75-dpi、xorg-fonts-100dpi。选择其中一个就可以了。通过下面这个命令查看显示设置:
xdpyinfo | grep resolution
根据显示信息选择合适dpi的字体即可(用75 或 100 代替XX):
pacman -S xorg-fonts-XXdpi
[edit] KDE任务栏和桌面图标出错
- KDE任务栏无法工作,并且桌面图标也消失了
安装libxcomposite 和libxss两个软件包就可以了:
pacman -S libxcomposite libxss
[edit] 从testing升级到current时“文件丢失”
如果你在将testing的Xorg7升级到current(现为core,译者注)的Xorg7时发现许多文件丢失(包括startx,/usr/share/X11/rgb.txt等),这是由于xorg-clients包被拆分成许多小的包时造成的文件丢失。 你需要重新安装xorg-clients包及其依赖的包:
pacman -S xorg-apps xorg-font-utils xorg-res-utils xorg-server-utils \
xorg-twm xorg-utils xorg-xauth xorg-xdm xorg-xfs xorg-xfwp \
xorg-xinit xorg-xkb-utils xorg-xsm
这应该可以解决问题
[edit] 不同桌面环境下MIME的类型问题
如果你发现在桌面环境中图标消失,并且无法点击打开文件,在/etc/profile或者某个初始化脚本中加入下面的语句:
XDG_DATA_DIRS=$XDG_DATA_DIRS:/usr/share export XDG_DATA_DIRS
重启机器即可。
[edit] Matrox显卡的DRI功能失效
如果你使用的是Matrox显卡,在升级到Xorg7后它的DRI功能失效,试着在xorg.conf的显卡设备设置段中加入下面一行:
Option "OldDmaInit" "On"
[edit] Xephyr下无法启动任何客户端
客户端连接被X server的安全机制拒绝,你可以在you can find a complete explanation and solution in [1]这里找到完整的解释和解决方法。
[edit] 无法用"su"以root身份启动X客户端
如果你遇到"Client is not authorized to connect to server",尝试将以下内容
session optional pam_xauth.so
加入到/etc/pam.d/su文件中。 pam_xauth就可以正常设置环境变量以及处理xauth密钥了。
[edit] 相关链接
更多相关内容可以查看以下wiki链接:
或者外部链接: