# Xorg (简体中文)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

相关文章

- Autostarting
- 显示管理器
- 窗口管理器
- 字体配置
- 光标主题
- 桌面环境
- Wayland
- xinit
- xrandr

翻译状态：本文是 Xorg 的翻译。上次翻译日期：2021-6-11。如果英文版本有所更改，则您可以帮助同步翻译。

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

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

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

## 安装

安装 软件包 xorg-server。

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

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

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

### 驱动安装

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

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

    $ lspci | grep -e VGA -e 3D

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

    $ pacman -Ss xf86-video

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

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

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

厂商 | 类型 | 驱动 | OpenGL | OpenGL (multilib) | 文档
--- | --- | --- | --- | --- | ---
AMD / ATI | Open source | xf86-video-amdgpu | mesa | lib32-mesa | AMDGPU
xf86-video-ati | ATI
Intel | Open source | xf86-video-intel | mesa | lib32-mesa | Intel graphics
NVIDIA | Open source | xf86-video-nouveau | mesa | lib32-mesa | Nouveau
Proprietary | nvidia | nvidia-utils | lib32-nvidia-utils | NVIDIA
nvidia-390xxAUR | nvidia-390xx-utilsAUR | lib32-nvidia-390xx-utilsAUR

注意：

- 对于同时使用集成显卡和独立显卡的 NVIDIA Optimus 笔记本，请参考 NVIDIA Optimus。
- 对于第四代及更新的 Intel 显卡，阅读英特尔显卡#安装来获取可用驱动。

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

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

### AMD

GPU 架构 | Radeon 显卡 | 开源驱动 | 非开源驱动
--- | --- | --- | ---
GCN 4 及之后 | 多种 | AMDGPU | AMDGPU PRO
GCN 3 | AMDGPU | AMDGPU PRO
GCN 2* | AMDGPU* / ATI | 不支持
GCN 1* | AMDGPU* / ATI | 不支持
TeraScale 2&3 | HD 5000 - HD 6000 | ATI | 不支持
TeraScale 1 | HD 2000 - HD 4000 | 不支持
旧型号 | X1000及之前 | 不支持

  *: AMDGPU 实验支持

## 运行

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

## 配置

注意： 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 的工具，详情请参考 NVIDIA 或 AMDGPU 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。

### 输入映射

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

### 鼠标加速

鼠标加速。

### 扩展鼠标按键

鼠标按键。

### 触摸板

参考 Libinput (简体中文) 或 Touchpad_Synaptics。

### 触摸屏

触摸屏。

### 键盘设置

参考 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

### 多个显示器

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

参见GPU的具体说明:

- NVIDIA (简体中文)#多台显示器
- Nouveau (简体中文)#双输出
- ATI#Multihead setup

#### 多于一个显卡

你必须指定正确的驱动，输入你的显卡的 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:0 和 1:0:0。

### 显示大小和 DPI

The factual accuracy of this article or section is disputed.

Reason: Xorg总是将DPI设置为96。 相关参阅 Freedesktop Bugzilla:1, Freedesktop Bugzilla:2 和 相关日志. (Discuss in Talk:Xorg (简体中文)#)

通过以下方式确定 X 服务器的DPI:

1. `-dpi` 命令行选项具有最高优先级。
2. 如果不使用 `-dpi` 命令行选项, 则 X 配置文件的 `DisplaySize` 设置会用于推导当前屏幕分辨率的 DPI
3. 如果 X 配置文件中不存在 `DisplaySize` 设置，在指定分辨率的情况下将从显示器的 DDC (数据显示通道) 获取尺寸值用于推导 DPI
4. 如果 DDC (数据显示通道) 不指定大小, 默认使用 75 DPI。

为了获得正确的 DPI (每英寸点数) 设置，必须识别或设置显示尺寸。在需要精细细节（如字体渲染）的情况下，拥有正确的DPI尤其必要。此前，制造商试图为96 DPI（10.3英寸对角线显示器为800x600，13.2英寸显示器为1024x768）创建一个标准。如今，屏幕 DPI 各不相同，在水平和垂直方向上可能不相等。例如，1440x900的19英寸宽屏LCD的DPI可能为89x87。为了能够设置 DPI，Xorg 服务器尝试通过带有 DDC (显示数据频道) 的图形卡自动检测你的显示器的屏幕物理尺寸，当 Xorg 服务器知道屏幕的物理尺寸时，它将能够根据分辨率大小设置正确的DPI。

要查看您的显示大小和 DPI 是否检测/计算正确：

    $ xdpyinfo | grep -B2 resolution

如果Xorg服务器不能正确计算屏幕尺寸，它将默认为75x75的DPI。

如果你有关于显示器的物理尺寸的规格，可以在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"` 放在 `Device` 或 `Screen` 部分下才能生效。

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

用勾股定理（毕达哥拉斯定理）计算一个对角线长度为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驱动程序

您可以通过在`Device`或`Screen`部分下添加选项来手动设置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到一个特定值的方法。 其中包括 KDE 和 TDE。

### DPMS

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

## 合成

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

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

### 合成管理器列举

- Picom — 合成器（Compton 的一个分支）

  https://github.com/yshui/picom || picom

- Xcompmgr — 复合窗口效果管理器

  https://cgit.freedesktop.org/xorg/app/xcompmgr/ || xcompmgr

- Unagi — 致力于用C语言编写，基于 XCB 的模块化合成管理器

  https://projects.mini-dweeb.org/projects/unagi || unagiAUR

## 技巧和技巧

### 自动化

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

工具 | 软件包 | 手册 | keyboard input | 窗口操作 | 注
--- | --- | --- | --- | --- | ---
xautomation | xautomation | xte(1) | 是 | 否 | 也包含 screen scraping tools。无法模拟 F13+.
xdo | xdo | xdo(1) | 否 | 是 | 用于执行基本窗口操作的轻量级X实用工具
xdotool | xdotool | xdotool(1) | 是 | 是 | 充满 Bug 且开发不活跃，比如说CLI解析错误。[2][3]
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。

### 远程启动 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

### 使用热建结束应用程序

在热键上运行脚本：

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

依赖：xorg-xprop，xdotool

### 阻止 TTY 访问

This article or section needs expansion.

Reason: 为什么需要这么做呢？ (Discuss in Talk:Xorg (简体中文)#)

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

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

### 防止用户结束 X

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

    Section "ServerFlags"
        Option "DontZap"      "True"
    EndSection

### 没有 root 权限的 Xorg

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

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

也可参考Xorg.wrap(1), systemd-logind(8), Systemd/User#Xorg as a systemd user service, [4] 和 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。参阅[5]。

## 故障和修复

### 一般问题

如果你在使用Xorg中遇到问题，请查看位于 `/var/log/` 的日志，或者对于从 v1.16 起的没有 `root` 权限的 Xorg，日志文件位于 `~/.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

- 在日志文件中寻找以 `(EE)` 开头的行，它代表错误，以及 `(WW)`，代表警告（也可能暗示着其他问题）。
- 如果在你的`$HOME`目录下有一个空的 `.xinitrc` 文件，删除或修改它以使 X 正确启动。如果你不这样做，X 会显示黑屏并不会在 `Xorg.0.log` 中输出任何错误。简单地删除它就可以使 X 以默认配置运行。
- 如果你遇到黑屏，你仍可以尝试切换到不同的虚拟控制台 （例如 `Ctrl+Alt+F6`），然后不假思索地以 root 登录。你可以通过输入 `root` （然后按下 `Enter` ） 然后输入密码（同样地，输入后按下 `Enter` ）。

  你也可以尝试是偶那个以下命令杀死 X server：

      # pkill -x X

  如果不行的话，直接重启：

      # reboot

- 如果你有关于键盘，鼠标，触摸板等等的问题，参考 Category:Input devices 中具体的文章。
- 最后，在ATI, Intel和NVIDIA等文章中搜索常见问题。

### 黑屏，没有指定协议..，资源暂时不可用等问题

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-75dpi、xorg-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 早启动。

## 另请参阅

- Xplain - In-depth explanation of the X Window System
- Xorg(1) - Xorg's Manual Page
- Gentoo/Xorg#Configuration - Gentoo Wiki's Xorg Configuration page

Category:

- X server (简体中文)

Hidden categories:

- Pages or sections flagged with Template:Accuracy
- Pages or sections flagged with Template:Expansion