Xorg
X.Org Server — 通常简称为 X — 是 X.Org 基金会 对 X 窗口系统 (X11) 显示服务器的实现,并且是 Linux 用户中最流行的显示服务器。它的普及使其成为 GUI 应用程序的必备条件,从而在大多数发行版中得到大规模采用。
有关替代品和后继者,请参阅 Wayland。
安装
Xorg 可以通过 xorg-server 软件包安装。
此外,xorg-apps 组中的某些软件包对于某些配置任务是必要的。 它们在相关章节中指出。
最后,xorg 组也可用,其中包括 Xorg 服务器软件包、xorg-apps 组中的软件包和字体。
驱动程序安装
Linux 内核包含开源视频驱动程序和对硬件加速帧缓冲区的支持。 但是,OpenGL 和 X11 中的 2D 加速需要用户空间支持。
首先,识别显卡(Subsystem 输出显示具体型号)
$ lspci -v -nn -d ::03xx
然后,安装合适的驱动程序。 您可以在软件包数据库中搜索开源视频驱动程序的完整列表
$ pacman -Ss xf86-video
Xorg 会自动搜索已安装的驱动程序
- 如果它找不到为硬件安装的特定驱动程序(如下所列),它首先搜索 fbdev (xf86-video-fbdev),它不包含任何 2D 或 3D 加速。
- 如果找不到 fbdev,它会搜索 vesa (xf86-video-vesa),这是一种通用驱动程序,可处理大量芯片组,但不包含任何 2D 或 3D 加速。
- 如果找不到 vesa,Xorg 将回退到内核模式设置,其中包括 GLAMOR 加速(参见 modesetting(4))。
为了使视频加速工作,并且通常为了公开 GPU 可以设置的所有模式,需要正确的视频驱动程序
品牌 | 类型 | 文档 | 驱动程序 | OpenGL | OpenGL (multilib) | Vulkan | Vulkan (multilib) |
---|---|---|---|---|---|---|---|
AMD (前 ATI) | 开源 | AMDGPU | xf86-video-amdgpu | mesa | lib32-mesa | vulkan-radeon / amdvlk4 | lib32-vulkan-radeon / lib32-amdvlk4 |
ATI | xf86-video-ati | 无 | |||||
专有 | AMDGPU PRO | xf86-video-amdgpu | amdgpu-pro-oglpAUR | lib32-amdgpu-pro-oglpAUR | vulkan-amdgpu-proAUR | lib32-vulkan-amdgpu-proAUR | |
Intel | 开源 | Intel 集成显卡 | xf86-video-intel2 | mesa 或 mesa-amber3 | lib32-mesa | vulkan-intel | lib32-vulkan-intel |
NVIDIA | 开源 | Nouveau1 | xf86-video-nouveau | mesa | lib32-mesa | vulkan-nouveau | lib32-vulkan-nouveau |
专有 | NVIDIA1 | nvidia 或 nvidia-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 |
- 对于使用集成显卡和独立 GPU 的 NVIDIA Optimus 笔记本电脑,请参阅 NVIDIA Optimus。
- 对于 4 代及以上 Intel 集成显卡,请参阅 Intel graphics#Installation 以获取可用的驱动程序。
- 适用于旧硬件的经典 OpenGL (非 Gallium3D) 驱动程序(Mesa 22.0 及更高版本已删除对 i915 经典驱动程序的支持)
- vulkan-radeon / lib32-vulkan-radeon 建议优于 amdvlk / lib32-amdvlk (参见 AMDGPU#Installation)。
- 有关 nvidia 和 nvidia-open 之间的区别,请参阅 NVIDIA#Installation。
其他视频驱动程序可以在 xorg-drivers 组中找到。
Xorg 应该可以在没有闭源驱动程序的情况下顺利运行,闭源驱动程序通常仅在高级功能(例如游戏的快速 3D 加速渲染)中才需要。 此规则的例外是开源驱动程序不支持的最新 GPU(尤其是 NVIDIA GPU)。
AMD
有关型号名称(例如 Radeon RX 6800)到 GPU 架构(例如 RDNA 2)的翻译,请参阅 Wikipedia:List of AMD graphics processing units#Features overview。
GPU 架构 | 开源驱动程序 | 专有驱动程序 |
---|---|---|
RDNA 及更高版本 | AMDGPU | AMDGPU PRO |
GCN 3 及更高版本 | ||
GCN 1&2 | AMDGPU1 / ATI | 不可用 |
TeraScale 及更旧版本 |
ATI | 不可用 |
- 实验性。
运行
Xorg(1) 命令通常不直接运行。 相反,X 服务器通过显示管理器或 xinit 启动。
配置
/usr/share/X11/xorg.conf.d/
中提供默认配置文件,对于大多数设置,不需要额外的配置。Xorg 使用名为 xorg.conf
的配置文件和以后缀 .conf
结尾的文件进行初始设置:可以在 xorg.conf(5) 中找到搜索这些文件的文件夹的完整列表,以及所有可用选项的详细说明。
使用 .conf 文件
/etc/X11/xorg.conf.d/
目录存储特定于主机的配置。 你可以自由地在那里添加配置文件,但它们必须具有 .conf
后缀:文件按 ASCII 顺序读取,按照惯例,它们的名称以 XX-
开头(两位数字和一个连字符,例如 10 在 20 之前读取)。 这些文件在启动时由 X 服务器解析,并被视为传统 xorg.conf
配置文件的一部分。 请注意,对于冲突的配置,最后读取的文件将被处理。 因此,最通用的配置文件应按名称首先排序。 xorg.conf
文件中的配置条目在最后处理。
有关要设置的选项示例,请参阅 Fedora:Input device configuration#xorg.conf.d。
使用 xorg.conf
Xorg 也可以通过 /etc/X11/xorg.conf
或 /etc/xorg.conf
进行配置。 你还可以使用以下命令为 xorg.conf
生成骨架
# Xorg :0 -configure
这应该在 /root/
中创建一个 xorg.conf.new
文件,你可以将其复制到 /etc/X11/xorg.conf
。
Xorg :2 -configure
。或者,你的专有显卡驱动程序可能带有自动配置 Xorg 的工具:有关更多详细信息,请参阅你的视频驱动程序的文章,NVIDIA 或 AMDGPU PRO。
输入设备
对于输入设备,X 服务器默认为 libinput 驱动程序 (xf86-input-libinput),但 xf86-input-evdev 和相关驱动程序可用作替代方案。[1]
Udev (作为 systemd 依赖项提供) 将检测硬件,并且这两个驱动程序都将充当几乎所有设备的热插拔输入驱动程序,如 /usr/share/X11/xorg.conf.d/
目录中的默认配置文件 10-quirks.conf
和 40-libinput.conf
中所定义的那样。
启动 X 服务器后,日志文件将显示哪个驱动程序热插拔了各个设备(请注意,最新的日志文件名可能会有所不同)
$ grep -e "Using input driver " Xorg.0.log
如果两者都不支持特定设备,请从 xorg-drivers 组安装所需的驱动程序。 如果你想使用另一个驱动程序,也适用。
要影响热插拔,请参阅#配置。
有关具体说明,另请参阅 libinput 文章、以下页面或 Fedora:Input device configuration 以获取更多示例。
输入识别
请参阅 Keyboard input#Identifying keycodes in Xorg。
鼠标加速度
请参阅 鼠标加速度。
额外的鼠标按键
请参阅 鼠标按键。
触摸板
触摸屏
请参阅 触摸屏。
键盘设置
请参阅 Keyboard configuration in 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
多显示器
有关一般信息,请参阅主文章Multihead。
多于一块显卡
你必须定义要使用的正确驱动程序,并放入显卡的总线 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
要获取你的总线 ID(十六进制)
$ lspci -d ::03xx
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)
这里的总线 ID 是 0:2:0
和 1:0:0
。
显示尺寸和 DPI
默认情况下,自 2009-01-30 起,Xorg 始终将 DPI 设置为 96。 版本 21.1 进行了更改以提供正确的 DPI 自动检测,但已还原。
X 服务器的 DPI 可以使用 -dpi
命令行选项设置。
在需要精细细节(如字体渲染)的情况下,正确的 DPI 很有用。 以前,制造商尝试创建 96 DPI 的标准(10.3 英寸对角线显示器为 800x600,13.2 英寸显示器为 1024x768)。 如今,屏幕 DPI 各不相同,并且水平和垂直方向可能不相等。 例如,19 英寸宽屏 LCD 在 1440x900 下的 DPI 可能为 89x87。
要查看你的显示尺寸和 DPI 是否正确
$ xdpyinfo | grep -B2 resolution
检查尺寸是否与你的显示器尺寸匹配。
如果你有关于屏幕物理尺寸的规格,则可以将其输入到 Xorg 配置文件中,以便计算出正确的 DPI(调整标识符以匹配你的 xrandr 输出)
Section "Monitor" Identifier "DVI-D-0" DisplaySize 286 179 # In millimeters EndSection
如果你只想输入显示器的规格,而无需创建完整的 xorg.conf,请创建一个新的配置文件。 例如 (/etc/X11/xorg.conf.d/90-monitor.conf
)
Section "Monitor" Identifier "<default monitor>" DisplaySize 286 179 # In millimeters EndSection
Device
或 Screen
部分下添加 Option "UseEdidDpi" "FALSE"
以使其生效。如果你没有物理屏幕宽度和高度的规格(如今大多数规格仅按对角线尺寸列出),你可以使用显示器的原始分辨率(或纵横比)和对角线长度来计算水平和垂直物理尺寸。 在 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
手动设置 DPI
对于符合 RandR 的驱动程序(例如开源 ATI 驱动程序),你可以通过以下方式设置它
$ xrandr --dpi 144
要使其永久生效,请参阅 Autostarting#On Xorg startup。
专有 NVIDIA 驱动程序
你可以通过在 Device
或 Screen
部分下添加选项来手动设置 DPI
Option "DPI" "96 x 96"
手动 DPI 设置的注意事项
GTK 经常通过可选的 X 资源 Xft.dpi
覆盖服务器的 DPI。 要了解这是否发生在你身上,请使用以下命令检查
$ xrdb -query | grep dpi
对于 3.16 以来的 GTK 库版本,当未以其他方式显式设置此变量时,GTK 会将其设置为 96。 要使 GTK 应用程序遵守服务器 DPI,你可能需要显式地将 Xft.dpi
设置为与服务器相同的值。 Xft.dpi
资源是某些桌面环境在个人设置中选择强制 DPI 为特定值的方法。 其中包括 KDE 和 TDE。
显示电源管理
DPMS 是一种允许显示器在计算机未使用时进行节能行为的技术。 这将允许你的显示器在预定义的时间段后自动进入待机状态。
合成
X 的 Composite 扩展导致窗口层次结构的整个子树被渲染到屏幕外缓冲区。 然后,应用程序可以获取该缓冲区的内容并执行他们喜欢的任何操作。 屏幕外缓冲区可以自动合并到父窗口中,也可以由称为合成管理器的外部程序合并。 有关更多信息,请参阅 Wikipedia:Compositing window manager。
一些窗口管理器(例如 Compiz、Enlightenment、KWin、Marco、Metacity、Muffin、Mutter、Xfwm)自行进行合成。 对于其他窗口管理器,可以使用独立的合成管理器。
合成管理器列表
- Picom — 轻量级合成器,具有阴影、高级模糊和淡入淡出效果。 从 Compton 分支而来。
- Xcompmgr — 合成窗口效果管理器。
- Gamescope — 来自 Valve 的微合成器,具有面向游戏的功能,例如 FSR 放大。 从 steamos-compositor 分支而来。
- steamos-compositor-plus — Valve 的合成器,带有一些添加的调整和修复。
技巧与提示
自动化
本节列出了用于自动化键盘/鼠标输入和窗口操作(如移动、调整大小或提升)的实用程序。
工具 | 软件包 | 手册 | Keysym 输入 |
窗口 操作 |
注意 |
---|---|---|---|---|---|
xautomation | xautomation | xte(1) | 是 | 否 | 还包含屏幕抓取工具。 无法模拟 F13 及更多。 |
xdo | xdo | xdo(1) | 否 | 是 | 用于对窗口执行基本操作的小型 X 实用程序。 |
xdotool | xdotool | xdotool(1) | 是 | 是 | 错误很多 且未积极开发,例如:具有损坏的 CLI 解析。[2][3] |
xvkbd | xvkbdAUR | xvkbd(1) | 是 | 否 | Xorg 的虚拟键盘,还具有用于发送字符的 -text 选项。 |
AutoKey | autokey-qtAUR autokey-gtkAUR | 文档 | 是 | 是 | 更高级别、功能强大的宏和脚本实用程序,具有 Qt 和 Gtk 前端。 |
另请参阅 Clipboard#Tools 和 X 自动化工具概述。
嵌套 X 会话
要运行另一个桌面环境的嵌套会话
$ /usr/bin/Xnest :1 -geometry 1024x768+0+0 -ac -name Windowmaker & wmaker -display :1
这将在你当前的 X 会话中的 1024x768 窗口中启动 Window Maker 会话。
这需要安装软件包 xorg-server-xnest。
一种更现代的进行嵌套 X 会话的方式是使用 Xephyr。
在没有窗口管理器的情况下启动应用程序
请参阅 xinit#Starting applications without a window manager。
远程启动 GUI 程序
请参阅主文章:OpenSSH#X11 forwarding。
按需禁用和启用输入源
借助 xinput,你可以临时禁用或启用输入源。 例如,这在具有多个鼠标的系统(例如 ThinkPad)上可能很有用,你宁愿只使用一个鼠标来避免不必要的鼠标点击。
安装 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
禁用设备,其中 device 是你要禁用的设备的设备 ID 或名称。 在此示例中,我们将禁用 Synaptics 触摸板,ID 为 10
$ xinput --disable 10
要重新启用设备,只需发出相反的命令
$ xinput --enable 10
或者使用设备名称,禁用触摸板的命令将是
$ xinput --disable "SynPS/2 Synaptics TouchPad"
永久禁用输入源
你可以使用配置片段禁用特定的输入源
/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
是任意名称,driver_name
是输入驱动程序的名称,例如 libinput
。 device_name
实际上用于匹配正确的设备。 有关定位正确设备的替代方法(例如 libinput 的 MatchIsTouchscreen
),请查阅你的输入驱动程序的文档。 尽管此示例使用 libinput,但这是一种与驱动程序无关的方法,它只是阻止设备传播到驱动程序。
使用热键杀死应用程序
在热键上运行脚本
#!/bin/sh windowFocus=$(xdotool getwindowfocus) pid=$(xprop -id "$windowFocus" | grep PID) kill -9 "$pid"
依赖项:xorg-xprop, xdotool
另请参阅#可视化地杀死应用程序。
阻止 TTY 访问
要在 X 中时阻止 tty 访问,请将以下内容添加到 xorg.conf
Section "ServerFlags" Option "DontVTSwitch" "True" EndSection
这可以用于帮助限制对非信任用户可访问的系统上的命令行访问。
阻止用户杀死 X
要防止用户在 X 运行时杀死 X,请将以下内容添加到 xorg.conf
Section "ServerFlags" Option "DontZap" "True" EndSection
Ctrl+Alt+Backspace
快捷键并非直接触发杀死 X 服务器的原因,而是键盘映射中的 Terminate_Server
操作。 这通常不是默认设置,请参阅 Xorg/Keyboard configuration#Terminating Xorg with Ctrl+Alt+Backspace。可视化地结束应用程序
当应用程序行为异常或卡住时,与其从终端使用 kill
或 killall
并需要查找进程 ID 或名称,xorg-xkill 允许您点击该应用程序以关闭其与 X 服务器的连接。许多现有应用程序确实会在与 X 服务器的连接关闭时中止,但有些应用程序可以选择继续运行。
无根 Xorg
Xorg 可以使用标准用户权限而不是 root 权限运行(所谓的“无根”Xorg)。与以 root 身份运行相比,这是一个显著的安全改进。请注意,一些流行的 显示管理器 不支持无根 Xorg(例如 LightDM 或 XDM)。
您可以使用 ps -o user= -C Xorg
验证 Xorg 正在哪个用户下运行。
另请参阅 Xorg.wrap(1)、systemd-logind(8)、Systemd/User#将 Xorg 作为 systemd 用户服务、Fedora:Changes/XorgWithoutRootRights 和 FS#41257。
使用 xinitrc
要使用 xinitrc 配置无根 Xorg
- 将 startx 作为登录 shell 的子进程运行;直接运行
startx
,不要使用exec startx
。 - 确保 Xorg 使用虚拟终端,该虚拟终端的权限已设置,即由 logind 在
$XDG_VTNR
中通过 .xserverrc 传递。 - 如果使用某些专有显示驱动程序,内核模式设置 自动检测 将会失败。在这种情况下,您必须在
/etc/X11/Xwrapper.config
中设置needs_root_rights = no
。
使用 GDM
当使用 内核模式设置 时,GDM 默认将以无 root 权限运行 Xorg。
会话日志重定向
当 Xorg 在无根模式下运行时,Xorg 日志将保存到 ~/.local/share/xorg/Xorg.log
。但是,来自 Xorg 会话的标准输出和标准错误输出不会重定向到此日志。要重新启用重定向,请使用 -keeptty
标志启动 Xorg,并将标准输出和标准错误输出重定向到文件
startx -- -keeptty >~/.xorg.log 2>&1
或者,将 /etc/X11/xinit/xserverrc
复制到 ~/.xserverrc
,并附加 -keeptty
。参见 [4]。
以 Root 身份运行 Xorg
如上所述,在某些情况下,默认会使用无根 Xorg。如果您的配置是这种情况,并且您需要以 root 身份运行 Xorg,您可以配置 Xorg.wrap(1) 以要求 root 权限
/etc/X11/Xwrapper.config
needs_root_rights = yes
故障排除
通用
如果出现问题,请查看存储在 /var/log/
或 ~/.local/share/xorg/
中的日志(对于 v1.16 以来的无根 X 默认设置)。GDM 用户应检查 systemd 日志。 [5]
日志文件的格式为 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
$ tail -f ~/.local/share/xorg/Xorg.0.log | ts
- 然后在日志文件中查找以
(EE)
开头的行,这些行表示错误,以及(WW)
,这些是可能表明其他问题的警告。 - 如果您的
$HOME
中存在空的.xinitrc
文件,请删除或编辑它,以便 X 正常启动。如果您不这样做,X 将显示一个空白屏幕,并且在您的Xorg.0.log
中似乎没有任何错误。只需删除它即可使其以默认的 X 环境运行。 - 如果屏幕变黑,您仍然可以尝试切换到不同的虚拟控制台(例如
Ctrl+Alt+F6
),并盲输 root 用户名登录。您可以通过键入root
(键入后按Enter
键)并输入 root 密码(同样,键入后按Enter
键)来执行此操作。
- 您也可以尝试使用以下命令结束 X 服务器:
# pkill -x X
- 如果这不起作用,请使用以下命令盲重启:
# reboot
- 如果您在键盘、鼠标、触摸板等方面遇到问题,请查看 Category:输入设备 中的特定页面。
- 在 AMDGPU、Intel 和 NVIDIA 文章中搜索常见问题。
X 在当前用户的主目录中创建配置文件和临时文件。请确保您的主目录所在的分区上有可用的磁盘空间。不幸的是,在这种情况下,X 服务器没有提供关于磁盘空间不足的更明显的信息。
Matrox 显卡的 DRI 停止工作
如果您使用 Matrox 显卡并且在升级到 Xorg 后 DRI 停止工作,请尝试在 xorg.conf
中引用显卡的 Device
部分添加以下行:
Option "OldDmaInit" "On"
到 Device
部分,该部分引用 xorg.conf
中的显卡。
帧缓冲模式问题
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 软件包。
程序请求 "font '(null)'"
错误消息:unable to load font `(null)'
。
一些程序仅适用于位图字体。有两个主要的包含位图字体的软件包可用,xorg-fonts-75dpi 和 xorg-fonts-100dpi。您不需要两者都安装;一个应该就足够了。要找出哪一个更适合您的情况,请尝试使用 xorg-xdpyinfo 中的 xdpyinfo
,如下所示:
$ xdpyinfo | grep resolution
并使用更接近显示的值的字体。
恢复:在 GUI 登录之前禁用 Xorg
如果 Xorg 设置为自动启动,并且由于某种原因您需要在登录/显示管理器出现之前阻止它启动(如果系统配置错误并且 Xorg 无法识别您的鼠标或键盘输入,例如),您可以使用两种方法完成此任务。
- 将默认目标更改为
rescue.target
。请参阅 systemd#更改默认目标以启动进入。 - 如果您不仅有一个导致 Xorg 无法使用的故障系统,而且您还将 GRUB 菜单等待时间设置为零,或者无法以其他方式使用 GRUB 来阻止 Xorg 启动,则可以使用 Arch Linux live CD。按照 安装指南 中关于如何挂载和 chroot 进入已安装的 Arch Linux 的说明进行操作。或者,尝试使用
Ctrl+Alt
+ 功能键(通常从F1
到F7
,具体取决于哪个未被 X 使用)切换到另一个 tty,以 root 身份登录并按照以下步骤操作。
根据设置,您将需要执行以下一个或多个步骤:
使用 "su" 启动的 X 客户端失败
如果您收到 Client is not authorized to connect to server
错误,请尝试将以下行添加到
session optional pam_xauth.so
/etc/pam.d/su
和 /etc/pam.d/su-l
。然后 pam_xauth
将正确设置环境变量并处理 xauth
密钥。
X 启动失败:键盘初始化失败
如果文件系统(特别是 /tmp
)已满,则 startx
将失败。日志文件将包含:
(EE) Error compiling keymap (server-0) (EE) XKB: Could not compile keymap (EE) XKB: Failed to load keymap. Loading default keymap instead. (EE) Error compiling keymap (server-0) (EE) XKB: Could not 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. ...
在相关文件系统上释放一些空间,X 将启动。
尝试观看视频时出现绿屏
您的颜色深度设置错误。例如,可能需要设置为 24 而不是 16。
SocketCreateListener 错误
如果 X 以错误消息 SocketCreateListener() failed
终止,您可能需要删除 /tmp/.X11-unix
中的套接字文件。如果您之前以 root 身份运行过 Xorg(例如,生成 xorg.conf
),则可能会发生这种情况。
尝试以 root 身份运行程序时出现 Invalid MIT-MAGIC-COOKIE-1 key 错误
该错误意味着只有当前用户有权访问 X 服务器。解决方案是授予 root 访问权限:
$ xhost +si:localuser:root
该行也可用于向 root 以外的其他用户授予对 X 的访问权限。
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 启动。
另请参阅
- Xplain - X Window 系统的深入解释
- Xorg(1)
- 准备 LPIC-1 考试 2 - 主题 106.1:X11 - 简要介绍了架构、#配置、桌面环境、远程使用、Wayland。
- xorg.conf(5)
- Gentoo:Xorg/Guide#Configuration