ptexlive を IBM ThinkPad X40 FreeBSD 6.2-RELEASE に組込んだら ttf2tfm などが 7.0 でビルドされていてリンクエラーとなった,ということもあり,2 年ぶりくらいにバージョンアップすることにした。X40 はフロッピーも CD-ROM ドライブも付いてないので,今回も pxeboot でネットワークインストールを行った(最近の FreeBSD には USB メモリ・スティックに boot loader を格納してインストールする手段もある)。まず 7.2-RELEASE を入れたんだけど,インストール後の設定ドキュメントを FreeBSD サイトで調べていたら,なんと 8.0 がリリースされていることがわかり,7.2 から freebsd-update まで実行しなければならなかった。
今回悩んだのは,いつものとおりというか,やはり X11 の設定であった。前回と同様に Xorg -configure で自動生成した config を X -config xorg.conf.new で試験するとエラーで落ちる。この config にはスクリーン定義が 2 セットあって,要するにマルチスクリーンが前提のようなコードになっていた。これをひとつに減らして,再度実行。ところが真っ黒な画面が出てマウスを動かしてもウンともスンとも反応しない。6.2 のときは Intel i810 ビデオチップ用のドライバを使っていたが,どうも Xorg の新しい版では intel ドライバに統合されてなくなっていた。これが原因と考え,なんとかうまく動かす方法を Google で探しまくったが,まるで見当たらない。ええ?,こんなメジャーなビデオチップが動かないなんてノート PC じゃ使えないも同然じゃねえかと,FreeBSD の暢気モードが少し頭に来たところであった。
新しい Xorg 7.4 を FreeBSD 7 以降で動かすには,/etc/rc.conf に
dbus_enable="YES" hald_enable="YES"
を書いておくというのは,調べがついていた(moused_enable="YES" 行があれば,これをコメントアウトしておくこと)。これを追加してリブートしてもブラック画面が出る。試しに,X -config xorg.conf.new ではなく,config なしでいきなり startx を入れたら,なんとすんなり動いて twm のあの飾り気のないターミナルがふたつ現われた。つまり・・・ブラックアウトしているように見えた画面は,ひとつも X クライアントを起動していない X11 の地に過ぎないというわけだったのである。それなら真っ暗な画面にしないで少しは色気を出せよ!とまあ怒りが頂点に達したところで,このブラックユーモアに充ちた不親切さこそ UNIX だと改めて合点がゆき,その後はひとり笑い転げる始末であった。
改めて FreeBSD Handbook を読むとちゃんと書いてある。きちんとドキュメントを読むこと。少なくとも ISO 8859-1 英語版(日本語版はメンテナンスがまったく追い付いておらず,FreeBSD 最新版に関しては記述が信用できない)の FreeBSD Handbook と /usr/ports/UPDATING には必ず目を通すこと。
Starting with Xorg 7.4 and above, this test produces a black screen which may make it difficult to diagnose whether X11 is working properly. The older behavior is still available by using the retro option:# Xorg -config xorg.conf.new -retro
いま,井原西鶴の『好色五人女』を読みながら,愛用のアプリをしこしこ導入しているところである。面倒な Java と Emacs は夜中に実行・放置を目論む。なんか年末・年初は LaTeX,FreeBSD と大物のインストール大会になってしまった。大いなる時間の無駄だけど,どうせまた 2 年はこの版と付き合うのだろうから,しようがない。
[※ 1/13 付記]
その後,hald が CPU を占有してしまうという問題が発覚し,hal-0.5.13_12 にバージョンアップすることでこれが解消された。しかし,このため,ports-current への入換え,依存関係パッケージの更新にえらい時間がかかってしまった。FreeBSD をインストーラで導入した直後に,FreeBSD の ftp サイトから最新 ports をダウンロードして,入換えておくことを強くお勧めする。この場合,インストール・パッケージの少ない時点で portupgrade -a -r を実行しておく。その後に愛用のアプリをインストールしよう。
もうひとつ注意事項。hald,dbus 環境では,CapsLock と Ctrl キーを入換えるなどの定義は,従来のように xorg.conf の XkbOptions 設定や xmodmap では効かなくなった。/usr/local/etc/hal/fdi/policy/ 下に xxxxx.fdi (xxxxxx は任意) というファイルに,以下のような XML を書いておかないといけない。
<?xml version="1.0" encoding="ISO-8859-1"?> <deviceinfo version="0.2"> <device> <match key="info.capabilities" contains="input.keyboard"> <merge key="input.x11_options.XkbOptions" type="string">ctrl:swapcaps</merge> </match> </device> </deviceinfo>
これは私の X40 英語キーボードの場合である。106/109 日本語キーボードの場合は <merge key="input.x11_options.XkbModel" type="string">jp106</merge> も,XkbOptions 設定行とともに必要である。