萩萩日記

世界に5人くらい存在するかもしれない僕のファンとドッペルゲンガーに送る日記

モジュラー化されたXへの移行奮闘記

そんなわけでGentooでは、モジュラー化されたXへ移行しなくてはならない時期になってしまいました。ので、モジュラー化されたXへの移行手引きを参考に、自宅のGentooマシンを移行してみました。

が、やはり当然、すぐにうまく行くほど甘くはなかったのでした。

まず、とりあえず移行してマシンを再起動したところ、/var/log/Xorg.0.logに、(メモってはないのですが)nVidiaのモジュールが読み込めない的なメッセージが出てXが起動しなくなりました。もちろん/etc/make.confには、

VIDEO_CARDS="nvidia vga"

と書いています。ただ、こないだ(モジュラー化されたXではなく、単にXをアップグレードしたとき)も同様のことが起こって、そのときはGentoo Linux nVidiaガイドを元に、

# NVmakedevices.sh

としたら、いままでなかった/dev/nvidia*が作成されて、Xも起動できるようになったものですから、今回もそれを試してみたのですが、NVmakedevices.shをしてマシンを再起動するとなんだか/dev/nvidia*が消えてしまっているのです。もちろんXは起動しません。しばらく途方に暮れていたのですが、/var/log/Xorg.0.logを見るとエラーメッセージが変わってました。

(略)
(II) Module ddc: vendor="X.Org Foundation"
  compiled for 7.0.0, module version = 1.0.0
  ABI class: X.Org Video Driver, version 0.8
Symbol fbWinPrivateIndex from module /usr/lib/xorg/modules/drivers/nvidia_drv.o is unresolved!
Symbol fbWinPrivateIndex from module /usr/lib/xorg/modules/drivers/nvidia_drv.o is unresolved!
Symbol fbWinPrivateIndex from module /usr/lib/xorg/modules/drivers/nvidia_drv.o is unresolved!
Required symbol xf86InterpretEDID from module /usr/lib/xorg/modules/drivers/nvidia_drv.o is unresolved!
Required symbol xf86PrintEDID from module /usr/lib/xorg/modules/drivers/nvidia_drv.o is unresolved!
Symbol fbPictureInit from module /usr/lib/xorg/modules/drivers/nvidia_drv.o is unresolved!
Symbol fbValidateGC from module /usr/lib/xorg/modules/drivers/nvidia_drv.o is unresolved!
Symbol fbGCPrivateIndex from module /usr/lib/xorg/modules/drivers/nvidia_drv.o is unresolved!
Symbol fbCreateGC from module /usr/lib/xorg/modules/drivers/nvidia_drv.o is unresolved!
Symbol fbCreateWindow from module /usr/lib/xorg/modules/drivers/nvidia_drv.o is unresolved!
Symbol fbWinPrivateIndex from module /usr/lib/xorg/modules/drivers/nvidia_drv.o is unresolved!
Symbol fbWinPrivateIndex from module /usr/lib/xorg/modules/drivers/nvidia_drv.o is unresolved!
Symbol fbCloseScreen from module /usr/lib/xorg/modules/drivers/nvidia_drv.o is unresolved!

Fatal server error:
Some required symbols were unresolved

早速「Symbol fbWinPrivateIndex from module /usr/lib/xorg/modules/drivers/nvidia_drv.o is unresolved!」をキーワードにGoogleで検索してみたのですが何もヒットしません。念のためと思いキーワードを減らし「Symbol fbWinPrivateIndex from module nvidia」程度にしてみたところ何件かヒットしたものの、英語ではない外国語だったりで僕の役には立ちません。Gentooのフォーラムに行って同様のキーワードで試したところ何も出てこず。こちらもキーワードを減らしてみたらhttp://forums.gentoo.org/viewtopic-t-477867-highlight-fbwinprivateindex.htmlがヒット。最後の方に書いてあった、

Try upgrading to the latest unstable nvidia-kernel and nvidia-glx. That fixed the problem for me.

を参考に、

# ACCEPT_KEYWORDS="~x86" emerge -pv nvidia-kernel nvidia-glx

してみまして再起動したところ、Xは起動するようになりました。

めでたしめでたしと思い愛用のFluxBoxを起動してみたところ、なんだかXのルートウインドーに色がついていません。なんだろうと思い、~/.xsession-errorsを見てみたところ、~/.fluxbox/startupに書いてある/usr/bin/bsetrootが見つからないようです。たしかに、このファイルは存在しません。じゃあxsetrootに変更しようと思ったところ、xsetrootが見つかりません。どうやらモジュール化で、xsetrootも別パッケージになったようです。

# emerge xsetroot

再度FluxBoxを起動したところ、うまく行きました。が、問題はbsetrootが見つからなかったことではなく、FluxBoxのスタイルファイルに、

rootCommand:      xsetroot -solid rgb:22/47/84

とあり、ここでxsetrootを使っているせいのようでした。というわけでxsetrootをインストールして事なきを得たわけですが、xsetrootにはまだ問題があって、

$ xsetroot -solid black
xsetroot:  unknown color "black"

なんてことになってしまいます。移行手引きにしたがって、Xの設定ファイルから、

RgbPath     "/usr/lib/X11/rgb"

の行をコメントアウトしたからかもしれません。xsetrootで色を名前で指定することはないので、この問題はとりあえず放置です。他で何か影響が出たらまた考えることにします。

これで大丈夫かな、と思っていたのですが、また別の問題が発覚しました。僕は自宅でGentooマシンを直接触ることはあまりなく、妻のWindowsマシンからVNCで接続して触るという、ちょっと屈折した使い方をしているのですが、VNCが起動しないのです。ちなみに使っているVNCのソフトはtightvncです。参ったなと思いながらも、今度は直接Gentooのフォーラムで、vncserverを起動しようとしたら出たエラーメッセージの先頭部分、「Couldn't open RGB_DB '/usr/X11R6/lib/X11/rgb'」を検索してみたところ、http://forums.gentoo.org/viewtopic-t-466540-highlight-rgbdb+x11r6+x11+rgb.htmlというページにたどり着きました。ナナメ読みしたところ、どうやらフォントパスがベタ書きされていることが問題のようで、/usr/bin/vncserverを修正して、

$fontPath = "/usr/lib/X11/fonts/misc/,/usr/lib/X11/fonts/75dpi/";

という行をコメントアウトしました。その上の方に、

$fontPath = "unix/:-1";

という行があり、xfsパッケージは移行手引きにしたがってインストールしておいたので大丈夫だろうと。そしたらビンゴでした。この修正で良いようです。直接ファイルを書き替えるのはちょっと気持ちが悪いですが、まあ良しとしましょう。

が、まだVNCで問題がひとつあって、VNC上のrxvtでrootになると、シェルの、

gentoo ~ #

のうち、赤で表示されるはずの「gentoo」という部分が表示されないのです(ちなみに自宅Gentooマシンのホスト名はgentooなんです。安直ですね)。VNCではなく直接Xを起動した画面(X:0)だと、ちゃんと表示されます。vimで適当なファイルを開くと、赤い部分はちゃんと赤くなってます。参りました。謎です。謎なんですが、調べるのが面倒になってきたのと、ホスト名なんか出なくても良いやいという強がる心が生まれたのとで、これまた放置することにしました。

というわけで、自宅マシンの移行は、とりあえず普通に使えるようになる程度には成功したようなのですが、問題は会社のマシンです。ちょっと、勇気がなくなってきました。とはいえ、ずっと放置しているわけにも行かないので、近いうちに移行しないといけないわけですが。

ちなみに今回は適宜エディタにコピペしながら書いてみました。そんなときに限ってFirefoxは元気です。困ったものですね。