私の所属する研究室では、Windows95を動かすには性能が不十分なために利用者が少なくなった古いPCを、X端末として復活させて使っています。ここでその方法を説明します。設定がとても簡単で、かなり便利に使えますので、お勧めです。
OSには FreeBSD を使いました。FreeBSDはPC互換機用のBSD UNIXオペレーティングシステムで、非常に多くの人に利用されているそうです。
あなたはだいたい 人目のお客様です。(1998年2月7日以降)
サーバに使うOS、デスクトップ環境のOS
PC UNIX比較メモ
X端末として、ある特定のワークステーションのxdm(X Display Manager)に接続し、そこそこの性能のX窓環境を提供することを目標にします。そのために、次のような作業を行ないます。
高いグラフィックス性能を要求するような仕事、たとえば3Dグラフィックスとかアニメーションとかは考えないことにします。古いPCにそこまで期待するのは酷です。
OSのインストール法の詳細は、このページでは説明しません。 FreeBSDのインストール方法について詳しく説明しているページや雑誌が沢山あるのでそちらを探して下さい。(いぢめないで :-)
私の所属する研究室では、1995年に買った486PCを2台、X端末にしています。 (私が毎日使っているCompaq PRESARIOより高いスペックなんだよなぁ ^^;; 今も可愛いサリオちゃんを使ってHTMLを書いています。)
X端末にすることを考えているので、以下の点に注意します。
/var
パーティショ
ンを作りません。/var
が無いと文句を言われますが、X
端末に徹するPCにするつもりなら気にしないことにします。
ディスクの容量さえ十分にあれば、インストール自体はとても簡単だと思います。あぁ、NICのIRQとかポート番号とかを調べたり設定したりが大変かなぁ。 NICを買ったときに付いて来るDOSベースのユーティリティなどがあれば、それを使って調べたり設定したりできるので簡単なんですが…。
FreeBSDは様々な状況での利用に耐え得る高い機能と性能を誇っていますが、今回はX端末として使うのですから、必要の無いと思われるサービスはばっさばっさと削っていきます。とくにネットワーク関連のサービス(デーモン)は、ほとんどを止めてしまいます。
/etc/rc.conf
を編集し、..._enable="YES"になっているところを片っ端から"NO"に書き換えていきます。私の設定では、次のサービスを残して他を止めました。
(実は印刷サーバを兼ねているマシンがあり、それではlpd を動かしています。後で説明します。)
inetdも止めたので、telnet, rlogin, FTPなど、inetdから間接的に提供されるサービスも利用できません。つまりネットワーク経由でOS の設定を変えることはできません。これでは不便だと思う方は、適当に対処して下さい。私の場合はSsh (Secure Shell)を入れることで対処しました。(ssh-1.2.21以前にはセキュリティに絡むバグがあるそうなので、ssh-1.2.22以降を利用しましょう。)
もうひとつ、cronも止めてしまいましたので、ログを回す機能が止まります。長い間使い続けているとログがふくれ上がってディスクがいっぱいになるかもしれませんが、私は「その時はその時」と思い、対処しないことにしました :-)。X端末だから気にしなくていいの! (本当か?)
あれこれ重要そうなサービスを止めているわりには、xntpd を動かしています。これは私の趣味ですので、気にしないで下さい。X端末の時計が多少狂っていてもさして困らないでしょうから、xntpdを止めてもいいと思います。
X窓を開けるように設定します。Xクライアント(xtermなど)はX端末上では動かしませんので、Xサーバの設定さえきちんとすれば十分です。
X Window Systemのサーバの設定には、X端末にするかどうかに関わらず、 XF86Setupを利用するのが便利です。
FreeBSDのインストール法や設定法を説明するのはこのページの主旨ではないので、XF86Setupについてもここでは述べませんが、簡単ですのでやってみて下さい。
FreeBSD 2.2.5 Errata NotesによるとXF86Setup にはバグがあり、リンクが既に存在している場合をのぞき、/usr/X11R6/bin/X から正しい X サーバへシンボリックリンクを張ることができません。startx を実行すると、以下のエラーが表示されます。(私も実際に経験しました。)
xinit: No such file or directory (errno 2): no server "X" found in PATH
これを回避するには、rootになって以下のコマンドを実行し、XF86Setupをもう一度実行して下さい。
# cd /usr/X11R6/bin # ln -s XF86_SVGA X
XF86Setup が現行の XF86Config をデフォルトで使用するかどうかたずねてきたら、no を選択してください。'X' からサーバにリンクを張るかどうかたずねてきたら、yes を選択してください。
あるマシンのX Display Manager(xdm)に接続する最も簡単な方法は、 rootになって次のようなコマンドを打ち込みます。
# /usr/X11R6/bin/X -query foo.bar.ac.jp &
"foo.bar.ac.jp" がxdmの動いているマシン、つまりサーバの名前です。
うまく接続できましたか? 接続できた場合は、通常、ログイン画面(xlogin)になります。どのような画面になるかはxdmの設定によって異なります。
Xサーバが立ち上がっている状態で、以下のキー操作が使えます。
rootになってXサーバを立ち上げたのでしたら、必ずその後コンソールに戻ってログアウトしましょう。rootがログインしっぱなしなのは危険ですよ。
FreeBSDを起動したときにXサーバを立ち上げたいのでしたら、
/etc/rc.local
の最後のあたりに、上記のXサーバ起動コマンドを書いておくとよいでしょう。私のサイトでも、もちろん、そうしています。
アドレスを間違えているのでなければ、大抵はxdm側(サーバ側)の設定のせいです。特にアクセス制限をかけているときには気をつけて下さい。新しいX端末をアクセス許可リストに追加するのを忘れないように。
個人的には、何の制限もなくログインウィンドウが出る環境は好ましくないので、きちんとアクセス制限をかけるべきだと考えています。設定するのも簡単だし。
今までの話しはPCをX端末(もどき)に仕立てる方法の説明でした。しかしこれだけではもったいないので、もうちょっと仕事をさせてはいかがでしょう。PC にはパラレルポートがついているので、プリンタを接続して印刷サーバにすることができます。印刷サーバは、設定にもよりますが、ただ単にデータをプリンタに送るだけの設定にすれば、CPUもメモリもさして食わないので、486PCでも十分に機能します。
プリンタの設定法についての詳細は、 みんなでプリンタを使おう (BSD編) をごらん下さい。
なおみんなでプリンタを使おう (BSD編)の中でGhostscriptを使って非PSプリンタをPSプリンタもどきに仕立てる方法を書いています。486PCでこれを試したことはありませんが、486PCでは非力ですのでそこまでは期待しない方が良いでしょう。
さきほど余計なサービスは切る!で出て来た
/etc/rc.conf
の中に、lpd_enabe="NO"となっている行があります。これを"YES"に書き換え、システムを再起動します。
ここでは簡単な例だけを紹介します。印刷スプーラの詳しい設定方法は、 みんなでプリンタを使おう (BSD編)をごらん下さい。
LPDの設定には/etc/printcap
というファイルを書く(書き換える)
ことで行なうのですが、FreeBSDの場合、標準ですでにプリンタの設定がしてあります。パラレルポートにプリンタを繋いで使う場合は、特に設定しなくともプリンタを利用できるはずです。
私はOKI MicroLine 801PSIIというPSプリンタを接続したのですが、このプリンタの場合は、残念ながら設定をいじる必要がありました。具体的には、次のような設定をしました。
lp|local line printer:@BACKSLASH@ :lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:@BACKSLASH@ :rw:sh:fo:ff=^D:sf:ct#3600:mx#0:
上の2行は標準の設定そのままで、2行目の最後のバックスラッシュと、最後の 1行を追加しました。PSプリンタでは一般的な設定です。
FreeBSD 2.2.5 Errata Notesによると、FreeBSD 2.2.5-RELEASEに含まれるlpdは以下のような問題点があるそうです。 (2.2.5 Errata Notes日本語訳より引用)
リモートプリンタにジョブを送る場合, ラインプリンタ・スプーラ・デーモン (lpd) は, `ct' 項目(`ct' capability) で指定された時間 (デフォルトでは 2 分) を過ぎると, ジョブを送った子プロセスを殺してしまいます. この問題を解決するには, lpd サブシステムを 2.2-stable にアップデートしてください. 回避策として, `ct' 項目に途方もなく大きな秒数 (3600 とか) を指定してやる方法もあります.
(訳注: `ct' capability については ハンドブックや printcap(5) を 参照のこと)
上の例でもct#3600
として問題を回避しています。
どうしてもFreeBSDでなければならない理由は無かったのですが、およそ次のようなことを考えてFreeBSDを選択しました。
Walnut Creek CDROM(FreeBSD
CD-ROMの版元)
ぷらっとホーム(ここで
FreeBSD CD-ROMを買った)
後で考えると、インストールは楽だし、設定も楽だし、性能も満足できるレベルだし、非常に安定していて今まで一度もおかしくなっていないし(管理者の大失敗を除く ^^;;)、正しい選択だったと思っています。
FreeBSDの稼働しているマシンのウェブサーバだと"Powered by ..."ロゴを使えるそうですが、このページを提供しているウェブサーバはそれに該当しないので、使っていません。
リンクはご自由に。でもメールをくれると嬉しいな。
金野 祥久 konno@researchers.jpLast modified: Wed Mar 29 11:06:58 JST 2000