Xorg

来自站长百科
跳转至: 导航、​ 搜索

Xorg 是X11 图基窥镜系统的一个开源实现。 一般地,如果你想在Arch上使用图形交互界面,需要用到xorg(也可以是wayland——但还不成熟).

安装 Xorg[ ]

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

  1. 确保 pacman 已经配置和更新.
  2. 记录下第三方驱动 (如 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-keyboardxf86-input-mouse 。其它类似 xf86-input-* 的包是其它输入设备的驱动。

对于显卡,在xf86-video-*中查找符合的驱动然后安装即可;ATI和Nvidia显卡需要安装非自由驱动(。安装完毕后需要在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中加入另一个模块路径

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冲突的错误信息,可以通过以下步骤来修复:

  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

相关条目[ ]

参考来源[ ]

https://wiki.archlinux.org/index.php/Xorg_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)