Xorg/ガイド
Xorg は、簡単に操作可能なGUI環境をユーザーに提供してくれる、X Window サーバです。このガイドでは、Xorg とは何か、Xorg のインストール方法、各種設定について説明します。
X Window サーバとは何ですか?
GUI vs CLI
平均的なユーザは、コマンドラインインターフェース(CLI)上でコマンドを入力するというとギョッとするでしょう。Gentoo(や、Linux一般において)によって提供される自由な世界をポイントし、クリックして進んでゆくことは出来ないのでしょうか? いや、もちろんできます!
Gentoo はウィンドウマネージャやデスクトップ環境のような、既にインストールされている Gentoo にインストール可能な派手なグラフィカルインターフェイスを提供しています。
Linux初心者が遭遇する最も大きな驚きのうちの一つは、つまり、グラフィカルユーザーインターフェースはシステムの上で動く一つの(あるいは一部の場合、一連の)アプリケーションでしかないということです。これはLinuxカーネルや他の内部システムの一部ではありません。そうは言っても、GUIはあなたのワークステーションのグラフィカルな能力を使わせてくれるパワフルなツールです。
規格というものは重要ですから、描画、スクリーン上でのウィンドウの移動、マウスやキーボードや他の基本的で、しかし重要なものの規格がつくられ、そして"X11"や単に"X"とよく呼ばれる"X Window System"が名付けられました。これは世界中でUnix, Linux, そしてUnixライクなOSで使われています。
X11 規格を利用して Linux ユーザーに GUI を動かす機能を提供しているアプリケーションは、 XFree86 プロジェクトのフォークである Xorg-X11 です。XFree86 は GPL ライセンスとは互換性のないライセンスを使っています。そのため、Xorg の使用が推奨されます。XFree86パッケージはGentooのリポジトリからもはや提供されていません。
X.org プロジェクト
X.orgプロジェクトがつくられ、自由に配布可能な、X11システムのオープンソース実装を管理しています。これがオープンソースのX11ベースデスクトップ基盤です。
Xorg はグラフィカルソフトウェアとハードウェアの間のインターフェースを提供します。さらに Xorg は完全にネットワークを念頭に置いていて、そのためアプリケーションをあるシステムで実行しつつ、それと異なるシステムで見ることが可能です。
インストール
Xorg をインストールする前に、インストールするためのシステムの準備をしてください。まず、ビデオカードとインプットデバイスサポートのためにカーネルをセットアップしてください。それから、正しいドライバと Xorg パッケージがビルドされ、インストールされるように /etc/portage/make.conf を準備してください。
インプットドライバサポート
カーネル設定を変更することで event interface (CONFIG_INPUT_EVDEV) のサポートを有効化する必要があります。もしカーネル設定の方法については、カーネルコンフィギュレーションガイドをお読みください。
Device Drivers --->
Input device support --->
<*> Event interface
カーネルモード設定
モダンなオープンソースビデオドライバはカーネルモード設定(KMS)に依存しています。KMSはちらつきの少ないグラフィカルブート、早い応答性、ビルトインフレームバッファーコンソール、コンソールからXorgへの滑らかな切り替えや他の機能を提供します。
古いフレームバッファドライバが無効化されているか確認する
KMS は古いフレームバッファドライバと競合するので、フレームバッファドライバはカーネル設定で無効化されている必要があります。
まず、KMSのためにカーネルを準備してください。このステップはどのXorgビデオドライバが使われるかにはよりません。
Device Drivers --->
Graphics support --->
Frame Buffer Devices --->
<*> Support for frame buffer devices --->
## (Disable all drivers, including VGA, Intel, NVIDIA, and ATI, except EFI-based Framebuffer Support, only if you are using UEFI)
## (Further down, enable basic console support. KMS uses this.)
Console display driver support --->
<*> Framebuffer Console Support
つぎに、ビデオカードに正しいKMSドライバをカーネルが使うよう設定してください。Intel、NVIDIAやAMD/ATIはよくあるカードなので、下に示したカード毎のコードに従ってください。
Intel
Intel のカードについては、Intel の記事のカーネルの節を見てください。
NVIDIA
NVIDIA カードでは、利用可能なドライバの選択肢がふたつあります。完全にオープンソースなシステムでは、オープンソースドライバの Nouveau がおすすめです。もうひとつの選択肢はクローズドソースの NVIDIA ドライバで、こちらは NVIDIA によって公式にサポートされています。この記事では Nouveau ドライバを推奨しますが、オープンソースドライバを使用する場合、カードによってはすべての機能がサポートされていない場合があることに注意してください。
一部のカードではカーネルドライバに加えて、クローズドソースのファームウェアを Linux カーネルに組み込む必要があります。特定のカードにファームウェア (sys-kernel/linux-firmware から入手します) が必要かどうか確認するために、選択したドライバに応じてそれぞれのドライバの記事を確認してください。
Device Drivers --->
Graphics support --->
<M/*> Nouveau (NVIDIA) cards
AMD/ATI
新しい AMD/ATI カード (RadeonHD 2000 以降) については emerge sys-kernel/linux-firmware を実行してください (このパッケージに radeon と amdgpu ドライバのためのファームウェアが含まれています)。これらパッケージがインストールされたら、Radeon ドライバーをカーネルのモジュールにするか、あるいは Radeon の記事のファームウェアの節や、新しい AMD グラフィックカード (GCN1.1 以上) については AMDGPU の記事のファームウェアの節に詳解されているように、カーネルを設定してください。
古いカード:
## (Setup the kernel to use the radeon-ucode firmware, optional if "ATI Radeon" below is M)
Device Drivers --->
Generic Driver Options --->
[*] Include in-kernel firmware blobs in kernel binary
## # ATI card specific, (see Radeon page for details which firmware files to include)
(radeon/<CARD-MODEL>.bin ...)
## # Specify the root directory
(/lib/firmware/) External firmware blobs to build into the kernel binary
## (Enable Radeon KMS support)
Device Drivers --->
Graphics support --->
<M/*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
<M/*> ATI Radeon
[*] Enable modesetting on radeon by default
[ ] Enable userspace modesetting on radeon (DEPRECATED)
新しいカード:
## (Setup the kernel to use the amdgpu firmware, optional if "AMD GPU" below is M)
Device Drivers --->
Generic Driver Options --->
[*] Include in-kernel firmware blobs in kernel binary
## # AMD card specific, (see AMDGPU page for details which firmware files to include)
(amdgpu/<CARD-MODEL>.bin ...)
## # Specify the root directory
(/lib/firmware/) External firmware blobs to build into the kernel binary
## (Enable Radeon KMS support)
Device Drivers --->
Graphics support --->
<M/*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
<M/*> AMD GPU
[ /*] Enable amdgpu support for SI parts
[ /*] Enable amdgpu support for CIK parts
[*] Enable AMD powerplay component
ACP (Audio CoProcessor) Configuration --->
[*] Enable AMD Audio CoProcessor IP support (CONFIG_DRM_AMD_ACP)
Display Engine Configuration --->
[*] AMD DC - Enable new display engine
[ /*] DC support for Polaris and older ASICs
[ /*] AMD FBC - Enable Frame Buffer Compression
[ /*] DCN 1.0 Raven family
<M/*> HSA kernel driver for AMD GPU devices
x86/amd64 では、古い radeon カード (X1900 シリーズ以前) は追加のファームウェアや特別なファームウェア設定を必要としません。正常に動作させるのに必要なカーネル設定は、Direct Rendering Manager (DRM) と ATI Radeon modesetting ドライバだけです。
Linuxカーネル >= 3.9 はデフォルトで含んでいるためEnable modesetting on radeon by default項目をもっていません。新カーネルにこのオプションがなくても心配しないでください。
Linux kernel >= 4.15 は AMDGPU の動作に必要な Display Core (DC) を含んでいます。この新しいドライバーは GCN5.0 Vega や DCN1.0 Raven Ridge (APU) 向けに書かれたものですが、GCN1.1 Southern Islands 以降の古い Radeon グラフィックカードに対してもさらなる機能を追加します。この古い Radeon カードに対する追加サポートは標準化される予定ですので、新しいカーネルでこのオプションが無くなっていても心配はいりません。
カーネル設定を出て、カーネルを再ビルドし、再起動しましょう。
これで KMS がセットアップされので、次のセクションで /etc/portage/make.conf の準備をします。
カーネルは準備され、/etc/portage/make.conf ファイル中のいくつかの変数を Xorg インストール前に設定する必要があります。
Make.conf
Portage には、様々なパッケージでの X 対応を有効化する X USE フラグがあります (すべての desktop プロファイルでデフォルト)。システム全体で X への対応を確実にするためには、この USE フラグが USE フラグリストに追加されていることを確認してください:
USE="X"
最初の変数は VIDEO_CARDS です。これは使用したいビデオドライバを設定するために使われ、通常はシステムに存在するビデオカードの種類に応じて決まります。最もよくある設定は、NVIDIA カードには nouveau
、AMD カードには radeon
です。これらは活発に開発され、よくサポートされたオープンソースドライバです。新しい AMD ビデオカード (Southern Islands 以降) 向けには、新しい amdgpu
オープンソースドライバーもあります。詳細については AMDGPU の記事を参照してください。
NVIDIA と AMD/ATI それぞれによるプロプライエタリドライバとして、
nvidia
と fglrx
もあります。しかしながら、プロプライエタリドライバの設定はこのガイドの範囲を超えています。Gentoo Linux NVIDIA ガイド と Gentoo Linux ATI FAQ を読んでください。さらなる情報や、どちらのドライバを使うかのアドバイスについては、これらのガイドを参照してください。intel
ドライバはよくある Intel 統合グラフィクスチップセット搭載のデスクトップやラップトップに使われるでしょう。詳細については Intel X Drivers をお読みください。
スペース区切りの場合、VIDEO_CARDS は2つ以上の値をもちます。
2 つ目の変数は INPUT_DEVICES で、これはインプットデバイスにどのドライバがビルドされるか決定するために使われます。
make.defaults では Libinput がデフォルトのインプットデバイスドライバーになっています。
現在何が設定されているか確認するには、以下を実行します:
user $
portageq envvar INPUT_DEVICES
ラップトップ用の Synaptics タッチパッドのような代替インプットデバイスが必要な場合には、それらを /etc/portage/make.conf ファイルの INPUT_DEVICES に忘れずに追加してください。
## (For mouse, keyboard, and Synaptics touchpad support)
INPUT_DEVICES="libinput synaptics"
## (For NVIDIA cards)
VIDEO_CARDS="nouveau"
## (For AMD/ATI cards)
VIDEO_CARDS="radeon"
もし提案された設定がうまく動かなかったらx11-base/xorg-driversパッケージをemergeしましょう(次のステップを見てください)。有効なオプションを全て選び、どれをシステムに適用するか選んでください。これはキーボード、マウス、Synapticsタッチパッド、Radeonビデオカードのシステムの例です。
root #
emerge --pretend --verbose x11-base/xorg-drivers
These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] x11-base/xorg-drivers-1.20-r1::gentoo INPUT_DEVICES="libinput synaptics -elographics -evdev -joystick -keyboard -mouse -vmmouse -void -wacom" VIDEO_CARDS="nouveau radeon -amdgpu -ast -dummy -fbdev (-freedreno) (-geode) -glint -i915 -i965 -intel -mga -nv -nvidia (-omap) -qxl -r128 -radeonsi -siliconmotion (-tegra) (-vc4) -vesa -via -virtualbox -vmware" 0 KiB
各 USE フラグの意味は以下の通りです:
USE flags for x11-base/xorg-server X.Org X servers
+elogind
|
Use elogind to get control over framebuffer when running as regular user |
+udev
|
Enable virtual/udev integration (device discovery, power and storage device support, etc) |
debug
|
Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces |
minimal
|
Install a very minimal build (disables, for example, plugins, fonts, most drivers, non-critical features) |
selinux
|
!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur |
suid
|
Enable setuid root program(s) |
systemd
|
Enable use of systemd-specific libraries and features like socket activation or session tracking |
test
|
Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently) |
unwind
|
Enable libunwind usage for backtraces |
xcsecurity
|
Build Security extension |
xephyr
|
Build the Xephyr server |
xnest
|
Build the Xnest server |
xorg
|
Build the Xorg X server (HIGHLY RECOMMENDED) |
xvfb
|
Build the Xvfb server |
デフォルトでは suid USE フラグは無効化されています。推奨に従って X を elogind または systemd のような logind プロバイダの下で実行している場合は、これは特に問題ではありません。しかしながら、logind プロバイダを使用せずに、startx などによって通常ユーザアカウントで X を実行する場合、/etc/portage/package.use/xorg-server で suid USE フラグを有効化しておくべきでしょう。 このリポジトリニュース記事もお読みください。suid を設定することで、/dev/tty0 あるいは virtual console 7 の権限エラーを防止することができるでしょう。
Emerge
必要な変数と USE フラグを設定したら、Xorg をインストールすることができます:
root #
emerge --ask x11-base/xorg-server
インストールが終了したら、続ける前に、いくつか環境変数が再初期化のために必要です。このコマンドでプロファイルをsourceしましょう:
root #
env-update
root #
source /etc/profile
設定
X server は Xorg の設定ファイルを手動で編集することなく、そのまま使えるよう設計されています。マウスや、キーボードやディスプレイといったデバイスは検出され、設定されるべきなのです。
startx の使用を設定ファイルの編集なしに試してみてください。Xorgがスタートしなかったり、なにか問題が発生した場合、Xorgの手動設定が必要になるかもしれません。これは次のセクションで説明されます。
非 root ユーザで Xorg を実行するには、一度 root として、logind プロバイダを有効化する (Non root Xorg を参照してください) か、suid USE フラグを設定してください (上のメモを参照してください)。
もしカーネルに変更を加えたら、新しくビルドされたカーネルを使うために、startxの前に再起動することを忘れないでください。カーネルが新しいバージョンになったら、ブートローダの設定ファイルの更新も必要でしょう。
xorg.conf.d ディレクトリ
xorg.conf.d 中の設定ファイルは最後の頼みの綱であるべきです。可能な限り、Xorg をどんな特殊な設定なしに実行することが望ましいです。
Xorg の設定ファイルのほとんどは /etc/X11/xorg.conf.d/ にあります。このディレクトリが存在しない場合は、作成してください。それぞれのファイルは一意な名前と .conf で終わります。Xorg 設定ディレクトリのなかのファイルの名前は英数字順に読み込まれます。たとえば、10-evdev.conf は 20-synaptics.conf の前に読み込まれます。a-evdev.conf は b-synaptics.conf などの前に読み込まれるでしょう。このディレクトリ中のファイルはナンバリングされている必要はないですが、そのようにしておくと整理された状態を維持しやすいでしょう。それは欠陥のある設定ファイルをデバッグするときに便利です。
Xorg は /usr/share/doc/xorg-server-${version}/xorg.conf.example.bz2 に設定例を提供しています。これらは /etc/X11/xorg.conf.d/ にカスタム設定ファイルをつくるのに使われるでしょう。例は十分にコメントがなされていますが、文法についてのドキュメントが必要ならば man xorg.conf がいつでも使えます。他の例はこのセクションの終わりのその他の資料にあります。
startx を用いる
X サーバ起動のために startx を試しましょう。startx は (x11-apps/xinitによってインストールされた) スクリプトで、X セッションを実行します。X セッションは X サーバを起動し、その上にグラフィカルアプリケーションを起動します。それはどのアプリケーションを起動するか、以下の論理に従って決定します:
- もし、ファイル.xinitrcがホームディレクトリに存在するのなら、そこに列挙されたコマンドを実行します。
- そうでなければ、/etc/env.d/90xsessionファイルの変数XSESSIONの値を読み、それに応じて関連したセッションを実行します。XSESSIONの値は/etc/X11/Sessions/に使用可能です。システムワイドなデフォルトセッションを設定するには:
root #
echo XSESSION="Xfce4" > /etc/env.d/90xsession
- これは 90xsession ファイルをつくり、デフォルト X セッションを Xfce に設定します。env-update を 90xsession に変更を加えたあと実行することを覚えておきましょう。
user $
startx
もしウィンドウマネージャがインストールされていなければ、黒い画面が現れるでしょう。これは何かがおかしいというサインでもあるので、 x11-wm/twmとx11-terms/xtermはXをテストするためのみにインストール出来ます。
プログラムがインストールされたら、startx を再び実行しましょう。xterm ウィンドウが現われ、X サーバが動いているか検証するのが簡単になります。結果に満足したら、テストパッケージを削除するには x11-wm/twm と x11-terms/xterm を depclean しましょう。これらは実際のデスクトップ環境を構築するのに必要ではありません。
(開始すべき)セッションはstartxの引数として与えられることも可能です:
user $
startx /usr/bin/startfluxbox
さらに、X11 サーバオプションを渡すには、二重ダッシュを頭につけることで:
user $
startx -- vt7
X の設定を調整する
画面の解像度を設定する
もし解像度がおかしいようであれば、xorg.conf.d の二つのセクションを調べてください。まず、X サーバが実行する解像度設定を列挙している Screen セクションがあるはずです。このセクションは解像度全てを列挙しているわけではないでしょう。その場合、Xorg は次のセクション Monitor の情報に基づいて解像度を推定します。
さあ、解像度を変更しましょう。/etc/X11/xorg.conf.d/40-monitor.conf からの次の例では、X サーバがデフォルトで 1440x900 で開始するよう PreferredMode
を追加します。Device
の Option
セクションは xrandr の実行によって得られるモニタ名前 (DVI-0
) に一致しなければなりません。xrandr をインストール (emerge xrandr) し、情報を得ましょう。モニター名後の引数 (Device
セクション中) は Monitor
セクションの中の Identifier
に一致する必要があります。
Section "Device"
Identifier "RadeonHD 4550"
Option "Monitor-DVI-0" "DVI screen"
EndSection
Section "Monitor"
Identifier "DVI screen"
Option "PreferredMode" "1440x900"
EndSection
Xを実行(startx)して設定通りの解像度か確かめましょう。
マルチディスプレイ
2 つ以上のモニターは /etc/X11/xorg.conf.d/ 中に規定されます。それぞれのモニターに一意な識別子を与え、それからもうひとつのモニターに対しての右や上といった物理的位置を列挙します。次の例は VGA モニターを右側スクリーンとして、DVI と VGA モニターの設定方法を示します。
Section "Device"
Identifier "RadeonHD 4550"
Option "Monitor-DVI-0" "DVI screen"
Option "Monitor-VGA-0" "VGA screen"
EndSection
Section "Monitor"
Identifier "DVI screen"
EndSection
Section "Monitor"
Identifier "VGA screen"
Option "RightOf" "DVI screen"
EndSection
キーボードの設定
キーボードレイアウトの切り替え方法については、キーボードレイアウトの切替え記事を見てください。
キーボードレイアウトの切り換えの記事に従っている場合は、この節の以降の内容は不要かもしれません。
多言語キーボードを使えるように X をセットアップするためには、/etc/X11/xorg.conf.d/ 内に適切な設定ファイルをつくりましょう。この例はチェコ語キーボードレイアウトについて示します:
Section "InputClass"
Identifier "keyboard-all"
Driver "evdev"
MatchProduct "AT Translated Set 2 keyboard" # これを部分文字列として持つデバイスにマッチする
MatchIsKeyboard "true" # "keyboard" デバイスにのみマッチする
Option "XkbLayout" "us,cz"
Option "XkbModel" "logitech_g15"
Option "XkbRules" "xorg"
Option "XkbOptions" "grp:alt_shift_toggle,grp:switch,grp_led:scroll,compose:rwin,terminate:ctrl_alt_bksp"
Option "XkbVariant" ",qwerty"
MatchIsKeyboard "on"
EndSection
"terminate"コマンド(terminate:ctrl_alt_bksp
)はCtrl+Alt+Backspaceキー割り当てによってXセッションをキルすることが出来ます。これは、しかし、Xをみっともなく終了させます。これはユーザーにとって避けたいことでしょう。これはプログラミングが画面全体をフリーズさせてしまった時、Xorg環境を設定、調整したい時に便利です。この方法でデスクトップを終了するときには気をつけてください。大半のプログラムはこの方法での終了を好みません。全部ではないにせよ、いくつかのディスクに保存されていない情報("open documents"に保存された情報)は失われるでしょう。
"evdev" ドライバは複数のデバイス (キーボード以外も含めて) を処理することができるので、すべてのデバイスを正しく動作させるためには、セクションを一部のデバイスのみに限定することは必須かもしれません。デバイス名を指定するには MatchProduct
ディレクティブを使用してください。さらなる情報については man xorg.conf を参照してください。
XkbModel
と XkbOptions
についてのさらなる情報は、/usr/share/X11/xkb/rules/base.lst および man xkeyboard-config を参照してください。
仕上げ
startx を実行し、結果に満足しましょう。これで (うまくいけば) 動作する Xorg が手に入ったはずです! 次のステップでは、便利なウィンドウマネージャか、KDE、GNOME、または Xfce のようなデスクトップ環境をインストールしましょう。これらデスクトップ環境のインストール情報はこの wiki で見つかるでしょう。
関連項目
- Non root Xorg — describes how an unprivileged user can run Xorg without using suid.
- Wayland — a replacement for the X11 window system protocol and architecture with the aim to be easier to develop, extend, and maintain
- X (Security Handbook) - X サーバーを堅牢に保つことに関する、セキュリティハンドブックの項目。
- Xorg — X サーバのオープンソース実装です。
- Xorg/Guide — Xorg とは何か、Xorg のインストール方法、各種設定について説明します。
- Xrandr — X プロトコル拡張とその CLI ツールである xrandr は、X 内でのスクリーンの解像度と回転、およびマルチディスプレイ使用時のスクリーンを管理するために使われます
- X server — the main component of the X Window system which abstracts the hardware and provides the foundation for most graphical user interfaces, like desktop environments or window managers, and their applications.
外部の情報
設定ファイルの作成と編集
man xorg.confとman evdevが素早く、しかし完全な、これら設定ファイルに使われている文法について教えてくれるでしょう。Xorg設定ファイルを編集しているときは、これらをターミナル上で開いたままにしておきましょう!
設定例は /usr/share/doc/xorg-server-*/xorg.conf.example.bz2 にあります。
/etc/X11/中の設定ファイルを編集するにあたって、多くのオンラインドキュメントがあります。ここにはそのほんの一部しか列挙できません。検索エンジンを使い探してみましょう。
その他の資料
様々なグラフィカルデスクトップ環境やアプリケーションの設定とインストールについての情報は我々のドキュメンテーションの Gentoo desktop resources セクションで見つかります。
xorg-server 1.9 以降へアップグレードするときには、migration guide を忘れずに読んでください。
彼らの他のドキュメントに加え、X.orgはたくさんのFAQs を彼らのウェブサイトで提供しています。
This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Sven Vermeulen (SwifT) , Joshua Saddler(nightmorph)
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.