Xorg
X.Org Server (一般的には単に X と呼ばれる)は、X Window System (X11) ディスプレイサーバーの X.Org Foundation 実装であり、Linux ユーザーの間で最も人気のあるディスプレイサーバーです。その普遍性により、GUI アプリケーションにとって Xorg は欠かせない存在となり、ほとんどのディストリビューションで広く採用されています。
Xorg の代替かつ後継については Wayland を参照してください。
目次
- 1 インストール
- 2 起動
- 3 設定
- 4 入力デバイス
- 5 モニターの設定
- 6 コンポジット
- 7 ヒントとテクニック
- 8 トラブルシューティング
- 8.1 一般
- 8.2 一部またはすべてのユーザで黒画面、No protocol specified、Resource temporarily unavailable
- 8.3 Matrox カードで DRI が停止する
- 8.4 フレームバッファモード問題
- 8.5 プログラムが "font '(null)'" を要求する
- 8.6 リカバリ: GUI ログインの前に Xorg を無効化
- 8.7 "su" で X クライアントの起動が失敗する
- 8.8 X が起動できない: Keyboard initialization failed
- 8.9 動画を視聴しようとすると緑色の画面が表示される
- 8.10 SocketCreateListener エラー
- 8.11 プログラムを root として実行しようとした際に Invalid MIT-MAGIC-COOKIE-1 key
- 8.12 Xorg-server Fatal server error: (EE) AddScreen/ScreenInit
- 9 参照
インストール
Xorg は xorg-server パッケージでインストールできます。
また、設定作業などに必要なパッケージのいくつかが xorg-apps グループに入っており、それぞれ関連するセクションで説明しています。
xorg グループも利用できます。このグループには Xorg サーバのパッケージや xorg-apps のパッケージ、フォントが含まれています。
ドライバーのインストール
Linux カーネルにはオープンソースのビデオドライバーが含まれておりハードウェアでアクセラレートされたフレームバッファをサポートしています。しかし、OpenGL や X11 における 2D アクセラレーションを使うにはユーザーランドのサポートが必要です。
まず、あなたのグラフィックスカードを特定してください (Subsystem の行に特定のモデルが表示されます):
$ lspci -v -nn -d ::03xx
それから適切なドライバーをインストールしてください。パッケージデータベースを検索してオープンソースビデオドライバーの一覧を表示することができます:
$ pacman -Ss xf86-video
Xorg はインストールされているドライバーを自動的に検索します:
- 使用しているハードウェアに合うドライバー(以下に記載)がインストールされていない場合、Xorg はまず最初に fbdev (xf86-video-fbdev) を検索します。
- fbdev が存在しなかった場合、次に汎用ドライバーである vesa (xf86-video-vesa) を検索します。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 graphics | 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 と専用 GPU を組み合わせて使用する NVIDIA Optimus 対応のノート PC に関しては NVIDIA Optimus を参照してください。
- 第4世代及びそれ以降の Intel グラフィックスに関しては、Intel graphics#インストール で利用可能なドライバを確認してください。
- 古いハードウェア用のクラシック OpenGL (Gallium3D でない) ドライバです (Mesa 22.0 及びそれ以降では、i915 クラシックドライバのサポートが落とされています)。
- vulkan-radeon / lib32-vulkan-radeon は amdvlk / lib32-amdvlk よりも推奨されます (AMDGPU#インストール を参照)。
- nvidia と nvidia-open の違いについては NVIDIA#インストール を見てください。
他のビデオドライバーは xorg-drivers グループで見つけることができます。
Xorg はクローズドソースのドライバーがなくとも問題なく動作するはずです。基本的に、ゲームのための 3D 支援レンダリングや、デュアルスクリーン、TV 出力など高度な機能を使う場合にのみプロプライエタリのドライバが必要になります。オープンソースのドライバーでサポートされない最近の 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) コマンドを直接実行することは通常ありません。代わりに、ディスプレイマネージャ か xinit を用いて X サーバを起動します。
設定
Xorg は初期設定に xorg.conf
という名前の設定ファイルと .conf
が末尾につくファイルを使います: これらのファイルが検索されるフォルダの完全なリストは xorg.conf(5) で見られます(利用可能なすべてのオプションの詳細な説明付き)。
.conf ファイルを使う
/etc/X11/xorg.conf.d/
ディレクトリにはホスト固有の設定を保存します。あなたは自由に設定ファイルをそのディレクトリに追加することができますが、ファイル名には .conf
拡張子がなければなりません。さらに、これらのファイルは ASCII 順で読み込まれます。これらのファイル名は XX-
(2桁の整数とハイフン)で始めるのが慣例です(例えば 10 は 20 よりも早く読み込まれます)。これらのファイルは X サーバーの起動時にパースされオリジナルの xorg.conf
設定ファイルの一部として扱われます。設定が競合した場合は、一番最後のファイルが処理されることに注意してください。これにより、最も一般的な設定ファイルは名前順で一番最初にあるべきです。xorg.conf
ファイル内の設定エントリは一番最後に処理されます。
設定オプションの例は Fedora:Input device configuration#xorg.conf.d を見てください。
xorg.conf を使う
/etc/X11/xorg.conf
や /etc/xorg.conf
で Xorg を設定することもできます。xorg.conf
のスケルトンを生成するには
# Xorg :0 -configure
上のコマンドで /root/
に xorg.conf.new
ファイルが作られるはずです。これを /etc/X11/xorg.conf
にコピーして上書きすることができます。
もしくは、あなたのビデオカードドライバに自動で Xorg を設定するツールが含まれているかもしれません。詳しくは NVIDIA や AMDGPU PRO などあなたの使っているビデオカードの記事を見て下さい。
入力デバイス
入力デバイスのドライバーについては、X サーバーはデフォルトで libinput ドライバー (xf86-input-libinput) を使用しますが、xf86-input-evdev と関連するドライバーも使用できます [1]。
Udev があなたのハードウェアを検知し、/usr/share/X11/xorg.conf.d/
ディレクトリに入っているデフォルト設定ファイル 10-evdev.conf
と 40-libinput.conf
によって、evdev と libinput がほとんど全てのデバイスのホットプラグ・インプットドライバーとして動作します。Udev は systemd によって提供されています。
X サーバーの起動後、ログファイルを確認することで、どちらのドライバーがデバイスによってホットプラグされているか確認できます (ログファイルの名前は違っているかもしれません):
$ grep -e "Using input driver " Xorg.0.log
evdev や libinput があなたの持っているデバイスをサポートしていないときは、必要なドライバーを xorg-drivers グループからインストールしてください。
ホットプラグの動作については#設定を見てください。
より詳細な手順については、libinput の記事や以下に述べる記事、より多くの例は Fedora:Input device configuration を見てください。
入力の識別
キーボード入力#Xorg でキーコードを確認する を見てください。
マウスのアクセラレーション
マウスのアクセラレーション を見てください。
特殊なマウスボタン
全てのマウスボタンを動作させる を見てください。
タッチパッド
libinput または 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
マルチモニター
一般的な情報はマルチディスプレイを見て下さい。
複数のグラフィックカード
利用するドライバを正しく定めてグラフィックカードのバス ID を(10進数表記で)入力する必要があります。
Section "Device" Identifier "Screen0" Driver "intel" BusID "PCI:0:2:0" EndSection Section "Device" Identifier "Screen1" Driver "nouveau" BusID "PCI:1:0:0" EndSection
(16進数の) バス 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 に設定します。適切な DPI の自動検出を行うためにバージョン 21.1 で変更が加えられましたが、後に元に戻されました。
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 の出力に合わせて Identifier を調整してください):
Section "Monitor" Identifier "DVI-D-0" 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
スクリーンの横と縦の物理的な長さがわからないときは(最近は対角線の長さ(インチ数)しかわからないことも多い)、モニターの最大解像度(またはアスペクト比)と対角線の長さを使って縦と横の長さを計算できます。ピタゴラスの定理を使って最大解像度1280x800(もしくはアスペクト比16:10)、13.3インチのスクリーンの場合:
$ 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
設定を永続的にするには 自動起動#Xorg のスタートアップ を見て下さい。
プロプライエタリの NVIDIA ドライバー
Device
か Screen
セクション下にオプションを追加することで DPI を手動で設定できます:
Option "DPI" "96 x 96"
Manual DPI Setting Caveat
GTK はしばしば、オプションの X resource Xft.dpi
を通して Xorg サーバの DIP を上書きします。これがあなたの環境で起こっているかどうかを確認するには:
$ xrdb -query | grep dpi
GTK ライブラリのバージョン 3.16 以降、この変数が明示的に設定されていない場合、GTK はこの変数の値を 96 に設定します。GTK アプリがサーバの DPI に従うようにするには、Xft.dpi
の値をサーバのもとと同じに明示的に設定する必要があります。Xft.dpi
リソースは、一部のデスクトップ環境の個人設定で DIP を特定の値に強制的に設定する手段です。KDE と TDE がその例です。
Display Power Management
DPMS はコンピュータが使われていない時にモニターを省電力モードに移行させる技術です。一定時間後にモニタを自動で待機状態にすることができます。
コンポジット
X の Composite 拡張によってウィンドウ階層のサブツリー全体がオフスクリーンバッファにレンダリングされます。アプリケーションはバッファの内容を取得できるようになります。オフスクリーンバッファは親のウィンドウに自動的にマージされるか、コンポジットマネージャと呼ばれる外部のプログラムによってマージされます。詳しくは次のページを見て下さい: Wikipedia:ja:コンポジット型ウィンドウマネージャ。
ウィンドウマネージャによっては、コンポジットマネージャをインストールしなくてもコンポジットが行われます (例: Compiz, Enlightenment, KWin, Marco, Metacity, Muffin, Mutter, Xfwm)。そうでないウィンドウマネージャの場合、スタンドアロンのコンポジットマネージャを使用します。
コンポジットマネージャ一覧
- Picom — 影、高度なぼかし、フェード機能を搭載した軽量なコンポジタ。Compton からフォークされました。
- Xcompmgr — X.org 向けのウィンドウ効果ができるコンポジットマネージャ。
- Gamescope — Valve のマイクロコンポジタ。FSR アップスケーリングなどのゲーム志向の機能が搭載されています。steamos-compositor からフォークされました。
- steamos-compositor-plus — Valve のコンポジタ。いくつかの調整と修正が加えられています。
ヒントとテクニック
自動化
このセクションでは、キーボード/マウスの入力やウィンドウ操作(移動、リサイズ、レイズなど)の自動化のためのユーティリティを挙げています。
ツール | パッケージ | マニュアル | Keysym インプット |
ウィンドウ 操作 |
備考 |
---|---|---|---|---|---|
xautomation | xautomation | xte(1) | Yes | No | スクリーンスクレイピングツールも同梱。F13 などのシミュレート不可。
|
xdo | xdo | xdo(1) | No | Yes | ウィンドウの基本的なアクションを行う小さな X ユーティリティ。 |
xdotool | xdotool | xdotool(1) | Yes | Yes | バグが多く、活発に開発されていない。例: CLI パースが壊れている[2][3] |
xvkbd | xvkbdAUR | xvkbd(1) | Yes | No | Xorg のための仮想キーボード。文字を送るための -text オプションもあり。
|
AutoKey | autokey-qtAUR autokey-gtkAUR | ドキュメント | Yes | Yes | 高レベルで強力なマクロとスクリプトユーティリティ。Qt と Gtk の両方のフロントエンドあり。 |
クリップボード#ツール と 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#ウィンドウマネージャを使わずにアプリケーションを起動 を見てください。
リモートで GUI プログラムを実行する
次の記事を参照してください: OpenSSH#X11 フォワーディング
必要に応じて入力ソースを有効化・無効化
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_id
(device_id は無効化したいデバイスの ID) でデバイスを無効にします。次の例では Synaptics Touchpad の 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 が動作しているときにユーザーから kill されないようにしたい場合、以下を xorg.conf に追加してください:
Section "ServerFlags" Option "DontZap" "True" EndSection
視覚的にアプリケーションを kill する
アプリケーションが誤動作したり固まったりした場合、ターミナルから kill
や killall
を使うためにプロセス ID や名前を見つける代わりに、xorg-xkill を使えばアプリケーションをクリックして X サーバとの接続を閉じることができます。多くの既存のアプリケーションは、X サーバとの接続が閉じるとアボートしますが、一部のアプリケーションは実行し続ける可能性があります。
Rootless Xorg
Xorg は root の代わりに標準的なユーザー権限で実行することができます (いわゆる "rootless" Xorg)。これは root で実行するよりもセキュリティ上重要な改善です。一部の人気なディスプレイマネージャ (例: LightDM や XDM) はルートレス Xorg をサポートしていないことに注意してください。
Xorg がどのユーザーとして実行されているかは ps -o user= -C Xorg
で確認できます。
Xorg.wrap(1), systemd-logind(8), systemd のユーザーサービスとしての Xorg, Fedora:Changes/XorgWithoutRootRights , FS#41257 も参照して下さい。
xinitrc の使用
xinitrc を使ってルートレス Xorg を設定するには:
startx
を直接実行し、exec startx
を使用しないでください。- .xserverrc を介して
$XDG_VTNR
で logind から渡されたパーミッションの仮想コンソールを Xorg が使用することを確認してください。 - 特定のプロプライエタリなディスプレイドライバを使用している場合、カーネルモードセッティングの自動検出は失敗します。その場合は、
/etc/X11/Xwrapper.config
でneeds_root_rights = no
を設定する必要があります。
GDM の使用
カーネルモード設定を使用する場合、GDM はデフォルトで root 権限なしに Xorg を実行します。
セッションログのリダイレクト
Xorg をルートレスモードで実行すると、Xorg のログは、~/.local/share/xorg/Xorg.log
に保存されます。しかし、Xorg セッションからの stdout と stderr の出力はこのログにリダイレクトされません。リダイレクトを再度有効にするには、Xorg を -keeptty
フラグで起動し、stdout と stderr の出力をファイルにリダイレクトします。
startx -- -keeptty >~/.xorg.log 2>&1
もしくは、/etc/X11/xinit/xserverrc
を ~/.xserverrc
にコピーして、-keeptty
を追加します。[4] を参照してください。
root として Xorg を実行
上記の通り、rootless Xorg がデフォルトであるような状況が存在します。rootless Xorg がデフォルトである環境で Xorg を root として実行する必要がある場合、Xorg.wrap(1) を設定して root を要求するようにできます。
/etc/X11/Xwrapper.config
needs_root_rights = yes
トラブルシューティング
一般
何か問題が発生したらログを確認してください。ログは /var/log/
または (v1.16 からデフォルトのルートレス X の場合) ~/.local/share/xorg/
の中に保存されています。GDM を使っている場合は systemd のジャーナルをチェックしてください [5]。
ログファイルの名前は Xorg.n.log
という形式を取ります: n
はディスプレイ番号です。デフォルト設定のシングルユーザーマシンの場合は Xorg.0.log
を確認すれば良いですが、他の構成の場合は見るべきログは違うかもしれません。X サーバーのセッションが起動したときのタイムスタンプと 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)
で始まる行が存在しないか確認してください。(EE)
はエラーです。また、(WW)
は警告です。 $HOME
に存在する.xinitrc
ファイルが空の場合、X を起動するにはファイルを削除するか正しく編集する必要があります。空の場合、X は画面を表示せずXorg.0.log
にエラーも出力されません。ファイルを削除するとデフォルトの X 環境が起動します。- 画面がブラックアウト場合、異なる仮想コンソールに切り替えて(例:
Ctrl+Alt+F6
)、スクリーンの出力無しで root としてログインできます。そうするには、root
と入力し(その後Enter
を押して)、root のパスワードを入力してください(その後、再びEnter
を押してください)。
- 次のコマンドで X サーバーを終了させることが可能です:
# pkill -x X
- 上記のコマンドが機能しない場合、再起動してください:
# reboot
- キーボード・マウス・タッチパッドなどに問題がおこる場合は カテゴリ:入力デバイス 内のそれぞれのページを見て下さい。
- AMDGPU、Intel Graphics、NVIDIA の記事に問題の解決方法が載ってないか調べてください。
X は設定ファイルと一時ファイルをユーザーのホームディレクトリに作成します。あなたのホームディレクトリが入っているパーティションに十分な空き容量があることを確認してください。悪いことに、ディスク容量が不足していることを X サーバーは何も知らせません。
Matrox カードで DRI が停止する
Matrox カードを使っていて Xorg をアップグレードすると DRI が停止する場合、次の行を xorg.conf
のビデオカードの Device セクションに追加してください:
Option "OldDmaInit" "On"
フレームバッファモード問題
以下のログメッセージを残して 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)'
いくつかのプログラムはビットマップフォントでだけ動作します。2つの主要なビットマップフォントのパッケージがあります、xorg-fonts-75dpi と xorg-fonts-100dpi です。両方は必要ありません、片方だけで十分です。どちらがあなたに適しているか調べるには、xorg-xdpyinfo の xdpyinfo
を試してください:
$ xdpyinfo | grep resolution
そして、出力された値に最も近い方のフォントを使用してください。
リカバリ: GUI ログインの前に Xorg を無効化
Xorg を自動的に起動するように設定していて、なんらかの理由でログイン・ディスプレイマネージャが表示される前に Xorg が起動するのを防ぎたい場合(例えば、システムを間違って設定したせいで Xorg がマウスやキーボード入力を受け付けない場合)、以下の2つの方法でこれを達成できます。
- デフォルトのターゲットを rescue.target に変更してください。systemd#起動時のデフォルトターゲットを変更する を参照。
- 誤ってシステムを設定して Xorg を使えなくしただけでなく、GRUB メニューの待ち時間をゼロに設定、または起動時から Xorg を無効にするのに GRUB を使えない場合、Arch Linux のライブ CD を使って下さい。インストールガイドに従ってインストールした Arch Linux をマウントして chroot します。もしくは、
Ctrl+Alt
+ function キー (通常は X によって使用されていないF1
からF7
) を使って tty を切り替えてから root でログインして以下を行います。
設定に応じて、以下の作業のどれか、または複数を行う必要があります:
- ディスプレイマネージャを無効化。
- X の自動起動を無効化。
~/.xinitrc
の名前を変更するかexec
行をコメントアウト。
"su" で X クライアントの起動が失敗する
"Client is not authorized to connect to server" と表示される場合、次の行を /etc/pam.d/su
と /etc/pam.d/su-l
に追加して下さい:
session optional pam_xauth.so
pam_xauth
が正しく環境変数を設定し xauth
キーを管理します。
X が起動できない: Keyboard initialization failed
ファイルシステム(特に /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 は起動するでしょう。
動画を視聴しようとすると緑色の画面が表示される
色深度の設定が間違っています。例えば、16ではなく24に設定する必要があります。
SocketCreateListener エラー
SocketCreateListener() failed
というエラーメッセージを吐いて X が落ちてしまう場合、/tmp/.X11-unix
内のソケットファイルを削除する必要があります。この問題は、(例えば xorg.conf
を生成するために)前回に Xorg を root として実行した場合に発生することがあります。
プログラムを root として実行しようとした際に Invalid MIT-MAGIC-COOKIE-1 key
このエラーは、現在のユーザのみが X サーバへのアクセス権を持っていることを意味しています。解決策は root にアクセス権を与えることです:
$ xhost +si:localuser:root
このコマンドは、root 以外のユーザに X へのアクセス権を与える際にも使用できます。
Xorg-server Fatal server error: (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 System の詳しい解説
- Xorg(1)
- Prepare for LPIC-1 exam 2 - topic 106.1: X11 - アーキテクチャ、#設定、デスクトップ環境、リモートでの使用、Wayland に関して簡単に説明しています。
- xorg.conf(5)
- Gentoo:Xorg/Guide/ja#設定