跳转至内容

Xorg

来自 ArchWiki
(重定向自 Headless With X)

X.Org Server — 通常简称为 X — 是 X.Org FoundationX Window System (X11) 显示服务器的实现,它是 Linux 用户中最流行的显示服务器。它的普及性使其成为 GUI 应用程序的必备组件,并被大多数发行版广泛采用。

有关替代方案和后续方案,请参阅 Wayland

安装

Xorg 可以通过 xorg-server安装

此外,xorg-apps 组中的一些包对于某些配置任务是必需的。它们将在相关章节中指出。

最后,还有一个 xorg 组,其中包含 Xorg 服务器包、xorg-apps 组的包以及字体。

驱动程序

请参阅 显卡#安装 来识别您的硬件并选择相应的驱动程序。

特定硬件的 设备相关 X (DDX) 驱动程序被认为是过时的:在 xorg-server 中有一个通用的 modesetting(4) DDX 驱动程序,它使用 内核模式设置,并且在现代硬件上运行良好。modesetting DDX 驱动程序使用 Glamor[1] 进行 2D 加速,这需要 OpenGL

如果您想安装其他 DDX 驱动程序,请注意 Xorg 会自动搜索已安装的 DDX 驱动程序

  • 如果它找不到为硬件安装的特定驱动程序(列在 显卡#安装 中),它会首先搜索 fbdevxf86-video-fbdev),它不包含任何 2D 或 3D 加速。
  • 如果找不到,它会搜索 vesaxf86-video-vesa),这是通用驱动程序,它支持大量芯片组,但不包含任何 2D 或 3D 加速。
  • 如果找不到 vesa,Xorg 将回退到 modesetting(4) DDX 驱动程序。

运行

Xorg(1) 命令通常不直接运行。相反,X 服务器是通过 显示管理器xinit 启动的。

提示 您通常会尝试安装 窗口管理器桌面环境 来配合 X 使用。

配置

注意 Arch 在 /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

提示 如果您已经在运行 X 服务器,请使用其他显示,例如 Xorg :2 -configure

或者,您的专有显卡驱动程序可能附带一个自动配置 Xorg 的工具:有关详细信息,请参阅您的视频驱动程序的文章,例如 NVIDIA

注意 配置文件关键字不区分大小写,并且会忽略 "_" 字符。大多数字符串(包括选项名称)也不区分大小写,并且对空格和 "_" 字符不敏感。

输入设备

对于输入设备,X 服务器默认使用 libinput 驱动程序(xf86-input-libinput),但 xf86-input-evdev 和相关驱动程序作为替代选项可用。[2]

Udev,它作为 systemd 的依赖项提供,将检测硬件,并且这两个驱动程序将作为几乎所有设备的即插即用输入驱动程序,如 /usr/share/X11/xorg.conf.d/ 目录中的默认配置文件 10-quirks.conf40-libinput.conf 中所定义。

启动 X 服务器后,日志文件将显示为单个设备热插拔了哪个驱动程序(请注意,最新的日志文件名可能会有所不同)

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

如果两者都不支持特定设备,请从 xorg-drivers 组安装所需的驱动程序。如果您想使用其他驱动程序,也是如此。

要影响热插拔,请参阅 #配置

有关具体说明,请参阅 libinput 文章,以下页面,或 Fedora:Input device configuration 获取更多示例。

输入识别

请参阅 键盘输入#在 Xorg 中识别键码

鼠标加速

请参阅 鼠标加速

额外鼠标按钮

请参阅 鼠标按钮

触控板

请参阅 libinputSynaptics

触摸屏

请参阅 触摸屏

键盘设置

请参阅 Xorg 键盘配置

显示器设置

手动配置

  • 较新版本的 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

多显示器

有关一般信息,请参阅主文章 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:01:0:0

显示尺寸和 DPI

默认情况下,自 2009-01-30 以来,Xorg 始终将 DPI 设置为 96。版本 21.1 进行了更改,以提供正确的 DPI 自动检测,但 已撤销

可以使用 -dpi 命令行选项设置 X 服务器的 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
注意 如果您使用的是专有 NVIDIA 驱动程序,您可能需要在 DeviceScreen 部分添加 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
注意 此计算适用于像素为方形的显示器;但是,极少数显示器可能会压缩纵横比(例如将 16:10 的分辨率显示在 16:9 的显示器上)。如果是这种情况,您应该手动测量屏幕尺寸。

手动设置 DPI

注意 虽然您可以设置任何您喜欢的 DPI,并且使用 Qt 和 GTK 的应用程序会相应缩放,但建议将其设置为 **96**(100%,无缩放)、**120**(增加 25%)、**144**(增加 50%)、**168**(增加 75%)、**192**(增加 100%)等,以减少使用位图的 GUI 的缩放伪影。低于 96 DPI 的设置可能不会减小 GUI 图形元素的大小,因为图标通常最适合 96 DPI。

对于符合 RandR 标准的驱动程序(例如开源 ATI 驱动程序),您可以将其设置为:

$ xrandr --dpi 144
注意 符合此设置的应用程序不会立即更改。您需要重新启动它们。

要使其永久生效,请参阅 自动启动#Xorg 启动时

专有 NVIDIA 驱动

您可以通过在 DeviceScreen 部分添加以下选项来手动设置 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 为特定值的方法。其中包括 KDETDE

显示器电源管理

DPMS 是一项技术,允许在计算机不使用时实现显示器的节能行为。这将允许您的显示器在预设时间段后自动进入待机状态。

合成器

X 的 Composite 扩展会使整个窗口层次结构子树渲染到屏幕外缓冲区。然后应用程序可以获取该缓冲区的​​内容并进行任何它们想要的操作。屏幕外缓冲区可以自动合并到父窗口中,或者由称为合成管理器的外部程序合并。有关更多信息,请参阅 Wikipedia:Compositing window manager

一些窗口管理器(例如 CompizEnlightenmentKWinmarcometacitymuffinmutterXfwm)会自行进行合成。对于其他窗口管理器,可以使用独立的合成管理器。

合成管理器列表

  • Picom — 轻量级合成器,支持阴影、高级模糊和淡入淡出。Compton 的分支。
https://github.com/yshui/picom || picom
  • Xcompmgr — 合成窗口效果管理器。
https://gitlab.freedesktop.org/xorg/app/xcompmgr/ || xcompmgr
  • fastcompmgr — 一个轻量级的 X11 合成器,专注于速度。
https://github.com/tycho-kirchner/fastcompmgr || fastcompmgr-gitAUR
  • Gamescope — Valve 的微合成器,具有游戏相关的功能,如 FSR 缩放。steamos-compositor 的分支。
https://github.com/ValveSoftware/gamescope || gamescope
  • steamos-compositor-plus — Valve 的合成器,包含一些额外的调整和修复。
https://github.com/chimeraos/steamos-compositor-plus || steamos-compositor-plusAUR

技巧与提示

自动化

本节列出了用于自动化键盘/鼠标输入和窗口操作(如移动、调整大小或提升)的实用程序。

工具 软件包 (Package) 手动 按键符号
输入
窗口
操作
xautomation xautomation xte(1) 还包含屏幕抓取工具。无法模拟 F13 及更高键。
xdo xdo xdo(1) 用于执行基本窗口操作的小型 X 实用程序。
xdotool xdotool xdotool(1) 非常容易出错且未积极开发,例如:有损坏的 CLI 解析。[3][4]
xvkbd xvkbdAUR xvkbd(1) Xorg 的虚拟键盘,还具有用于发送字符的 -text 选项。
AutoKey autokey-qtAUR autokey-gtkAUR 文档 更高级、强大的宏和脚本实用程序,同时拥有 Qt 和 Gtk 前端。

另请参阅 剪贴板#工具X 自动化工具概述

嵌套 X 会话

本文或本章节已过时。

原因:也许可以先介绍 Xephyr(在 Talk:Xorg 中讨论)

运行另一个桌面环境的嵌套会话

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

这将在当前 X 会话中以 1024x768 的窗口启动一个 Window Maker 会话。

这需要安装 xorg-server-xnest 包。

进行嵌套 X 会话的更现代方法是使用 Xephyr

启动不带窗口管理器的应用程序

请参阅 xinit#启动不带窗口管理器的应用程序

远程启动 GUI 程序

请参阅主文章:OpenSSH#X11 转发

按需禁用和启用输入源

借助 xinput,您可以暂时禁用或启用输入源。这可能很有用,例如,在有多个鼠标的系统上,比如 ThinkPads,而您更愿意只使用一个以避免不必要的鼠标点击。

安装 xorg-xinput 包。

查找要禁用的设备的名称或 ID

$ xinput

例如,在联想 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 或名称。在此示例中,我们将禁用 ID 为 10 的 Synaptics 触摸板:

$ 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 是输入驱动程序的名称,例如 libinputdevice_name 是实际用于匹配正确设备的名称。有关定位正确设备的替代方法,例如 libinputMatchIsTouchscreen,请查阅您的输入驱动程序的文档。虽然此示例使用 libinput,但这是一个与驱动程序无关的方法,它仅阻止设备传播到驱动程序。

使用热键杀死应用程序

在热键上运行脚本

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

依赖项:xorg-xpropxdotool

另请参阅 #以视觉方式杀死应用程序

阻止 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/键盘配置#使用 Ctrl+Alt+Backspace 终止 Xorg

以视觉方式杀死应用程序

当应用程序行为异常或卡顿时,无需从终端使用 killkillall 并查找进程 ID 或名称,xorg-xkill 允许您单击该应用程序以关闭其与 X 服务器的连接。许多现有应用程序确实会在与 X 服务器的连接关闭时中止,但有些可以选择继续运行。

无根 Xorg

Xorg 可以以标准用户权限运行,而不是 root 权限(所谓的“无根”Xorg)。与以 root 身份运行相比,这是一个重大的安全改进。请注意,一些流行的 显示管理器 不支持无根 Xorg(例如 LightDMXDM)。

您可以使用 ps -o user= -C Xorg 命令验证 Xorg 是以哪个用户运行的。

另请参阅 Xorg.wrap(1)systemd-logind(8)Systemd/User#Xorg 作为 systemd 用户服务Fedora:Changes/XorgWithoutRootRightsFS#41257

使用 xinitrc

使用 xinitrc 配置无根 Xorg:

  • 将 startx 作为登录 shell 的子进程运行;直接运行 startx,不要使用 exec startx
  • 确保 Xorg 使用已设置了权限的虚拟终端,即通过 .xserverrc 中的 logind 传递的 $XDG_VTNR
  • 如果使用某些专有的显示驱动程序,内核模式设置自动检测将会失败。在这种情况下,您必须在/etc/X11/Xwrapper.config中设置needs_root_rights = no

请注意,直接执行startx而不使用exec 会在xorg崩溃时使shell保持打开状态。由于某些锁屏程序在xorg内执行,这可能导致对正在执行的用户完全访问。

使用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。请参阅[5]

以root用户运行Xorg

如上所述,在某些情况下,无根Xorg是默认设置。如果您的配置是这种情况,并且您需要以root用户运行Xorg,您可以配置Xorg.wrap(1)以要求root权限。

警告 以root用户运行Xorg存在安全隐患。有关进一步讨论,请参阅#无根Xorg
/etc/X11/Xwrapper.config
needs_root_rights = yes

Wayback

Wayback是一个X11兼容层,它允许使用Wayland组件运行完整的X11桌面环境(和窗口管理器)。它可以在AUR中作为wayback-x11AUR软件包获取。

故障排除

常规

如果出现问题,请查看存储在/var/log/或(自v1.16起,对于无根X的默认位置)~/.local/share/xorg/中的日志。 GDM用户应检查systemd journal[6]

日志文件的格式为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(1)的输出通过管道传输到ts(1)(由moreutils软件包提供)。这只会为命令运行时添加到日志的行提供正确的时间戳。例如:
$ 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
  • 如果您在使用键盘、鼠标、触摸板等设备时遇到问题,请查看输入设备类别中的特定页面。
  • AMDGPUIntelNVIDIA的文章中搜索常见问题。

所有用户或部分用户屏幕变黑、未指定协议、资源暂时不可用

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

Matrox显卡的DRI停止工作

如果您使用的是Matrox显卡,并且在升级到Xorg后DRI停止工作,请尝试在xorg.conf中引用显卡的Device段中添加以下行:

Option "OldDmaInit" "On"

xorg.conf文件中引用显卡的Device部分。

帧缓冲模式问题

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)’”

错误消息:无法加载字体“ (null)”

某些程序只能使用位图字体。有两个主要的位图字体软件包可用:xorg-fonts-75dpixorg-fonts-100dpi。您不需要同时安装两者;其中一个应该就足够了。要找出哪一个更适合您的情况,请尝试使用来自xorg-xdpyinfoxdpyinfo命令,如下所示:

$ xdpyinfo | grep resolution

并使用与显示值最接近的那个。

恢复:在GUI登录前禁用Xorg

如果Xorg设置为自动启动,并且由于某种原因您需要阻止它在登录/显示管理器出现之前启动(例如,如果系统配置错误,Xorg无法识别您的鼠标或键盘输入),您可以通过两种方法完成此任务。

  • 将默认目标更改为rescue.target。请参阅systemd#更改默认启动目标
  • 如果您不仅有一个导致Xorg无法使用的故障系统,而且还将GRUB菜单等待时间设置为零,或者无法通过其他方式使用GRUB阻止Xorg启动,那么您可以使用Arch Linux Live CD。遵循安装指南中关于如何挂载和chroot到已安装的Arch Linux的说明。或者,尝试切换到另一个tty(按Ctrl+Alt + 功能键,通常是F1F7,取决于哪个未被X使用),以root用户登录,然后按照下面的步骤操作。

根据您的设置,您需要执行以下一个或多个步骤:

使用“su”启动的X客户端失败

如果您收到客户端未被授权连接到服务器的错误,请尝试将以下行添加到

session        optional        pam_xauth.so

/etc/pam.d/su/etc/pam.d/su-lpam_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),则可能会发生这种情况。

该错误意味着只有当前用户可以访问X服务器。解决方案是授予root用户访问权限:

$ xhost +si:localuser:root

该行也可以用于将X访问权限授予除root以外的另一个用户。

参见