Xorg / ガイド
Xorgは、簡単に操作可能なGUI環境をユーザーに提供してくれる、X Window serverです。このガイドでは、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は完全なネットワーク意識でもあります。つまり、アプリケーションをあるシステムで実行しつつ、それと異なるシステムで見ることが可能です。
インストール
Xrog をインストールする前に、インストールするためのシステムの準備をしてください。まず、ビデオカードとインプットデバイスサポートのためにカーネルをセットアップしてください。それから、正しいドライバと Xorg パッケージがビルドされ、インストールされるために/etc/portage/make.confを準備してください。
インプットドライバサポート
カーネル設定を変更することで event interface (CONFIG_INPUT_EVDEV) のサポートを有効化する必要があります。もしカーネル設定の方法がわからなければKernel Configuration Guideを読んでください。
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
インテルのカードについてはkernel section of the Intel articleを見てください。
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 の記事の firmware 節や新しい AMD グラフィックカード (GCN1.1 以上) に関する AMDGPU の記事の firmware 節に詳解されているようにカーネルを設定してください。
古いカード:
## (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 対応を有効化する USE=X USE フラグがあります (すべてのデスクトッププロファイルでデフォルト)。システム全体で X への対応を確実にするためには、この USE フラグが USE フラグリストに追加されていることを確認してください:
/etc/portage/make.conf
USE="X"
最初の変数はVIDEO_CARDSです。これはあなたの使おうとしているビデオカード用のビデオドライバを設定するために使われます。最もよくある設定は、NVIDIAカードにはnouveau
、ATIカードにはradeon
です。これらは活発に開発され、よくサポートされたオープンソースドライバです。新しい AMD ビデオカード(Southern Islands 以降)を持っている場合、新しい amdgpu オープンソースドライバーを試すことになるでしょう。詳細については AMDGPU の記事を参照してください。
NVIDIAとAMD/ATIそれぞれのプロプライエタリドライバ、
nvidia
とfglrx
も試すかも知れません。しかしながら、プロプライエタリドライバの設定はこのガイドの範囲を超えています。Gentoo Linux NVIDIA Guideと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
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 |
elogind
|
Use elogind to get control over framebuffer when running as regular user |
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) |
udev
|
Enable virtual/udev integration (device discovery, power and storage device support, etc) |
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
x11-base/xorg-x11 メタパッケージが、より軽量なx11-base/xorg-serverのかわりにインストール可能です。 機能の面からx11-base/xorg-x11とx11-base/xorg-serverは同等ですが、x11-base/xorg-x11はシステムが必要としないであろうたくさんのパッケージを導入します。追加のパッケージは多言語fontsの巨大な詰め合わせ を含みます。これらはX11フレームワークの動作に必要ではありません。
インストールが終了したら、続ける前に、いくつか環境変数が再初期化のために必要です。このコマンドでプロファイルをsourceしましょう:
root #
env-update
root #
source /etc/profile
設定
X serverはXorgの設定ファイルを手動で編集することなく、そのまま使えるよう設計されています。マウスや、キーボードやディスプレイといったデバイスは検出され、設定される"べき"なのです。
startxの使用を設定ファイルの編集なしに試してみてください。Xorgがスタートしなかったり、なにか問題が発生した場合、Xorgの手動設定が必要になるかもしれません。これは次のセクションで説明されます。
非 root ユーザで Xorg を実行するには、Non root Xorg を参照してください。
もしカーネルに変更を加えたら、新しくビルドされたカーネルを使うために、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がいつでも使えます。他の例はこのセクションの終わりのOther resourcesにあります。
startx を用いる
X server起動のためにstartxを試しましょう。startxは(x11-apps/xinitによってインストールされた)スクリプトで、X セッションを実行します。XセッションはX serverを起動し、その上にグラフィカルアプリケーションを起動します。それはどのアプリケーションを起動するか、以下の論理に従って決定します:
- もし、ファイル.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 serverが動いているか検証するのが簡単になります。結果に満足したら、テストパッケージを削除するにはx11-wm/twmとx11-terms/xtermを depclean しましょう。これらは実際のデスクトップ環境を構築するのに必要ではありません。
(開始すべき)セッションはstartxの引数として与えられることも可能です:
user $
startx /usr/bin/startfluxbox
さらに、X11 サーバオプションを渡すには、二重ダッシュを頭につけることで:
user $
startx -- vt7
X の設定を調整する
画面の解像度を設定する
もし解像度がおかしいようであれば、xorg.conf.dの二つのセクションを調べる必要があります。まず、X serverが実行する解像度設定を列挙しているScreenセクションがあるはずです。このセクションは解像度全てを列挙しているわけではないでしょう。その場合、Xorgは次のセクションMonitorの情報に基づいて解像度を推定します。
さあ、解像度を変更しましょう。/etc/X11/xorg.conf.d/40-monitor.confからの次の例では、X serverがデフォルトで1440x900で開始するようPreferredMode
を追加します。Device
のOption
セクションはxrandrの実行によって得られるモニタ名前(DVI-0
)に一致しなければなりません。xrandrをインストール(emerge xrandr)し、情報を得ましょう。モニター名後の引数(Device
セクション中)はMonitor
セクションの中のIdentifier
に一致する必要があります。
/etc/X11/xorg.conf.d/40-monitor.conf
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モニターの設定方法を示します。
/etc/X11/xorg.conf.d/40-monitor.conf
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/中に適切な設定ファイルをつくりましょう。この例はチェコ語キーボードレイアウトについて示します。
/etc/X11/xorg.conf.d/30-keyboard.conf
Section "InputClass" Identifier "keyboard-all" Driver "evdev" 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"に保存された情報)は失われるでしょう。
XkbModel
と XkbOptions
についてのさらなる情報は、/usr/share/X11/xkb/rules/base.lst および man xkeyboard-config を参照してください。
仕上げ
startxを実行し、結果に満足しましょう。おめでとうございます。あなたは今や(うまくいけば)動作するXorgをもっています! 次のステップではKDE, GNOME, や Xfceのようなデスクトップ環境あるいは便利なウィンドウマネージャをインストールしましょう。これらデスクトップ環境のインストール情報はこのwikiで見つかるでしょう。
関連項目
- Wayland — a simpler and modern replacement for X display server.
- X (Security Handbook) - Xサーバーを堅牢に保つためのセキュリティハンドブック。
外部の情報
設定ファイルの作成と編集
man xorg.confとman evdevが素早く、しかし完全な、これら設定ファイルに使われている文法について教えてくれるでしょう。Xorg設定ファイルを編集しているときは、これらをターミナル上で開いたままにしておきましょう!
設定例は /usr/share/doc/xorg-server-*/xorg.conf.example.bz2 にあります。
/etc/X11/中の設定ファイルを編集するにあたって、多くのオンラインドキュメントがあります。ここにはそのほんの一部しか列挙できません。検索エンジンを使い探してみましょう。
その他の情報
様々なグラフィカルデスクトップ環境やアプリケーションの設定とインストールについての情報は我々のドキュメンテーションのセクションで見つかります。
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) ,
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.