Xorg

来自 Arch Linux 中文维基
(重定向自X

摘自 https://www.x.org/wiki/:

X.Org 项目提供了 X 窗口系统的开源实现。开发工作是在 freedesktop.org 社区的通力合作下完成。X.Org 组织是非盈利教育机构,其董事会为这项工作服务,其成员领导这项工作。

Xorg(通常简称为 X)在 Linux 用户中非常流行,已经成为图形用户程序的必备条件,所以大部分发行版都提供了它。详情参见 Xorg 维基百科条目或访问 Xorg 网站

有关替代和潜在继任者,参见 Wayland

安装[编辑 | 编辑源代码]

安装软件包 xorg-server

此外,xorg-apps包组 组提供了一些程序以完成某些特定的配置工作。

软件包组 xorg包组 包含了 Xorg server,xorg-apps包组 中的软件包以及字体.

驱动安装[编辑 | 编辑源代码]

Linux 内核包含了开源的视频驱动,支持硬件加速。OpenGL 和 X11 的 2D 加速需要用户空间工具。

执行如下命令查询显卡类型:

$ lspci | grep -e VGA -e 3D

安装对应的驱动,输入下面命令,查看所有开源驱动:

$ pacman -Ss xf86-video

Xorg 会自动搜索已安装的驱动:

  • 如果无法找到设备在下表中列出的驱动,会首先检查是否安装了不支持 2D 和 3D 加速的 fbdev (xf86-video-fbdev).
  • 如果依然没有找到,会搜索 vesa (xf86-video-vesa),这是一个支持大部分显卡的通用驱动,不提供任何 2D 和 3D 加速功能。
  • 如果没有找到 vesa,Xorg 会回退到 KMS,KMS驱动中包含了 GLAMOR 加速 (参考 modesetting(4)).

要充分发挥显卡性能,请按下表安装驱动程序。推荐先使用开源驱动,这些驱动出问题的可能性较小。

厂商 类型 文档 驱动 OpenGL OpenGL (multilib) Vulkan Vulkan(multilib)
AMD / ATI Open source AMDGPU xf86-video-amdgpu mesa lib32-mesa vulkan-radeonamdvlk4 lib32-vulkan-radeonlib32-amdvlk4
ATI xf86-video-ati mesa lib32-mesa None
Proprietary AMDGPU PRO xf86-video-amdgpu amdgpu-pro-oglpAUR lib32-amdgpu-pro-oglpAUR vulkan-amdgpu-proAUR lib32-vulkan-amdgpu-proAUR
Intel Open source Intel graphics xf86-video-intel2 mesamesa-amber3 lib32-mesa vulkan-intel lib32-vulkan-intel
NVIDIA Open source Nouveau1 xf86-video-nouveau mesa lib32-mesa vulkan-nouveau lib32-vulkan-nouveau
Proprietary NVIDIA1 nvidianvidia-open5 nvidia-utils lib32-nvidia-utils nvidia-utils lib32-nvidia-utils
nvidia-470xx-dkmsAUR nvidia-470xx-utilsAUR lib32-nvidia-470xx-utilsAUR nvidia-470xx-utilsAUR lib32-nvidia-470xx-utilsAUR
nvidia-390xx-dkmsAUR nvidia-390xx-utilsAUR lib32-nvidia-390xx-utilsAUR nvidia-390xx-utilsAUR lib32-nvidia-390xx-utilsAUR
  1. 对于同时使用集成显卡和独立显卡的 NVIDIA Optimus 笔记本,请参考 NVIDIA Optimus
  2. 对于第四代及更新的 Intel 显卡,阅读 Intel graphics#Installation 来获取可用驱动。
  3. 针对老硬件的经典 OpenGL (非 Gallium3D) 驱动(Mesa 22.0 及更高版本不再支持 i915 经典驱动)。
  4. 相比amdvlk / lib32-amdvlk更推荐vulkan-radeon / lib32-vulkan-radeon (参阅AMDGPU#安装)。
  5. 有关nvidianvidia-open之间的区别,请参阅NVIDIA#Installation


其它驱动也都位于 xorg-drivers包组 软件包组中。

没有闭源驱动,Xorg 也应正常工作。闭源驱动的典型用途是某些高级图形功能例如为游戏提供 3D 渲染加速。某些例外是某些最新的 GPU(尤其是 NVIDIA 的 GPU),它们不受开源驱动支持。

AMD[编辑 | 编辑源代码]

GPU 架构 开源驱动 非开源驱动
RDNA 及之后 AMDGPU AMDGPU PRO
GCN 3 及之后
GCN 1和2 AMDGPU1 / ATI 不支持
TeraScale 及之前 ATI 不支持
  1. AMD GPU 实验支持

运行[编辑 | 编辑源代码]

Xorg(1)命令通常不直接运行。而是使用显示管理器或者xinit来启动 X server。


提示:用户通常需要选择安装窗口管理器桌面环境以配合使用 X。

配置[编辑 | 编辑源代码]

注意: Arch 提供了位于 /usr/share/X11/xorg.conf.d 的默认配置文件。通常情况下,用户无需进行额外的配置与修改即可正常使用。

Xorg 使用名为 xorg.conf 的配置文件和后缀为 .conf 的文件作为它的初始设置。这些文件的位置的完整列表可以在xorg.conf(5)中找到,其中还附有全部可用选项的详尽解释。

使用 .conf 文件[编辑 | 编辑源代码]

/etc/X11/xorg.conf.d/ 目录保存主机特有设置,你可以创建自己的配置文件,需要以 XX- 开头(两个数字和一个连接符)并以 .conf 结尾。X 服务器启动时会解析这些文件,将其视为 xorg.conf 的一部分进行处理。如果配置之间有冲突,将会使用最后被处理的文件。所以通用的设置应该放到前面。最后会解析 xorg.conf 文件。

有关配置选项请参考 Fedora wiki

使用 xorg.conf[编辑 | 编辑源代码]

可以通过 /etc/X11/xorg.conf/etc/xorg.conf 配置 Xorg,用下面命令可以生成 xorg.conf 模板:

# Xorg :0 -configure

执行后会在 /root/ 生成 xorg.conf.new 文件,然后你可以将它复制到 /etc/X11/xorg.conf

提示:如果已经运行了 X 服务器,请使用不同的 display,例如 Xorg :2 -configure

或者,显卡的专有驱动可能也提供了自动配置 Xorg 的工具,详情请参考 NVIDIAAMDGPU PRO

注意: 配置文件关键字是大小写敏感的,"_" 字符会被忽略。配置,包括选项名也是大小写敏感的,会自动忽略空白和 "_"。

输入设备[编辑 | 编辑源代码]

X 服务器默认使用 libinput 驱动(xf86-input-libinput) 处理输入设备,xf86-input-evdev 和相关驱动是后备方案[1]

Udev,作为 systemd 的依赖项被提供,将会检测硬件。这两个驱动程序将作为几乎所有设备的热插拔输入驱动,它们的行为定义在位于 /usr/share/X11/xorg.conf.d/ 的默认配置文件 10-quirks.conf and 40-libinput.conf 中。

在启动 X server 后,日志文件将会为每个设备显示发生了什么热插拔(注意最近的日志名称可能有所不同):

$ grep -e "Using input driver " Xorg.0.log

如果两个驱动都不支持您的设备, 请从 xorg-drivers包组 组安装需要的驱动程序。如果你想要使用其他驱动,也可以这样做。

想要干预热插拔,请参考 #配置

更详细的信息,请参考 libinput 文后的链接和 Fedora wiki

输入映射[编辑 | 编辑源代码]

参考键盘按键#映射按键码

鼠标加速[编辑 | 编辑源代码]

鼠标加速

扩展鼠标按键[编辑 | 编辑源代码]

鼠标按键

触摸板[编辑 | 编辑源代码]

参考 LibinputTouchpad_Synaptics

触摸屏[编辑 | 编辑源代码]

触摸屏

键盘设置[编辑 | 编辑源代码]

参考 Xorg/键盘设置英语Xorg/Keyboard_configuration

显示器设置[编辑 | 编辑源代码]

开始[编辑 | 编辑源代码]

注意:
  • 新的 Xorg 版本会自动配置显示器,无需额外配置。
  • 如果 Xorg 无法检测到任何显示器,或者没有自动配置,则可使用配置文件。一个常见的情况是使用无头系统时,系统在没有显示器的情况下启动并自动运行了 Xorg,要么是在登录 时从 虚拟控制台,或者是从一个显示管理器

无头配置需要 xf86-video-dummy 驱动; 安装然后创建一个配置文件,例如:

/etc/X11/xorg.conf.d/10-headless.conf
Section "Monitor"
        Identifier "dummy_monitor"
        HorizSync 28.0-80.0
        VertRefresh 48.0-75.0
        Modeline "1920x1080" 172.80 1920 2040 2248 2576 1080 1081 1084 1118
EndSection

Section "Device"
        Identifier "dummy_card"
        VideoRam 256000
        Driver "dummy"
EndSection

Section "Screen"
        Identifier "dummy_screen"
        Device "dummy_card"
        Monitor "dummy_monitor"
        SubSection "Display"
        EndSubSection
EndSection

多个显示器[编辑 | 编辑源代码]

参考主要文章多头了解通用信息。

多于一个显卡[编辑 | 编辑源代码]

你必须指定正确的驱动,输入你的显卡的 bus ID(以十进制表示)。

Section "Device"
    Identifier             "Screen0"
    Driver                 "intel"
    BusID                  "PCI:0:2:0"
EndSection

Section "Device"
    Identifier             "Screen1"
    Driver                 "nouveau"
    BusID                  "PCI:1:0:0"
EndSection

为了获取 BusID (十六进制):

$ lspci | grep -e VGA -e 3D
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 630 (rev 04)
01:00.0 3D controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Mobile] (rev a1)

这个示例的BusID是 0:2:01:0:0

显示大小和 DPI[编辑 | 编辑源代码]

Xorg 默认会将 DPI 设置为 96([2]).版本 21.1 时有一个自动侦测的修改,但是被回退了FS#72661.

通过 -dpi 命令行选项可以设置 X 服务器的DPI。

在需要精细细节(如字体渲染)的情况下,拥有正确的DPI尤其必要。此前,制造商试图为96 DPI(10.3英寸对角线显示器为800x600,13.2英寸显示器为1024x768)创建一个标准。如今,屏幕 DPI 各不相同,在水平和垂直方向上可能不相等。例如,1440x900的19英寸宽屏LCD的DPI可能为89x87。

要查看您的显示大小和 DPI 是否正确:

$ xdpyinfo | grep -B2 resolution

如果明确知道显示器的物理尺寸规格,可以在Xorg配置文件中设置,这样就可以计算出合适的DPI。

Section "Monitor"
    Identifier             "Monitor0"
    DisplaySize             286 179    # 单位:毫米
EndSection

如果你只想设置显示器的物理尺寸的规格,不用从头到尾创建新的完整 xorg.conf 配置文件的话,可以在 /etc/X11/xorg.conf.d/90-monitor.conf 中设置屏幕的规格:

Section "Monitor"
    Identifier             "<default monitor>"
    DisplaySize            286 179    # In millimeters
EndSection
注意: 如果你使用的是专有 NVIDIA 驱动程序,你可能需要把 Option "UseEdidDpi" "FALSE" 放在 DeviceScreen 部分下才能生效。

如果你没有屏幕的物理宽度和高度的规格(现在大多数规格只按对角线尺寸列出)的话,可以使用显示器的原始分辨率(或长宽比)和对角线长度来计算水平和垂直的物理尺寸。

勾股定理(毕达哥拉斯定理)计算一个对角线长度为13.3英寸、原始分辨率为1280x800(或长宽比为16:10)的屏幕:

$ echo 'scale=5;sqrt(1280^2+800^2)' | bc  # 1509.43698

这将给出像素的对角线长度,有了这个值,你就可以获得水平和垂直的物理长度(并将其转换成毫米):

$ echo 'scale=5;(13.3/1509)*1280*25.4' | bc  # 286.43072
$ echo 'scale=5;(13.3/1509)*800*25.4'  | bc  # 179.01920
注意: 这种计算适用于正方形的显示器。然而,很少有显示器可以压缩纵横比(例如16:10的纵横比分辨率为16:9的显示器)。如果是这种情况,您应该手动测量屏幕大小。

手动设置DPI[编辑 | 编辑源代码]

注意: 虽然你可以设置任何你喜欢的DPI,并且使用Qt和GTK的应用程序将相应地进行缩放,但还是建议将其设置为96、120(高出25%)、144(高出50%)、168(高出75%)、192(高出100%)等,以减少使用位图的GUI的缩放瑕疵。把它降低到96 dpi以下可能不会减少GUI的图形元素的大小,因为通常图标的最低dpi是96。

对于兼容RandR的驱动程序(比如开源的ATI驱动程序),你可以通过以下方式设置。

$ xrandr --dpi 144
注意: 更改并不会即时生效,你需要重新启动它们。

参阅 Autostarting#Xorg 使其永久化保存.

专有的NVIDIA驱动程序[编辑 | 编辑源代码]

您可以通过在DeviceScreen部分下添加选项来手动设置DPI:

Option              "DPI" "96 x 96"
手动DPI设置的注意事项[编辑 | 编辑源代码]

GTK 经常通过可选的 Xresource Xft.dpi 覆盖X服务器的DPI。 可以通过这个来检查当前的DPI:

$ xrdb -query | grep dpi

对于 3.16 版本之后的 GTK 库,当此变量未明确设置时,GTK 会将其设置为 96。要让 GTK 应用程序遵守X服务器 DPI设置,你可能需要将 Xft.dpi 显式设置为与服务器相同的值。 Xresource Xft.dpi是一些桌面环境在个人设置中强制设置DPI到一个特定值的方法。 其中包括 KDETDE

DPMS[编辑 | 编辑源代码]

DPMS (显示器电源管理信号) 是一种技术,可以在计算机不使用时,可以使用显示器的省电行为. 这将允许您的显示器在预定时间段后自动进入待机。

合成[编辑 | 编辑源代码]

X 的合成扩展使窗口层次结构的整个子树呈现到屏幕外的缓冲区。应用程序可以获取缓冲区的内容并执行它们喜欢的任何操作。屏幕外的缓冲区可以自动合并到父窗口中,也可以被称为合成管理器的外部程序合并。要了解更多信息,参考compositing window manager

某些窗口管理器(例如 Compiz, Enlightenment, KWin, Marco, Metacity, Muffin, Mutter, Xfwm)自己完成这些合成。对于其他窗口管理器,可以使用一个独立的合成管理器。

合成管理器列举[编辑 | 编辑源代码]

  • Picom — 支持阴影、高级模糊和渐变的轻量级合成管理器。
https://github.com/yshui/picom || picom
  • Xcompmgr — 复合窗口效果管理器
https://gitlab.freedesktop.org/xorg/app/xcompmgr/ || xcompmgr
  • Gamescope — The micro-compositor from Valve, with gaming-oriented features such as FSR upscaling. Forked from steamos-compositor.
https://github.com/ValveSoftware/gamescope || gamescope
  • steamos-compositor-plus — Valve's compositor, with some added tweaks and fixes.
https://github.com/chimeraos/steamos-compositor-plus || steamos-compositor-plusAUR

技巧和技巧[编辑 | 编辑源代码]

自动化[编辑 | 编辑源代码]

这一节列出用于键盘、鼠标输入和窗口操作自动化的实用程序(例如移动、调整大小和层级)。

工具 软件包 手册 keyboard input 窗口操作
xautomation xautomation xte(1) 也包含 screen scraping tools。无法模拟 F13+.
xdo xdo xdo(1) 用于执行基本窗口操作的轻量级X实用工具
xdotool xdotool xdotool(1) 充满 Bug 且开发不活跃,比如说CLI解析错误。[3][4]
xvkbd xvkbdAUR xvkbd(1) 面向 Xorg 的虚拟键盘,在发送字母时也有 -text 选项。
AutoKey autokey-qtAUR autokey-gtkAUR 文档 强大的宏和脚本工具,有Qt和Gtk两种前端。

也可以参考 Clipboard#Tools and an overview of X automation tools.

嵌套 X 会话[编辑 | 编辑源代码]

在嵌套的 X 的会话中启动其他桌面环境:

$ /usr/bin/Xnest :1 -geometry 1024x768+0+0 -ac -name Windowmaker & wmaker -display :1

这会在你当前的 X 会话中启动一个1024 × 768大小的 Window Maker 会话。

需要安装xorg-server-xnest

Xephyr 是一个更新的方法。

远程启动 GUI 程序[编辑 | 编辑源代码]

查看主条目:X11转发

按需禁用和启用输入源[编辑 | 编辑源代码]

利用xinput你可以您可以暂时禁用或启用输入源。这可能很有用,例如,在具有多个鼠标的系统上(如ThinkPad),可以只使用一个鼠标以避免不必要的点击。

official repositories安装 xorg-xinput

找到要禁用的设备的ID:

$ xinput

例如在Lenovo ThinkPad T500中,输出如下所示:

$ xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     id=11   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=10   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=9    [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                    id=12   [slave  keyboard (3)]

使用xinput --disable device_id禁用设备,device_id是你要禁用的设备的ID。在此示例中,我们将禁用ID为10的Synaptics触摸板:

$ xinput --disable 10

要重新启用该设备,只需发出相反的命令:

$ xinput --enable 10

Persistently disable input source[编辑 | 编辑源代码]

You can disable a particular input source using a configuration snippet:

/etc/X11/xorg.conf.d/30-disable-device.conf
Section "InputClass"
       Identifier   "disable-device"
       Driver       "driver_name"
       MatchProduct "device_name"
       Option       "Ignore" "True"
EndSection

device is an arbitrary name, and driver_name is the name of the input driver, e.g. libinput. device_name is what is actually used to match the proper device. For alternate methods of targeting the correct device, such as libinput's MatchIsTouchscreen, consult your input driver's documentation. Though this example uses libinput, this is a driver-agnostic method which simply prevents the device from being propagated to the driver.

使用热键结束应用程序[编辑 | 编辑源代码]

在热键上运行脚本:

#!/bin/sh
windowFocus=$(xdotool getwindowfocus);
pid=$(xprop -id "$windowFocus" | grep PID);
kill -9 "$pid"

依赖:xorg-xpropxdotool

阻止 TTY 访问[编辑 | 编辑源代码]

这篇文章的某些内容需要扩充。

原因: 为什么需要这么做呢? (在 Talk:Xorg 中讨论)

要在X中阻止tty访问,请将以下内容添加到xorg.conf

Section "ServerFlags"
    Option "DontVTSwitch" "True"
EndSection

防止用户结束 X[编辑 | 编辑源代码]

要防止用户在运行时被结束,请将以下内容添加到xorg.conf

Section "ServerFlags"
    Option "DontZap"      "True"
EndSection
注意: The Ctrl+Alt+Backspace shortcut is not directly what triggers killing the X server, but the Terminate_Server action from the keyboard map. This is usually not set by default, see Xorg/Keyboard configuration#Terminating Xorg with Ctrl+Alt+Backspace.

Killing an application visually[编辑 | 编辑源代码]

When an application is misbehaving or stuck, instead of using kill or killall from a terminal and having to find the process ID or name, xorg-xkill allows to click on said application to close its connection to the X server. Many existing applications do indeed abort when their connection to the X server is closed, but some can choose to continue.

没有 root 权限的 Xorg[编辑 | 编辑源代码]

Xorg 可以使用标准用户权限而不是 root 来运行(所谓的“rootless” Xorg)。这对于用 root 权限运行是很大的安全性提升。注意大多数显示管理器都不支持 rootless Xorg。

你可以用 ps -o user $(pgrep Xorg) 来验证 Xorg 在以什么用户的身份运行。

也可参考Xorg.wrap(1), systemd-logind(8), Systemd/用户#Xorg_as_a_systemd_user_service, [5]FS#41257

使用 xinitrc[编辑 | 编辑源代码]

要配置“rootless”的Xorg xinitrc:

  • 将startx作为当前登录shell的子进程运行;直接运行{ic | startx}},不要使用{ic | exec startx}}
  • 确保 Xorg 使用已设置权限的虚拟终端,即通过 logind 通过 .xserverrc$XDG_VTNR 中传递。
  • 如果使用某些专有的驱动程序, kernel mode setting 自动检测将失效. 在这种情况下, 必须在 /etc/X11/Xwrapper.config 中设置needs_root_rights = no

使用 GDM[编辑 | 编辑源代码]

在使用kernel mode setting时,Xorg将在没有root权限的情况下运行GDM

重定向Xorg会话日志[编辑 | 编辑源代码]

当Xorg在没有root权限的情况下运行时,Xorg的日志将保存到~/.local/share/xorg/Xorg.log。但是,Xorg会话的stdout和stderr的输出并不会重定向到此日志文件,要重新启动重定向,请使用命令行选项-keeptty来启动Xorg,并将stdout和stderr输出重定向到一个文件:

startx -- -keeptty >~/.xorg.log 2>&1

或者,将/etc/X11/xinit/xserverrc复到~/.xserverrc并使用命令行选项-keeptty来启动Xorg。参阅[6]

Xorg as Root[编辑 | 编辑源代码]

As explained above, there are circumstances in which rootless Xorg is defaulted to. If this is the case for your configuration, and you have a need to run Xorg as root, you can configure Xorg.wrap(1) to require root:

警告: Running Xorg as root poses security issues. See #Rootless Xorg for further discussion.
/etc/X11/Xwrapper.config
needs_root_rights = yes

故障和修复[编辑 | 编辑源代码]

一般问题[编辑 | 编辑源代码]

如果你在使用Xorg中遇到问题,请查看位于 /var/log/ 的日志,或者对于从 v1.16 起的没有 root 权限的 Xorg,日志文件位于 ~/.local/share/xorg/GDM 用户应当检查 systemd journal. [7]

日志文件的格式为 Xorg.n.log, 其中 n 表示显示器编号。对于单用户、使用默认配置文件的机器,日志文件常常是 Xorg.0.log,其它情形可能会有区别。 想要找到正确的文件,可以考虑检查 X 服务器会话启动的时间戳以及它是从哪个控制台启动的。例如:

$ grep -e Log -e tty Xorg.0.log
[    40.623] (==) Log file: "/home/archuser/.local/share/xorg/Xorg.0.log", Time: Thu Aug 28 12:36:44 2014
[    40.704] (--) controlling tty is VT number 1, auto-enabling KeepTty
  • 在日志文件中寻找以 (EE) 开头的行,它代表错误,以及 (WW),代表警告(也可能暗示着其他问题)。
  • 如果在你的$HOME目录下有一个空的 .xinitrc 文件,删除或修改它以使 X 正确启动。如果你不这样做,X 会显示黑屏并不会在 Xorg.0.log 中输出任何错误。简单地删除它就可以使 X 以默认配置运行。
  • 如果你遇到黑屏,你仍可以尝试切换到不同的虚拟控制台 (例如 Ctrl+Alt+F6),然后不假思索地以 root 登录。你可以通过输入 root (然后按下 Enter ) 然后输入密码(同样地,输入后按下 Enter )。
你也可以尝试使用以下命令杀死 X server:
# pkill -x X
如果不行的话,直接重启:
# reboot

黑屏,没有指定协议..,资源暂时不可用等问题[编辑 | 编辑源代码]

X在当前用户的主目录中创建配置和临时文件。确保主目录所在的分区上有可用的可用磁盘空间。然而,在这种情况下,X服务器不提供有关磁盘空间不足的更明显信息。

Matrox显卡的DRI功能失效[编辑 | 编辑源代码]

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

Option "OldDmaInit" "On"

无法运行在frambuffer模式下[编辑 | 编辑源代码]

如果X启动失败,日志中有以下信息:

 (WW) Falling back to old probe method for fbdev
 (II) Loading sub module "fbdevhw"
 (II) LoadModule: "fbdevhw"
 (II) Loading /usr/lib/xorg/modules/linux//libfbdevhw.so
 (II) Module fbdevhw: vendor="X.Org Foundation"
        compiled for 1.6.1, module version = 0.0.2
        ABI class: X.Org Video Driver, version 5.0
 (II) FBDEV(1): using default device
  
 Fatal server error:
 Cannot run in framebuffer mode. Please specify busIDs        for all framebuffer devices

只需要卸载xf86-video-fbdev就可以了。

无法加载'(null)'字体[编辑 | 编辑源代码]

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

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

$ xdpyinfo | grep resolution

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

# pacman -S xorg-fonts-XXdpi

修复:在出现GUI登录界面之前,不启动Xorg[编辑 | 编辑源代码]

如果Xorg设置为自动启动并且出于某些原因你不想让它出现在 登录/显示 管理器之前,有两种办法:

  • 将启动目标修改为 rescue.target. 参阅 systemd#Change default target to boot into.
  • 如果 X 无法启动,而且 GRUB 超时时间设置成了 0,无法进 Grub 禁止 Xorg boot. 可以使用 Arch CD 启动,然后挂载配置文件所在分区,
可以以root用户使用命令
# fdisk -l
来查看你的全部分区。通常你所要的那个是形如 /dev/sda1 这样的东东。然后,使用命令
# mount /dev/sda1 /mnt

挂载该分区至 /mnt。 这样你的文件系统就挂载在了 /mnt 下。例如,可以删除 gdm 来阻止Xorg正常启动,或者做其他一些必需的改动。

无法用"su"以root身份启动X客户端[编辑 | 编辑源代码]

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

 session        optional        pam_xauth.so

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

X 启动失败:键盘初始化失败[编辑 | 编辑源代码]

遇到“X failed to start : Keyboard initialization failed”。 如果您的硬盘已满,startx将失败。 /var/log/Xorg.0.log 的末尾会是:

(EE) Error compiling keymap (server-0)
(EE) XKB: Couldn't compile keymap
(EE) XKB: Failed to load keymap. Loading default keymap instead.
(EE) Error compiling keymap (server-0)
(EE) XKB: Couldn't compile keymap
XKB: Failed to compile keymap
Keyboard initialization failed. This could be a missing or incorrect setup of xkeyboard-config.
Fatal server error:
Failed to activate core devices.
Please consult the The X.Org Foundation support  at https://wiki.x.org
for help.
Please also check the log file at "/var/log/Xorg.0.log" for additional information.
 (II) AIGLX: Suspending AIGLX clients for VT switch

在/分区上腾出一些可用空间,X才能启动。

想看视频时屏幕总是绿色[编辑 | 编辑源代码]

你的颜色深度设置错误。例如它可能需要设置为24位却被设置成了16位。

SocketCreateListener error[编辑 | 编辑源代码]

如果 X 结束,伴随着错误信息 "SocketCreateListener() failed",你可能需要删除位于 /tmp/.X11-unix 的 socket 文件。这有可能在你先前以 root 身份运行 Xorg (例如想要生成 xorg.conf)后发生。

想要以 root 权限运行程序时出现 无效的 MIT-MAGIC-COOKIE-1 密钥[编辑 | 编辑源代码]

这个错误意味着只有当前用户有权访问 X server。解决办法是将访问权授予 root:

$ xhost +si:localuser:root

这条命令也可以将 X server 访问权授予其他用户。

Xorg-server 致命错误: (EE) AddScreen/ScreenInit[编辑 | 编辑源代码]

如果 Xorg 偶发故障并且在 Xorg 日志中看到:

systemd-logind: failed to take device /dev/dri/card0: Operation not permitted
...
AddScreen/ScreenInit failed for driver 0

那么,这个问题可能由 systemd issue 13943引起。设置 KMS 早启动

另请参阅[编辑 | 编辑源代码]