Xorg

出自 Arch Linux 中文维基

摘自 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 早啟動

另請參閱[編輯 | 編輯原始碼]