[FreeBSD] FreeBSDを用いたX端末

私の所属する研究室では、Windows95を動かすには性能が不十分なために利用者が少なくなった古いPCを、X端末として復活させて使っています。ここでその方法を説明します。設定がとても簡単で、かなり便利に使えますので、お勧めです。

OSには FreeBSD を使いました。FreeBSDはPC互換機用のBSD UNIXオペレーティングシステムで、非常に多くの人に利用されているそうです。

あなたはだいたい ???人目のお客様です。(1998年2月7日以降)

->サーバに使うOS、デスクトップ環境のOS
->PC UNIX比較メモ


* 目標と手順

X端末として、ある特定のワークステーションのxdm(X Display Manager)に接続し、そこそこの性能のX窓環境を提供することを目標にします。そのために、次のような作業を行ないます。

  1. FreeBSDのインストールと設定
  2. X Window Systemの設定
  3. (おまけ) 印刷サーバとしての設定

高いグラフィックス性能を要求するような仕事、たとえば3Dグラフィックスとかアニメーションとかは考えないことにします。古いPCにそこまで期待するのは酷です。


* OSの設定

OSのインストール法の詳細は、このページでは説明しません。 FreeBSDのインストール方法について詳しく説明しているページや雑誌が沢山あるのでそちらを探して下さい。(いぢめないで :-)

* 必要な資源

私の所属する研究室では、1995年に買った486PCを2台、X端末にしています。 (私が毎日使っているCompaq PRESARIOより高いスペックなんだよなぁ ^^;; 今も可愛いサリオちゃんを使ってHTMLを書いています。)

* インストールの際の注意

X端末にすることを考えているので、以下の点に注意します。

ディスクの容量さえ十分にあれば、インストール自体はとても簡単だと思います。あぁ、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窓を開けるように設定します。Xクライアント(xtermなど)はX端末上では動かしませんので、Xサーバの設定さえきちんとすれば十分です。

* XF86Setup

X Window Systemのサーバの設定には、X端末にするかどうかに関わらず、 XF86Setupを利用するのが便利です。

FreeBSDのインストール法や設定法を説明するのはこのページの主旨ではないので、XF86Setupについてもここでは述べませんが、簡単ですのでやってみて下さい。

* 注意: FreeBSD 2.2.5-RELEASEの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 を選択してください。

* xdmに繋ぐ

あるマシンの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では非力ですのでそこまでは期待しない方が良いでしょう。

* LPDを起動する

さきほど余計なサービスは切る!で出て来た /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-RELEASEのLPDの問題

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でなければならない理由は無かったのですが、およそ次のようなことを考えてFreeBSDを選択しました。

後で考えると、インストールは楽だし、設定も楽だし、性能も満足できるレベルだし、非常に安定していて今まで一度もおかしくなっていないし(管理者の大失敗を除く ^^;;)、正しい選択だったと思っています。

* 脱線: FreeBSDロゴは使わないの?

FreeBSDの稼働しているマシンのウェブサーバだと"Powered by ..."ロゴを使えるそうですが、このページを提供しているウェブサーバはそれに該当しないので、使っていません。

-> "Powered by FreeBSD" Logo


* 参考・リンク集


<- トップページ
工学院大学機械工学科流体研

リンクはご自由に。でもメールをくれると嬉しいな。

金野 祥久  konno@researchers.jp

Last modified: Wed Mar 29 11:06:58 JST 2000