_ FreeBSD導入記で予告しましたとおり、今回はX window systemについて書いてみます。は?Xについて果たして書けるほどわたしはわかってきたのか??……という不安はとりあえず置いといて、感想や経験談として進めましょう。
X window systemとはPC-UNIXで使われるGUIなシェルです。要するにWindowsみたいなもんです(かなり乱暴かな)。正式には「XFree86」と呼ばれていて、現在の最新バージョンはX11R6の3.3.2のようです。FreeBSDやLinux系のRedHat, Slackware, TurboLinuxで使われています。XをインストールしてないUNIXはすべてコマンドシェルで動かすことになりますので、DOSみたいな真っ黒画面でプロンプトに対してせっせとコマンドを入力するしかありません。マウスとは無縁のキーボードオペレーションですので「適当にマウスでつついてみる」という直感的な操作ができません。
ところがいったんXをインストールして起動できると、画面に色がつき、マウスカーソルが現れ、アイコンが出現し、視覚的にもマルチタスクが感じられるようになります。先述の真っ黒画面(コンソール画面)も実はDOSとは違ってマルチタスクであり、その証拠に何かアプリがフリーズしてもAlt+F2,F3,F4とかやってあげるとちゃんと「login: 」って出てきてくれてシステムに入っていくことができます。死んでいるプロセスがもしあったら「ps」でプロセスの番号を調べて「kill プロセス番号」で強制終了が可能です。これがDOSだと、何か一個死んだらリセットボタン押すしかなくなります。Windows95が疑似マルチタスクといわれるのは、フリーズしたときWindowsもいっしょに死んでしまうことが多いからなんでしょう。Windows95でアプリが応答しなくなったらctrl+alt+delでそのアプリだけ強制終了できることはまれで、落とすと標準シェルのエクスプローラまでリフレッシュされてしまうことが多いですね。ひどいときはブルーバックになりますし、さらにenterキー押すと真っ黒画面でマウスだけ動いているみたいな状況に陥ったことがあるのは、多分私だけではないでしょう。
UNIXのシステムはプロセスが異常終了すると、基本的にはcoreファイルを吐いてそのプロセスのみが消えほかのプロセスには影響を与えません。ですからX window system上で異常終了が起きたとしても、まずX window自体が落ちるということは有り得ません(少なくともわたしは経験したことがない)。コンピュータ関係のコンファレンス会場に行ったりするとよくNTやSolarisなんかの堅牢性が強調されてたりしますが「堅牢」っていったい何のこと??ってよく思ったものですが、こういうことを指して言っているのだと、最近になって合点できるようになってきました。
さて、いったん立ち上がってしまえば堅牢なX windowですが、立ち上げるまでがなかなかの難関です。RedHatとかのPC-UNIX商用パッケージならインストーラが次々に質問攻めをしてくるので、それに的確に答えを入れてあげれば難なくXの起動にまでこぎつけることができます。ただしビデオ周りの自動検出はアテにならないことが多いので、あらかじめ使われているビデオチップの名前・モニターのリフレッシュレート・ビデオメモリの容量などは調べておいたほうが無難でしよう。Windows95みたいにメーカーが作ってくれたドライバを組み込んでやる……というやり方はできませんので、Xの設定をやってみるといかに自分がビデオ周りのことを知らなかったかが痛感できます。
コンソールしか使えないまっさらのUNIXにX windowを入れるには、具体的には次の手順が必要になります。
ビデオカードに対応したX serverのバイナリを/usr/X11R6/binにコピーする。
/etc/X11(または/usr/X11R6/lib/X11)ディレクトリにXF86Configという名前で設定ファイル(テキスト)を作る。
X serverに対して「X」という名前でシンボリックリンクを張る。
startxやxinitコマンドでXを起動する。
以上でX window systemが動くようになります。項目にするとたった四つですが、すべて手動でやることはまずありません。ほんもののUNIX使いの人は手動でやるのかもしれませんが、PC-UNIXのパッケージではそれぞれツールがついていまして、大部分を勝手にやってくれます。しかし、この「勝手」がなかなかの曲者です。選んだとおりの解像度・選んだとおりの色数・正しく真ん中にウィンドウが現れる……というのはまれです。一発でうまく行ったのは、自分の経験ではS3のTrio64V+を800*600で設定したときだけでした。あのときもXを再起動しないとマウスカーソルが出てこないという不完全なものでした。
一番目のX serverのコピーは、インストーラで配布ファイルを選択することで簡単にできます。ここではビデオカードの商品名はぜんぜんあてにならないので、チップのメーカーとできれば型番を知っておくことが重要です。先述のS3とかATIとかCirrusLogicとかです。
次の設定ファイルですが、ここが難関になります。ツールとしては「XF86Setup」とか「Xconfigurator」とかですね。XF86Setupは不用意にマウスを動かしたりすると反応しなくなったりするので、キーボードを頼りにさきにマウスの設定を済ませる……とかちょっとコツがいります。この設定画面自体がすでにVGAのXです。PC9800シリーズでは標準立ち上げで640*400なのでこれすらできず、テキストベースの/usr/X11R6/bin/xf86configを使うよりなかったことが思い出されます。マウスの設定が終わってもマウスカーソルが動かない!なぜ?というところも難関の一つです。デフォルトではマウスは無効になっているので再起動しなくてはなりません(FreeBSDのバージョンやLinuxではデフォルトでもマウスが使えたかもしれない)。
FreeBSDの起動時に「boot:」と何秒間かプロンプトが現れますが、ここですかさず「-c」と入れてあげます。そうするとカーネルの読み込みがCPUとメモリレベルで止まり、各種デバイスドライバの設定変更ができる状態になります。CONFIG> というプロンプトが出ているところで「enable psm0」とやってあげればps/2マウスが有効になります。ドライバの設定一覧は「ls」、ヘルプは「?」です。ううっ、ヘルプも全部英語ですね^^;。でも気合入れて睨んでいればきっとわかるはずです。設定モードはexitで抜けます。ここで行った設定は次回からもずっと有効になります。なおPCIのデバイスは設定変更はできません。やるならBIOS側ですね。
さてここで気を取り直してふたたび/usr/X11R6/bin/XF86Setupです。マウスに触らないように気を付けながら、キーボードでマウスの設定を変更します。「apply」ボタンにtabキーでたどり着いてスペースキーを押すと、さあマウス解禁です。カーソルが動くようになります。キーボードの設定は日本語106や英語101を選ぶだけです。そして、次にビデオカードの設定とモニターの設定になります。ここは一番面倒だったりするので、次回の「後編」で詳細に触れてみたいと思います。
設定がすべて終わったら「Done」ボタンをクリックします。行った設定でXが起動できるかどうかのテスト画面となります。うまく行けば/etc/(X11/)XF86Configに設定を保存するかどうかを聞いてくるので保存します。うまく行かないときは……聞いてくる画面そのものが出ないんですね~。だから保存のしようがないっす^^;。だからXF86Setupのマウス設定からまたやりなおしです。うまくいけば次からは「startx」または「xinit」で X window system が立ち上がるはずです。めでたし、めでたし。X serverへのシンボリックリンクは、ユーティリティのバージョンによっては自動で張ってくれますが、張ってくれなくて X が立ち上がらないときは手動でシンボリックリンクを張りましょう。
サーバーがない!というメッセージが出て起動しない場合は、ビデオカードに対応したバイナリファイル(たとえばS3のvirge系ならXF86_S3V)をインストールする必要があります。これは/stand/sysinstallで、カスタム選択で配布ファイルを選べば追加インストールできます。……と一言でいっても、実はここにもたくさんの難関が待ちうけていますが、その辺も次回に回しましょう。
こうしてせっかく立ち上がってくれた X window system ですが、最初から自分のイメージどおりということはほんとうにまれで、たいていは「画面が大きい」「画面が小さい」「画面が右過ぎ」とか「色がおかしい」「歪んでる」「端で折り返してる」とか、改善の余地ありです。チューニングは手動でも・別のユーティリティーを使ってでもできます。そこらへんもまた次回ということで、……なんか後編のほうが書くことむちゃくちゃ多かったりして……。ま、気を長くしてお待ちください。5月の連休くらいまでには何とか書きたいと思います。