Xorg (简体中文)

From ArchWiki

Jump to: navigation, search


i18n
English
Polski
Русский
Česky
Italiano
简体中文

Contents

[edit] 介绍

Xorg 是X11 X窗口系统的一个开放和开源实现。(查看 X.org Wikipedia ArticleX.org for details.) 一般地,如果你想在Arch上用GUI,你要用到xorg.

[edit] 安装 Xorg

开始之前,确定你做了一下事情:

  1. 确保 pacman 已经配置和更新.
  2. 如果你运行了其他的X server,请关闭. ctrl+alt+backspace
  3. 记录下第三方驱动 (如 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文件, 可以提供一个链接让其他人也能看到! 请不要贴上整个文件; 上传到其他地方并建立一个链接,谢谢!

[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-keyboardxf86-input-mouse 。其它类似 xf86-input-* 的包是其它输入设备的驱动。

对于显卡,在xf86-video-*中查找符合的驱动然后安装即可;ATI和Nvidia显卡需要安装非自由驱动(NVIDIA, ATI)。安装完毕后需要在xorg.conf中显卡定义段指定相应的驱动。

要一次安装所有驱动, 可以用 xorg-input-driversxorg-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冲突的错误信息,可以通过以下步骤来修复:

  1. 通过回答“no”退出pacman会话
  2. 执行 pacman -Rd xorg
  3. 执行 pacman -Syu
  4. 执行 pacman -S xorg
  5. 更新/etc/X11/xorg.conf中的路径

[edit] 快速修复在 /usr/include 中的文件冲突

如果你看到/usr/include/X11 和 /usr/include/GL文件冲突的信息,通过以下步骤修复:

  1. 执行 rm /usr/include/{GL,X11}
  2. 执行 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链接:

或者外部链接:

Personal tools