Xorg

提供: ArchWiki
2024年12月27日 (金) 15:07時点におけるAshMyzk (トーク | 投稿記録)による版 (同期)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

X.Org Server (一般的には単に X と呼ばれる)は、X Window System (X11) ディスプレイサーバーの X.Org Foundation 実装であり、Linux ユーザーの間で最も人気のあるディスプレイサーバーです。その普遍性により、GUI アプリケーションにとって Xorg は欠かせない存在となり、ほとんどのディストリビューションで広く採用されています。

Xorg の代替かつ後継については Wayland を参照してください。

目次

インストール

Xorg は xorg-server パッケージでインストールできます。

また、設定作業などに必要なパッケージのいくつかが xorg-apps グループに入っており、それぞれ関連するセクションで説明しています。

xorg グループも利用できます。このグループには Xorg サーバのパッケージや xorg-apps のパッケージ、フォントが含まれています。

ドライバーのインストール

Linux カーネルにはオープンソースのビデオドライバーが含まれておりハードウェアでアクセラレートされたフレームバッファをサポートしています。しかし、OpenGL や X11 における 2D アクセラレーションを使うにはユーザーランドのサポートが必要です。

まず、あなたのグラフィックスカードを特定してください (Subsystem の行に特定のモデルが表示されます):

$ lspci -v -nn -d ::03xx
ヒント: ここの ::03 は "Display controller PCI デバイスクラス" を意味します。xx は "そのクラス内の任意のサブクラス" という意味です。

それから適切なドライバーをインストールしてください。パッケージデータベースを検索してオープンソースビデオドライバーの一覧を表示することができます:

$ 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
  1. 統合 GPU と専用 GPU を組み合わせて使用する NVIDIA Optimus 対応のノート PC に関しては NVIDIA Optimus を参照してください。
  2. 第4世代及びそれ以降の Intel グラフィックスに関しては、Intel graphics#インストール で利用可能なドライバを確認してください。
  3. 古いハードウェア用のクラシック OpenGL (Gallium3D でない) ドライバです (Mesa 22.0 及びそれ以降では、i915 クラシックドライバのサポートが落とされています)。
  4. vulkan-radeon / lib32-vulkan-radeonamdvlk / lib32-amdvlk よりも推奨されます (AMDGPU#インストール を参照)。
  5. nvidianvidia-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 利用不可
  1. 試験的。

起動

Xorg(1) コマンドを直接実行することは通常ありません。代わりに、ディスプレイマネージャxinit を用いて X サーバを起動します。

ヒント: たいてい、X の機能を補完するために ウィンドウマネージャデスクトップ環境 をインストールすることになるでしょう。

設定

ノート: Arch はデフォルトの設定ファイルを /usr/share/X11/xorg.conf.d に配置しており、ほとんどの場合、追加の設定は必要ありません。

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 にコピーして上書きすることができます。

ヒント: 既に X サーバーを動作させている場合は、別のディスプレイを使って下さい、例: Xorg :2 -configure

もしくは、あなたのビデオカードドライバに自動で Xorg を設定するツールが含まれているかもしれません。詳しくは NVIDIAAMDGPU PRO などあなたの使っているビデオカードの記事を見て下さい。

ノート: 設定ファイルは大文字・小文字を区別しません、また “_” は無視されます。(Option など) 設定ファイル内のほとんどの文字列も大文字・小文字・空白・“_” を区別しません。

入力デバイス

入力デバイスのドライバーについては、X サーバーはデフォルトで libinput ドライバー (xf86-input-libinput) を使用しますが、xf86-input-evdev と関連するドライバーも使用できます [1]

Udev があなたのハードウェアを検知し、/usr/share/X11/xorg.conf.d/ ディレクトリに入っているデフォルト設定ファイル 10-evdev.conf40-libinput.conf によって、evdev と libinput がほとんど全てのデバイスのホットプラグ・インプットドライバーとして動作します。Udevsystemd によって提供されています。

X サーバーの起動後、ログファイルを確認することで、どちらのドライバーがデバイスによってホットプラグされているか確認できます (ログファイルの名前は違っているかもしれません):

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

evdev や libinput があなたの持っているデバイスをサポートしていないときは、必要なドライバーを xorg-drivers グループからインストールしてください。

ホットプラグの動作については#設定を見てください。

より詳細な手順については、libinput の記事や以下に述べる記事、より多くの例は Fedora:Input device configuration を見てください。

入力の識別

キーボード入力#Xorg でキーコードを確認する を見てください。

マウスのアクセラレーション

マウスのアクセラレーション を見てください。

特殊なマウスボタン

全てのマウスボタンを動作させる を見てください。

タッチパッド

libinput または Synaptics タッチパッド を見てください。

タッチスクリーン

タッチスクリーン を見てください。

キーボードの設定

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

マルチモニター

一般的な情報はマルチディスプレイを見て下さい。

複数のグラフィックカード

利用するドライバを正しく定めてグラフィックカードのバス 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:01: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
ノート: プロプライエタリな NVIDIA ドライバを使用している場合、上記の変更を反映させるために、DeviceScreen セクションに Option "UseEdidDpi" "FALSE" を追加する必要がある場合があります。

スクリーンの横と縦の物理的な長さがわからないときは(最近は対角線の長さ(インチ数)しかわからないことも多い)、モニターの最大解像度(またはアスペクト比)と対角線の長さを使って縦と横の長さを計算できます。ピタゴラスの定理を使って最大解像度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
ノート: 上記の計算はピクセルアスペクト比が1:1のモニターでは上手く行きますが、モニターによってはアスペクト比が潰されることがあります (例: 16:10 のアスペクト解像度が 16:9 のモニターに適用される)。その場合、画面の大きさを手動で計測する必要があります。

手動で DPI を設定する

ノート: DPI は自由に設定することができ、Qt や GTK を使用しているアプリケーションはそれにあわせてスケールしますが、スケールによる画像の乱れがビットマップを使用する GUI に現れないように DPI は 96 (100%、スケーリング無し)、120 (25% 増分)、144 (50% 増分)、168 (75% 増分)、192 (100% 増分) などに設定するのを推奨します。また、アイコンの最低 DPI は基本的に 96 になっているので、96 DPI 未満に設定しても GUI のグラフィックのサイズは小さくなりません。

RandR に対応しているドライバ (例えばオープンソースの ATI ドライバ) なら、次のコマンドで設定できます:

$ xrandr --dpi 144
ノート: 変更はすぐにはアプリケーションに適用されません。再起動する必要があります。

設定を永続的にするには 自動起動#Xorg のスタートアップ を見て下さい。

プロプライエタリの NVIDIA ドライバー

DeviceScreen セクション下にオプションを追加することで 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 を特定の値に強制的に設定する手段です。KDETDE がその例です。

Display Power Management

DPMS はコンピュータが使われていない時にモニターを省電力モードに移行させる技術です。一定時間後にモニタを自動で待機状態にすることができます。

コンポジット

X の Composite 拡張によってウィンドウ階層のサブツリー全体がオフスクリーンバッファにレンダリングされます。アプリケーションはバッファの内容を取得できるようになります。オフスクリーンバッファは親のウィンドウに自動的にマージされるか、コンポジットマネージャと呼ばれる外部のプログラムによってマージされます。詳しくは次のページを見て下さい: Wikipedia:ja:コンポジット型ウィンドウマネージャ

ウィンドウマネージャによっては、コンポジットマネージャをインストールしなくてもコンポジットが行われます (例: Compiz, Enlightenment, KWin, Marco, Metacity, Muffin, Mutter, Xfwm)。そうでないウィンドウマネージャの場合、スタンドアロンのコンポジットマネージャを使用します。

コンポジットマネージャ一覧

  • Picom — 影、高度なぼかし、フェード機能を搭載した軽量なコンポジタ。Compton からフォークされました。
https://github.com/yshui/picom || picom
  • Xcompmgr — X.org 向けのウィンドウ効果ができるコンポジットマネージャ。
https://gitlab.freedesktop.org/xorg/app/xcompmgr/ || xcompmgr
  • 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

ヒントとテクニック

自動化

このセクションでは、キーボード/マウスの入力やウィンドウ操作(移動、リサイズ、レイズなど)の自動化のためのユーティリティを挙げています。

ツール パッケージ マニュアル 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 は、適切なデバイスとマッチするように使用されるものです。正しいデバイスを指定する他の方法 (libinputMatchIsTouchscreen など) は、使用している入力ドライバのドキュメントを調べてください。この例では libinput を使用していますが、これはドライバに依存しない方法であり、対象のデバイスがドライバに伝達されないようにします。

ホットキーでアプリケーションを終了

ホットキーでスクリプトを実行:

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

依存パッケージ: xorg-xprop, xdotool

#視覚的にアプリケーションを kill する も参照。

TTY へのアクセスをブロック

X から tty へのアクセスをブロックしたい場合、以下を xorg.conf に追加してください:

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

これは、信頼できないユーザによる、システムのコマンドラインへのアクセスを制限するのに役立ちます。

ユーザーが X を終了できないようにする

X が動作しているときにユーザーから kill されないようにしたい場合、以下を xorg.conf に追加してください:

Section "ServerFlags"
    Option "DontZap"      "True"
EndSection
ノート: Ctrl+Alt+Backspace ショートカットは、直接 X サーバの kill をトリガーするものではなく、キーマップの Terminate_Server アクションをトリガーします。通常、これはデフォルトで設定されていません。Xorg でのキーボード設定#Ctrl+Alt+Backspace で Xorg を終了する を見てください。

視覚的にアプリケーションを kill する

アプリケーションが誤動作したり固まったりした場合、ターミナルから killkillall を使うためにプロセス ID や名前を見つける代わりに、xorg-xkill を使えばアプリケーションをクリックして X サーバとの接続を閉じることができます。多くの既存のアプリケーションは、X サーバとの接続が閉じるとアボートしますが、一部のアプリケーションは実行し続ける可能性があります。

Rootless Xorg

Xorg は root の代わりに標準的なユーザー権限で実行することができます (いわゆる "rootless" Xorg)。これは root で実行するよりもセキュリティ上重要な改善です。一部の人気なディスプレイマネージャ (例: LightDMXDM) はルートレス 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.configneeds_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 を要求するようにできます。

警告: Xorg を root として実行するとセキュリティ上の問題を引き起こします。さらなる議論については #Rootless Xorg を見てください。
/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
ヒント: 読みやすいタイムスタンプをログに追加するには、tail(1) の出力を ts(1) (moreutils パッケージに含まれています) にパイプで繋ぐことができます。ただし、コマンドが実行されている時にログに追加された行にしか正しいタイムスタンプは追加されません。例:
$ tail -f ~/.local/share/xorg/Xorg.0.log | ts
  • ログファイルの中に (EE) で始まる行が存在しないか確認してください。(EE) はエラーです。また、(WW) は警告です。
  • $HOME に存在する .xinitrc ファイルが空の場合、X を起動するにはファイルを削除するか正しく編集する必要があります。空の場合、X は画面を表示せず Xorg.0.log にエラーも出力されません。ファイルを削除するとデフォルトの X 環境が起動します。
  • 画面がブラックアウト場合、異なる仮想コンソールに切り替えて(例: Ctrl+Alt+F6)、スクリーンの出力無しで root としてログインできます。そうするには、root と入力し(その後 Enter を押して)、root のパスワードを入力してください(その後、再び Enter を押してください)。
次のコマンドで X サーバーを終了させることが可能です:
# pkill -x X
上記のコマンドが機能しない場合、再起動してください:
# reboot

一部またはすべてのユーザで黒画面、No protocol specified、Resource temporarily unavailable

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-75dpixorg-fonts-100dpi です。両方は必要ありません、片方だけで十分です。どちらがあなたに適しているか調べるには、xorg-xdpyinfoxdpyinfo を試してください:

$ 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 でログインして以下を行います。

設定に応じて、以下の作業のどれか、または複数を行う必要があります:

"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 の早期起動をセットアップしてください。

参照

翻訳ステータス: このページは en:Xorg の翻訳バージョンです。最後の翻訳日は 2024-12-27 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。