Xorg
- 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-radeon包或amdvlk包4 | lib32-vulkan-radeon包或lib32-amdvlk包4 |
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-intel包2 | mesa包 或 mesa-amber包3 | lib32-mesa包 | vulkan-intel包 | lib32-vulkan-intel包 |
NVIDIA | Open source | Nouveau1 | xf86-video-nouveau包 | mesa包 | lib32-mesa包 | vulkan-nouveau包 | lib32-vulkan-nouveau包 |
Proprietary | NVIDIA1 | nvidia包或nvidia-open包5 | 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 |
- 對於同時使用集成顯卡和獨立顯卡的 NVIDIA Optimus 筆記本,請參考 NVIDIA Optimus。
- 對於第四代及更新的 Intel 顯卡,閱讀 Intel graphics#Installation 來獲取可用驅動。
- 針對老硬體的經典 OpenGL (非 Gallium3D) 驅動(Mesa 22.0 及更高版本不再支持 i915 經典驅動)。
- 相比amdvlk包 / lib32-amdvlk包更推薦vulkan-radeon包 / lib32-vulkan-radeon包 (參閱AMDGPU#安裝)。
- 有關nvidia包和nvidia-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 | 不支持 |
- AMD GPU 實驗支持
運行[編輯 | 編輯原始碼]
Xorg(1)命令通常不直接運行。而是使用顯示管理器或者xinit來啟動 X server。
配置[編輯 | 編輯原始碼]
/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
。
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/鍵盤設置。
顯示器設置[編輯 | 編輯原始碼]
開始[編輯 | 編輯原始碼]
無頭配置需要 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:0
和 1: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
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
手動設置DPI[編輯 | 編輯原始碼]
對於兼容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 — 支持陰影、高級模糊和漸變的輕量級合成管理器。
- Xcompmgr — 複合窗口效果管理器
- Gamescope — The micro-compositor from Valve, with gaming-oriented features such as FSR upscaling. Forked from steamos-compositor.
- steamos-compositor-plus — Valve's compositor, with some added tweaks and fixes.
技巧和技巧[編輯 | 編輯原始碼]
自動化[編輯 | 編輯原始碼]
這一節列出用於鍵盤、滑鼠輸入和窗口操作自動化的實用程序(例如移動、調整大小和層級)。
工具 | 軟體包 | 手冊 | 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-xprop包,xdotool包
阻止 TTY 訪問[編輯 | 編輯原始碼]
要在X中阻止tty訪問,請將以下內容添加到xorg.conf:
Section "ServerFlags" Option "DontVTSwitch" "True" EndSection
防止用戶結束 X[編輯 | 編輯原始碼]
要防止用戶在運行時被結束,請將以下內容添加到xorg.conf:
Section "ServerFlags" Option "DontZap" "True" EndSection
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:
/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
- 如果你有關於鍵盤,滑鼠,觸摸板等等的問題,參考 Category:Input devices 中具體的文章。
- 最後,在AMDGPU, 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
- Prepare for LPIC-1 exam 2 - topic 106.1: X11 - briefly covers architecture, #Configuration, desktop environments, remote usage, Wayland.
- xorg.conf(5)
- Gentoo/Xorg#Configuration - Gentoo Wiki's Xorg Configuration page