Gentoo Logo

モジュラー化されたXへの移行手引き

目次:

1.  はじめに

なぜモジュラー化なの?

1つでよかった簡単なxorg-x11パッケージが、一体どうしておよそ300の別々のものに切り替わってしまったのかと不思議に思うかもしれません。 そして、きっと納得するでしょう。=) これはGentooが上流のX.Orgと関係なく行っていることではありません。 X.Orgはすべてのパッケージを個別のリリースに分割しており、Gentooはそれに従っただけです。

ビルドシステムの変更と分割の根拠には、少なくとも以下の3つがあります。

  • 新規の開発者がXを習得するは極めて困難です。よって、たとえ気に入らなくても、より多くの人々が快適になるシステム、autotoolsへ移行しました。
  • 移行にともなってautotoolsを使ってソースの分割が可能になり、そして開発者が扱いやすいようにもなります。
  • これまでは不必要なものも一緒になっており、しばしばバグ修正することができなくなっていました。 修正できたとしても、XOrgのすべてを再構築する必要がありました。 例えば、atiドライバのバグは、まったくそれをする理由がなくても、次のリリースまで6ヶ月待たなければいけないか、それを修正するがためにフォントを再構築する必要がありました。

2.  モジュラー化Xへの移行

はじめに

古いパッケージへの介入を防止するために、モジュラー化Xをインストールする前に、すべての古いxorg-x11のゴミを一掃します。 これはまったく重要なことではありませんが、円滑に移行がしやすくなります。

第一段階: 古いXの一掃

モジュラー化されたXが満足に動作しなかった場合や、バージョン6.xに戻りたい場合に備えて、 分割されていないxorg-x11のバックアップを作成します。

コード表示 2.1: 古いxorg-x11のバックアップ

# emerge gentoolkit
# quickpkg xorg-x11

インストール済みの分割されていない方を取り除いてください。 クラッシュやハード的なロックの危険性をさけるため、 X.orgをアンインストールするまえに、起動しているXセッションを停止したほうがよいでしょう。

コード表示 2.2: 分割されていないXorgのunmerge

# emerge -Ca xorg-x11 virtual/x11

/usr/X11R6/usrへのシンボリックリンクでないなら、それを削除してゼロから始めてください。 ですが、まずそこにインストールしてあるすべてのパッケージのリストを記録してください。equerygentoolkitパッケージにあります。

コード表示 2.3: パッケージリストの作成

# if [[ ! -L /usr/X11R6 ]]; \
	then equery belongs /usr/X11R6 > ~/usr-x11r6-packages \
	&& rm -rf /usr/X11R6; fi

/usr/lib/X11/xkb (64bitユーザの場合は/usr/lib64/X11/xkb) が存在する場合には、最後に削除してください。 削除はxkeyborad-configパッケージのインストール要件です。

第二段階: モジュラー化Xのインストール

stable環境で動かしていて、希望のモジュラーXのバージョンが使用しているアーキテクチャ上でまだstableになっていない場合、 必要なパッケージを/etc/portage/package.keywordsに加えてください。 パッケージリストをダウンロードし、好みのエディタで開いてください。 そして、モジュラー化されたXの全てのマスクされているパッケージをpackage.keywordsにコピー・ペーストしてください。 意味がわからないなら、マスクに関するハンドブックのセクション(日本語訳)を読んでください。

注意: もしバイナリドライバを使っている、もしくはバージョン7.0ではなく7.1を使う何らか理由がないのであれば、 上記の作業は行わないでください。バイナリドライバはまだ、X.Org 7.1と互換性がありません。

stable環境のユーザがpackage.keywordsに必要なその他パッケージ
>=sys-apps/portage-2.1_pre4
=sys-apps/man-1.6b-r2
app-admin/eselect-opengl
>=app-admin/eselect-1.0_rc1
media-video/nvidia-kernel
media-video/nvidia-glx

ダイレクトレンダリングを使用するには、driのUSEフラグを有効にしてください。 デフォルトでは有効になっているはずです。

次に、どのドライバのインストールが必要か判定してください。 使用環境の入力装置とvideoハードウェアによってさまざまです。 すでに動作している/etc/X11/xorg.confがあるなら、どのドライバが必要かを把握するために以下のコマンドを実行してください。

コード表示 2.4: どのドライバが必要かを調査

# grep Driver /etc/X11/xorg.conf
		Driver      "kbd"
		Driver      "mouse"
		Driver      "radeon"

コード表示 2.5: 利用可能なドライバの確認

# emerge --verbose --pretend xorg-x11
[ebuild   R   ] x11-base/xorg-x11-7.0-r1  USE="-xprint" INPUT_DEVICES="keyboard
mouse -acecad -aiptek -calcomp -citron -digitaledge -dmc -dynapro -elo2300
-elographics -evdev -fpit -hyperpen -jamstudio -joystick -magellan -magictouch
-microtouch -mutouch -palmax -penmount -spaceorb -summa -synaptics% -tek4957
-ur98 -vmmouse -void" VIDEO_CARDS="i128 mga radeon savage -apm -ark -chips
-cirrus -cyrix -dummy -fbdev -fglrx% -glint -i740 -i810 -imstt -mach64 -neomagic
-newport -nsc -nv -nvidia% -r128 -rendition -s3 -s3virge -siliconmotion -sis
-sisusb -sunbw2 -suncg14 -suncg3 -suncg6 -sunffb -sunleo -suntcx -tdfx -tga
-trident -tseng -v4l -vesa -vga -via -vmware -voodoo" 0 kB

/etc/make.confに必要なものをINPUT_DEVICESとVIDEO_CARDSに設定してください。 上記の例での最小限の設定は、INPUT_DEVICES="keyboard mouse" VIDEO_CARDS="radeon"です。 これらの変数のどちらか一方を設定しないと、xorg-x11はその種類のドライバすべてを取り込みます。 予備のドライバとして、vesafbdevをVIDEO_CARDSに追加してください。

ここで以下のようにしてmetabuildをインストールしてください。 これはサーバとXのデスクトップ機能を提供する主要なアプリケーションをインストールします。

コード表示 2.6: モジュール化metabuildのインストール

# emerge xorg-x11
# etc-update
# revdep-rebuild
# [[ -e ~/usr-x11r6-packages ]] && emerge  $(<~/usr-x11r6-packages)

注意: 最小構成が必要なだけならxorg-serverのみをインストールしてください。 これにより、Xサーバを起動するのに必要なものだけに抑えることができます。

xorg-x11のemergeでは、より最小構成にしようとするので、xcursor-themesのようなものはデフォルトではインストールされません。一つの例としては、カーソル設定をwhiteglassやredglassやhandheldsに変更していたなら、xcursor-themesが必要でしょう。 gentooを使うなら、gentoo-blueやgentoo-silberのカーソルテーマがある、gentoo-xcursorsをインストールしましょう。

注意: モジュラー化でインストールすると、いくつかのvncアプリもnvidia-glxやwacomのような外部ドライバも、/usr/lib/xorg/modulesの代わりに/usr/lib/modulesに何かをインストールしていると、動作しないでしょう。 これらのうちの多くは、インストール処理にモジュラー化Xの検知処理が追加されています。 したがってモジュラー化Xをインストールした後に再度mergeされる必要があります。 加えて、多くの外部ドライバにはdlloader USEフラグがあり、 有効にしドライバをリビルドする必要があります。

3.  注意事項/よくある問題

'emerge -u world'をするとxorg-x11 6.x やvirtual/x11をインストールしようとします

まだportageツリーがモジュラー化の依存関係に修正されていないためです。 Portingto Modular X HowToを読んで、 各パッケージのメンテナにパッチを添えたバグを提出することでポーティング作業を手伝うことができます。 メンテナはパッケージと同じディレクトリにあるmetadata.xmlに記述されています。herdstatパッケージでメンテナをより早く検索できます。

特にstable環境以外でモジュラー化Xを動かしている場合、これにまつわる問題に遭遇するかもしれません。 多くのパッケージは、~archバージョンでしかモジュラー化Xとともに動作しません。 よって、/etc/portage/package.keywordsに別途必要なパッケージを追加する必要があるでしょう。

すべてのUSEフラグはどうなりましたか?

xorg-x11-6.8系での多くのUSEフラグは、7.0では廃止されたか移動になりました。 いくつかの新しいUSEフラグが以下の理由により登場しました。

USEフラグ 7.0でどうなったか
3dfx 7.0では、xorg-x11 metabuildからglide-v3を取り込みます
3dnow、mmx、sse 実行時のチェックがあるので、デフォルトでビルド時に有効にされています。
bitmap-fonts、truetype-fonts、type1-fonts xorg-x11 metabuildはよく使用される小さなフォント集や必要なフォントを取り込みます。 他のものはすべてmedia-fonts/に追加でインストールしてください。
cjk font-misc-miscやfont-sony-miscでUSE=nlsを使用すると日本語JISX0201フォントを取得します。 さらにはfont-jis-miscにあります。 中国語フォントはfont-isas-miscにあります。 韓国語フォントはfont-daewoo-miscにあります。
dlloader 7.0はデフォルトでdlloaderを使用し、elfloaderは動作しません。
doc app-doc/xorg-docsに移動されました
dmx USE=minimalでなければxorg-serverに組み込まれています
font-server 手動でxfsをインストールしてください。
ipv6 これを使う個々のパッケージに移動されました。必要ならグローバルにセットしてください。
minimal 同じ効果を得るには、xorg-x11ではなくxorg-serverをインストールしてください。 Xdmx、Xvfd、Xnestをビルドしないためにはxorg-serverでUSE=minimalを使用してください。 より最小構成なものが必要なら、x11-base/kdriveを調べてください。
nls 7.0では、USE=nlsはフォントの非ISO885901バージョンのすべてをインストールします。
nocxx 7.0ではまだ同等ではありません
opengl xorg-serverと多くのドライバにダイレクトレンダリング機能を有効にする"dri"に名前が変更になりました。 USE=driの有無にかかわらず、まだMesaによるソフトウェア3Dを使うべきです。
pam xorg-serverやxdmのような、これを使用する個々のパッケージに移動されました
sdk モジュラー化の結果として7.0はSDKをインストールしなければいけません。
static ドライバが組み込まれることはないので、モジュラー化された状況では、たいていはそれほどスタティックサーバをビルドする意味がありません。
xprint metabuildにlibXpが組み込まれています。 他のアプリケーションではxprintサポート付でビルドされます。 ほとんどの人はこれを有効にしようとは思わないでしょう。
xv それほどサイズを節約しないし、これを期待するいくつかのパッケージで問題が起きるので、もうオプションではありません。

全ての設定ファイルはどうなりましたか?

GentooのX.Org 6.8パッケージでは、すべての設定ファイルやスクリプトは、/etc/X11に配置されていました。 モジュラー化されたX.Orgでは、これらのファイルが配置される場所が変更されました。 設定ファイルはまだ/etc/X11内にありますが、スクリプトやデフォルトの設定は今、/usr/lib/X11 (または lib64)や/usr/share/X11内にあります。

設定の保護 (CONFIG_PROTECT)のため、おそらくX.Org 6.8からの全ての古い設定ファイルがまだ/etc/X11にあるでしょう。 それらは、場所を取るが役に立つように見えます。

これらのディレクトリがCONFIG_PROTECTから外れた後は、デフォルト設定に対する変更は、関係するファイルを/etc/X11にコピーし、適切な設定ファイルを更新することにより行われる事は重要です。 代わりに、推奨されませんが、新しい場所をCONFIG_PROTECTの対象にすることはできます。 以下に二つの例を示します。

コード表示 3.1: XDMの初期化をカスタマイズする


最初にファイルXsetup_0を/etcにコピーしCONFIG_PROTECTの対象にします。

# cp -a /usr/lib/X11/xdm/Xsetup_0 /etc/X11/xdm/

ファイルを編集し、望みのカスタマイズを行ってください。


xdm-configを編集し、パスがこのファイルを指すようアップデートしてください。

# nano /etc/X11/xdm/xdm-config

このファイルを編集して、

	! The following three resources set up display :0 as the console.
	DisplayManager._0.setup:        /usr/lib/X11/xdm/Xsetup_0
	DisplayManager._0.startup:      /usr/lib/X11/xdm/GiveConsole
	DisplayManager._0.reset:        /usr/lib/X11/xdm/TakeConsole

以下のようにします。

	! The following three resources set up display :0 as the console.
	DisplayManager._0.setup:        /etc/X11/xdm/Xsetup_0
	DisplayManager._0.startup:      /usr/lib/X11/xdm/GiveConsole
	DisplayManager._0.reset:        /usr/lib/X11/xdm/TakeConsole

注意: amd64のmultilibシステムをno-symlinksプロファイル上で用いている場合、libをlib64へ変更する必要があります。

コード表示 3.2: app-defaults/XTerm-colorをカスタマイズする


/etc/X11内の設定ファイルで、app-defaults のパスが定義されている場所がわからなかったので、


XTerm-colorへの変更を保護するために


/usr/share/X11/app-defaultsをCONFIG_PROTECTの対象にします。


/etc/make.confを編集します。

# nano /etc/make.conf

そして適切にCONFIG_PROTECTを設定します。

	CONFIG_PROTECT="/usr/share/X11/app-defaults"

ドライバの問題

以下の報告を受けています。

  • Matroxカードでvesaドライバを使用すると固まります
  • vgaドライバは、4分割されたおかしな画面になります。
  • バイナリドライバがX.Org 7.1では動作しないことがしられています。しかし、7.0 では動作します。

再度3Dアクセラレーション機能を有効にする

ダイレクトレンダリング機能させるのに役立つデバッグ情報を見るには、以下のようにします。

コード表示 3.3: デバッグ情報の取得

# grep -e EE -e WW /var/log/Xorg.0.log
# LIBGL_DEBUG=verbose glxinfo

マウスのプロトコル自動検出

マウスのためにxorg.confに"Protocol" "auto"を設定している場合、それは動作しないでしょう。 ホイールを動作させるには"Protocol" "ExplorerPS/2""IMPS/2"を指定する必要があるでしょう。

libbitmapかlibpcidataが見つからないことに関するエラーメッセージが表示されました

/etc/X11/xorg.confModulePath項目が存在しないことを確認してください。

gdm/kdmが動作しません

新規にインストールされたGentoo上にモジュラー化Xをインストールした場合は、/usr/X11R6 -> /usrのシンボリックリンクがないかもしれません。 x11-base/xorg-x11パッケージはemergeの処理中にシンボリックリンクの存在を確認します。

/usr/X11R6にインストールするパッケージを修正してバグを提出することで、/usr/X11R6以外の情報を得やすくなります。 そして、これらのパッケージを再インストールすることを忘れないで下さい。

コード表示 3.4: /usr/X11R6にインストールされるパッケージ

# cat ~/usr-x11r6-packages
# emerge --pretend $(< ~/usr-x11r6-packages )

XKBが動作しません、VT(仮想端末)を切り替えることができません、など

  • 多くのXKBレイアウトは、統合されるか消去されてあちこちに散らばりました。 xorg.confの古いXkbLayout設定がどうなったかを確認するには/usr/share/X11/xkb/symbols/内を探してください。 例えば、旧"us_intl"レイアウトを置き換えるには"XkbLayout" "latin""XkbOptions" "lv3:ralt_switch"にします。 旧"sk_qwerty"レイアウトを置き換えるには"XkbLayout" "sk""XkbVariant" "qwerty"にします。 もっと上級な例では、"XkbLayout" "us,sk_qwerty"の設定をしているかもしれません。 それを動作させるには、新しい設定は"XkbLayout" "us,sk"になります。 次のようなコンマには注意を必要とする役割があります: "XkbVariant" ",qwerty"。 これはvariantを2つ目のレイアウトに適用させたい場合です。

コード表示 3.5: XKBの変更を追跡する

以下のメッセージがないか/var/log/Xorg.0.logをチェックしてください。
(WW) Couldn't load XKB keymap, falling back to pre-XKB keymap
このエラーがなければ、XKBはすでに動作しています。
# grep Xkb /etc/X11/xorg.conf
        Option "XkbModel"  "logibik"
        Option "XkbLayout"  "dvorak"
        Option "XkbOptions" "ctrl:swapcaps"
最初に、レイアウトで何が変更になったかを確認してください。symbols/pcディレクトリです。
# cd /usr/share/X11/xkb/symbols/
xkeyboard-configの代わりにxkbdataがインストールされているなら、サブディレクトリpc/に移動してください。
# ls *dvorak*
はい。何も表示されません。
多くの古いレイアウトはその国を示すキーマップに移動されました。
# ls *us*
us
ここで、xkb_symbols用のdvorakというvariantを確認します。
# grep xkb_symbols.*dvorak us
xkb_symbols "dvorak" {
これはxorg.confにOption "XkbLayout" "us"とOption "XkbVariant" "dvorak"が
必要であることを意味します。

しかし、setxkbmapでこれをテストしてみると、まだエラーになります。
# setxkbmap -model logibik -layout us -variant dvorak -option "ctrl:swapcaps"
たぶんモデルも変更になっています。
# cd /usr/share/X11/xkb/rules/
# grep logibik xorg.lst
そのモデルはなくなったので、何も表示されません。似ているものについてはどうだろう。
# grep logi* xorg.lst
  logiaccess      Logitech Access Keyboard
  logicdit        Logitech Cordless Desktop iTouch
  logicdp         Logitech Cordless Desktop Pro
  logicdpa        Logitech Cordless Desktop Pro (alternate option)
  logicdpa2       Logitech Cordless Desktop Pro (alternate option2)
  logicdo         Logitech Cordless Desktop Optical
  logicfn         Logitech Cordless Freedom/Desktop Navigator
  logicdn         Logitech Cordless Desktop Navigator
  logidak         Logitech Deluxe Access Keyboard
  logiitc         Logitech iTouch Cordless Keyboard (model Y-RB6)
  logiik          Logitech Internet Keyboard
  logiitc         Logitech iTouch Cordless Keyboard (model Y-RB6)
  logiik          Logitech Internet Keyboard
  logiink         Logitech Internet Navigator Keyboard
  logiultrax      Logitech Ultra-X Keyboard
よし、"logiik"モデルが近いようなので、setxkbmapで実際に試してみます。
# setxkbmap -model logiik -layout us -variant dvorak -option "ctrl:swapcaps"
動きました。よってXkbModelエントリをそのように変更します。
これでうまく動作します。

その他の問題

  • 現在のx11-base/xorg-x11パッケージは、/etc/X11/xorg.confからModulePathとRgbPathのすべての行が取り除かれています。 それら両方のパスが以前のバージョンから変更になっているためです。 これらの変更を行うためにetc-updateを必ず実行してください。 何らかの理由により、これらが取り除かれていない場合は、自分で取り除いてください。


印刷

ページの更新日 2006年 1月 2日

要約: このガイドはモジュラー化されたX.Orgに移行する方法を示します。

Donnie Berkholz
Author

Joshua Baergen
Author

五十嵐 正尚
翻訳

Takeshi Matsuba
翻訳

Shindo Naoaki
翻訳

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.