Xorg (简体中文)

From ArchWiki

Jump to: navigation, search
Image:Tango-document-new.png This article is a stub.
It may be confusing, not contain enough information, or be a placeholder for an article to come. People are invited to expand it to full article status and remove this box.
i18n
English
Polski
Русский
Česky
Italiano
简体中文

Contents

介绍

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

安装 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的配置文件/etc/X11/xorg.conf,让xorg知道你的显卡,显示器,鼠标键盘.

但对于新版的xorg(7.2以上)不是必须的了。

利用xorg的自动配置功能

对于X.org 7.2(X11R.72)以上的版本,是可以不用用户自己手动配置的,它会使用内建的配置文件自动检测,会生成一个临时的配置文件(?不知道存在什么地方)。这种办法不是万能的,如果你的显卡是主流的显卡,比如nv,可以在安装了显卡驱动后尝试直接安装并启动桌面。目前来说,它生成的配置文件是不保存的,一旦你退出图形环境,再进入时它又会重复自动配置的过程。

所以这是我们目前不推荐的方法。

手动生成Xorg的配置文件/etc/X11/xorg.conf

不过我们还是推荐你自己生成,下面有几种方法。

方法一:hwd

或许简单快捷配置好Xorg的方法就是使用hwd,一个由Arch linux社区用户所写的工具。它主要是一个硬件探测工具,当然还有其他功能。其中一项就是设置X server,幸运的是,hwd 比xorgconf 更加简明,根本不需要任何输入。

Note: 注意:hwd目前已经升级并能工作于xorg-server-1.5。 目前,它会禁用基于HAL的输入设备的热插拔功能,取而代之的是产生一个包含输入设备的传统xorg.conf文件。

首先,你需要安装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.fglrx
/etc/X11/xorg.conf.vesa

有了范例文件,把它们之一重命名为'xorg.conf'(逐个测试,看看那个文件比较接近你的配置),例如:

# mv xorg.conf.hwd xorg.conf

注意,以我的经验hwd生成的XF86Config-4文件,如果当前没有xorg.conf的话,Xorg就会自动使用它。

方法二:xorgconfig

运行 xorgconfig:

xorgconfig

会生成一个新的 xorg.conf.

回答一些问题之后,它会为您生成文件。 这个程序不是很好,但至少是个开始,你可以在这之后手动修改。

方法三:Xorg -configure

你也可以使用

# Xorg -configure

或者

# X -configure

nvidia-xconfig

nVidia 用户也可以使用

nvidia-xconfig

用户要安装 nvidia 官方驱动installed.

在Module段注释掉这行

 Load           "type1"

这是因为新版本的xorg-server已经不含type1字体模块了(已被freetype完全替代)。

编辑 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

字体

Xorg Font Configuration X字体配置有设置字体的贴士.

Xorg.conf 文件样例

如果谁有可以运行的xorg.conf文件, 可以提供一个链接让其他人也能看到! 请不要贴上整个文件; 上传到其他地方并建立一个链接,谢谢!

测试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

在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

模块化Xorg的变化

通用包

请确认你已经安装了键盘、鼠标、显卡的驱动。鼠标和键盘驱动分别为xf86-input-keyboardxf86-input-mouse 。其它类似 xf86-input-* 的包是其它输入设备的驱动。

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

要一次安装所有驱动, 可以用 xorg-input-driversxorg-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中加入另一个模块路径<code/>ModulePath "/usr/X11R6/lib/modules"</code> 这种方法对Nvidia 76.76有效。

故障和修复

Xorg无法找到你的显示器支持哪些分辨率

我遇到一种情况,在我使用一台显示器(gnr ts902)时Xorg只提供了640x480和320x480选项,显然这不是我想要的。将

Load "dpms"

加到xorg.conf的"Module" Section使我可以将LCD设置为(1280x1024为最佳模式)1024x768等分辨率。如果我早点发现这点的话,就用不着花好几天功夫尝试其他人的类似(和不类似)的解决方法...

键盘问题

自动生成的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"

快速修复 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中的路径

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

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

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

鼠标滚轮不工作

在Xorg 7中"Auto"协议似乎无法正常工作。找到InputDevice节中与鼠标相关的设置,然后进行更改:

Option         "Protocol" "auto"

改成

Option         "Protocol" "IMPS/2"

或者

Option         "Protocol" "ExplorerPS/2"

额外的鼠标按键不工作

使用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鼠标也可以像以前一样正常工作了。


缺少库文件

  • 求助!运行程序时显示“libXxxxxx不存在"的错误!

在多数情况下,根据提示的库名称安装相应的库即可:

pacman -S libXxxx

无法创建某些包,提示"缺少X11头文件"

安装xproto和libx11两个包即可(如果两个包已经存在,就覆盖安装)。

无法加载'(null)'字体

  • 一些程序无法运行,提示无法加载`(null)'字体.

这些软件包可能需要一些额外的字体。某些程序只能使用位图字体。 目前有两种主要的位图字体包:xorg-fonts-75-dpi、xorg-fonts-100dpi。选择其中一个就可以了。通过下面这个命令查看显示设置:

xdpyinfo | grep resolution

根据显示信息选择合适dpi的字体即可(用75 或 100 代替XX):

pacman -S xorg-fonts-XXdpi

KDE任务栏和桌面图标出错

  • KDE任务栏无法工作,并且桌面图标也消失了

安装libxcomposite 和libxss两个软件包就可以了:

pacman -S libxcomposite libxss

从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

这应该可以解决问题

不同桌面环境下MIME的类型问题

如果你发现在桌面环境中图标消失,并且无法点击打开文件,在/etc/profile或者某个初始化脚本中加入下面的语句:

XDG_DATA_DIRS=$XDG_DATA_DIRS:/usr/share
export XDG_DATA_DIRS

重启机器即可。

Matrox显卡的DRI功能失效

如果你使用的是Matrox显卡,在升级到Xorg7后它的DRI功能失效,试着在xorg.conf的显卡设备设置段中加入下面一行:

Option "OldDmaInit" "On"

Xephyr下无法启动任何客户端

客户端连接被X server的安全机制拒绝,你可以在you can find a complete explanation and solution in [1]这里找到完整的解释和解决方法。

无法用"su"以root身份启动X客户端

如果你遇到"Client is not authorized to connect to server",尝试将以下内容

 session        optional        pam_xauth.so

加入到/etc/pam.d/su文件中。 pam_xauth就可以正常设置环境变量以及处理xauth密钥了。

相关链接

更多相关内容可以查看以下wiki链接:

或者外部链接:

Personal tools