19.3. シリアル端末

寄稿: Sean Kelly.

訳: 中根 雅文

シリアル端末を利用することで、 コンピュータのコンソールのそばにいないときや、 手近にネットワーク接続されているコンピュータがないときでも、 FreeBSD の機能を便利に、かつ安価に利用することができます。 ここでは、FreeBSD にシリアル端末を接続する方法を解説します。

19.3.1. 端末の種類と利用方法

もともと Unix システムにはコンソールがありませんでした。 ユーザはコンピュータのシリアルポートに接続された端末からログインしてプログラムを利用していました。 ちょうどモデムと通信ソフトを使ってリモートのコンピュータにログインし、 テキストベースのプログラムを利用するのとよく似ています。

最近の PC は、 高品質の画像を表示できるコンソールを搭載していますが、 ほとんどすべての Unix 系 OS には未だにシリアルポートを使ってログインするための機能があり、 FreeBSD でもこの機能がサポートされています。 現在使用されていないシリアルポートに端末を接続することでシステムにログインし、 通常はコンソールや X ウィンドウシステムの xterm のウィンドウ上で起動しているテキストベースのプログラムであれば何でも利用できます。

職場での利用ということで考えるならば、FreeBSD が動作しているコンピュータに接続された何台ものシリアル端末を各社員の机に配置するというようなことが可能です。 また、家庭での利用方法としては、余っている古い IBM PC や Macintosh を FreeBSD が動いているパワフルなコンピュータの端末として利用できます。 普通ならシングルユーザのコンピュータを、 パワフルなマルチユーザのシステムに変えることができるのです。

FreeBSD では、以下に挙げる 3 種類の端末が利用できます。

以下は、それぞれについての解説です。

19.3.1.1. ダム端末

ダム端末は、 シリアルライン経由でのコンピュータとの接続専用のハードウェアです。 ダム端末は、テキストの送受信および表示ができる程度の計算能力しかもっていないので、 “dumb” (間抜け) というように呼ばれています。 この端末上でプログラムを実行することはできません。 テキストエディタ、コンパイラ、E-mail、 ゲームなどなどのプログラムを実行するのは、 ダム端末を接続しているコンピュータの方です。

Digital Equipment 社の VT-100 や、Wyse 社の WY-75 を初めとして、多くのメーカが何百種類ものダム端末を作っています。 ほとんどどんな種類のダム端末でも FreeBSD に接続して使用できます。さらに、 高性能の端末の中には画像を取り扱えるものもありますが、 限られた数のソフトウェアパッケージしかこういった機能には対応していません。

ダム端末は、 X ウィンドウシステムで提供されるようなグラフィックアプリケーションを必要としない職場で広く用いられています。

19.3.1.2. PC を端末として利用する

ダム端末 がテキストの表示および送受信の機能をそなえただけのものならば、 言うまでもなく、どんな PC もダム端末になり得ます。 必要なものは適切なケーブルと、その PC の上で動作する端末エミュレーション を行うソフトウェアのみです。

このような環境は、家庭においてよく利用されます。 たとえば、あなたの同居人が FreeBSD のコンソールを専有している時などに、 あまりパワーのないコンピュータを FreeBSD システムにシリアル端末として接続し、 その端末上でテキストだけを用いる作業をおこなうことができます。

19.3.1.3. X 端末

X 端末は、 既存のものの中で最も洗練された種類の端末といえます。 X 端末は、たいていの場合シリアルポートではなく、 イーサネットのようなネットワークを利用した接続をおこないます。 また、アプリケーションの利用においても、 テキストベースのものだけでなく、 X アプリケーションの利用が可能です。

ここでは、参考までに端末について紹介しただけで、 X 端末の設定や利用についての解説は おこないません

19.3.2. 設定

ここでは、端末からのログインを可能にするために必要な FreeBSD 側の設定について解説します。 既に端末を接続するポートが利用できるように kernel の設定をおこない、端末が接続されているものと考えて、解説を進め ます。

第13章 で述べたように init プロセスは、 システム起動時にすべてのプロセス管理や初期化をおこなっています。 init が行っている仕事の一つは、 /etc/ttys ファイルを読んで、利用可能な端末上で getty プロセスを起動することです。 getty プロセスは、 ログイン名を読み込み login プログラムを起動します。

したがって、FreeBSD の端末を設定するには、 root で次の手順を踏まなければなりません。

  1. 端末を接続するポートの /dev のエントリが含ま れている行がまだ存在しなければ、これを /etc/ttys に追加してく ださい。

  2. /usr/libexec/getty が対象となるポートに対して 実行されるように指定してください。また、 /etc/gettytab ファイ ル内の適切な getty タイプのエントリを指定してください。

  3. デフォルトのターミナルタイプを指定してください。

  4. 対象となるポートを “on” に設定してください。

  5. そのポートが “secure” であるかどうかを指定してください。

  6. init/etc/ttys を読み込みなおさせてく ださい。

また、必要に応じて /etc/gettytab を変更し、上の 2で使用する getty のエントリを追加してください。 この章ではこの方法については特に解説しませんので、gettytab(5) および getty(8) のマニュアルをご覧ください。

19.3.2.1. /etc/ttys へのエントリの追加

/etc/ttys には、 FreeBSDシステム上のログインを許可するすべての ポートを記述します。たとえば、一つ目の仮想コンソール ttyv0 のエン トリもこのファイルにあります。このエントリのおかげで、 コンソールからの ログインが可能になっています。 このファイルには、他の仮想コンソール、シ リアルポートおよび仮想端末のエントリも含まれています。 端末を接続する場合は、そのポートの /dev のエントリを、 /dev の部分を省略して記述します (たとえば /dev/ttyv0 については、 ttyv0 として記述します)。

FreeBSD のデフォルトのインストール状態では、 ttyd0 から ttyd3 までの、初めの 4 つのシリアルポートに対応した /etc/ttys ファイルが置かれています。 これらのポートのいずれかに端末を接続する場合は、 新たにエントリを追加する必要はありません。

例 19-1. 端末の項目を /etc/ttys に追加する

システムに 2 台の端末、Wyse-50 と、VT-100 端末をエミュレートしている Procomm 端末ソフトウェアを動かしている古い 286 IBM PC をシステムに接続しようとしていると考えてください。 Wyse は 2 番目のシリアルポートに、286 は 6 番目のシリアルポート (マルチポートシリアルカード上のポート) に接続します。 /etc/ttys 内の対応する項目は次のようになります。

ttyd1(1)  "/usr/libexec/getty std.38400"(2)  wy50(3)  on(4)  insecure(5)
ttyd5   "/usr/libexec/getty std.19200"  vt100  on  insecure
	 
(1)
最初のフィールドには、通常 /dev にある端末のスペシャルファイル名を指定します。
(2)
2 番目のフィールドは、 この回線に対して実行するコマンドで、通常は getty(8) です。getty は、回線を初期化して開き、速度を設定して、 ユーザ名を入力するプロンプトを出して login(1) プログラムを実行します。

getty プログラムは、 コマンドラインから (省略可能な) パラメータ getty タイプを受け取ります。 getty タイプは、 bps レートやパリティのような端末回線の特性を示します。 getty プログラムは、 これらの特性を /etc/gettytab ファイルから読み込みます。

/etc/gettytab ファイルには、 端末回線について新旧多くの項目があります。 ほとんどの場合、std で始まる項目は、ケーブルで接続された端末に働きます。 これらの項目はパリティを無視します。110 から 115200 までの間の bps レートそれぞれに対して一つ std 項目があります。もちろん、 このファイルに独自の項目を加えてもかまいません。 gettytab(5) のマニュアルに詳しい情報が載っています。

/etc/ttys ファイルに getty タイプを設定する時は、 端末の通信設定が対応していることを確かめましょう。

たとえば、Wyse-50 はパリティなしで、38400 bps で接続します。286 PC はパリティなしで、19200 bps で接続します。

(3)
第 3 フィールドは、その tty 回線に通常つながる端末の種別です。 ダイアルアップポートでは、実際、 ユーザがどんな種類の端末やソフトウェアで接続してくることもありうるので、 このフィールドには unknown または dialup がよく使われています。 ケーブルで配線された端末については、 端末種別は変わりませんので、termcap(5) データベースファイルから実際の端末種別を、 このフィールドに記入できます。

我々の例では、Wyse-50 には実際の端末種別を使っていますが、 Procomm を動かしている 286 PC は、VT-100 をエミュレートするように設定します。

(4)
4 番目のフィールドは、 ポートを有効にすべきかどうかを指定します。 ここに on と記入すると、 init プロセスが 2 番目のフィールドに記載されているプログラム、 getty を起動します。 このフィールドを off にすると、 getty は動かず、 そのポートからはログインできません。
(5)
最後のフィールドは、 そのポートが安全かどうか指定します。 あるポートが安全だということは、そのポートから root (またはその他の UID が 0 の) アカウントのログインを許可してよいと信頼しているということです。 安全でないポートからは、root のログインは許可されません。安全でないポートでは、 ユーザは特権を持たないアカウントでログインした後に、 su(1) や類似の仕組みを使ってスーパユーザ特権を獲得します。

鍵のかかる部屋にある端末であっても、“insecure” にしておくことが強く推奨されます。 スーパユーザ特権が必要なら、ログインしてから su を使うのは十分簡単です。

19.3.2.2. init にファイル /etc/ttys の再読み込みをさせる

必要な変更を /etc/ttys ファイルに加えたら、SIGHUP (ハングアップ) シグナルを init プロセスに送って設定ファイルを強制的に再読み込みさせます。 たとえば

# kill -HUP 1

注意: init は、システムで最初に起動するプロセスなので、 PID は常に 1 です。

すべての設定が正しくおこなわれ、 すべてのケーブルがただしく接続されていて、 かつ端末の電源が入っていれば、この時点で各端末で getty プロセスが動いていて、 ログインプロンプトが表示されているはずです。

19.3.3. 接続のトラブルシューティング

細心の注意を払って設定をおこなっても、 ときには端末の接続がう まくいかない場合があるでしょう。以下に、 よく見られる問題とその解決方法 を示します。

19.3.3.1. ログインプロンプトが表示されない
19.3.3.2. ログインプロンプトの代わりにゴミが表示される
19.3.3.3. 文字が重複して表示される、入力したパスワードが表示される

19.3.3.1. ログインプロンプトが表示されない

端末の電源が接続され、 スイッチが入っていることを確認してください。もし、PC を端末として利用している場合は、 通信ソフトが適切なシリアルポー トを利用する設定になっているかどうか確かめてください。

ケーブルがしっかりと端末と FreeBSDが動作しているコンピュータの両方に接続され ていることを確認してください。また、 正しい種類のケーブルを利用している か確かめてください。

端末と FreeBSD の間の通信速度とパリティの設定が一致していることを確認 してください。 出力をモニタに表示するタイプの端末の場合は、モニタ のコントラストと明るさの設定を確認してください。また、 出力が印刷 されるタイプの端末の場合は、 紙とインクが十分にあるかどうかを確かめてく ださい。

getty が動いていて、 端末を認識していることを確認してください。 たとえば、動作中の getty プロセスの一覧を ps で取得するには、以下のように入力してください。

# ps -axww|grep getty

その端末に対応する項目が表示されるはずです。 たとえば、以下の表示例は、getty は 2 番目のシリアルポート (ttyd1) に対して /etc/gettytab 中の std.38400 エントリを使って動作しているということを示しています。

22189  d1  Is+    0:00.03 /usr/libexec/getty std.38400 ttyd1

もし、getty プロセスが一つも動いていないようであれば、 /etc/ttys の中で、 そのポートを利用可能にする設定をしたかどうか確かめてください。 また、ttys ファイルを変更したら、kill -HUP 1 を実行するのを忘れないでください。

19.3.3.2. ログインプロンプトの代わりにゴミが表示される

端末と FreeBSD の間の通信速度およびパリティの設定が一致していることを確 かめてください。また、getty プロセスの情報を調べて、適切な getty のタイプが使用されていることを確認してください。間違った getty タイプが使用されている場合は、 /etc/ttys を修正し てから、 kill -HUP 1 を実行してください。

19.3.3.3. 文字が重複して表示される、入力したパスワードが表示される

端末または通信ソフトの設定で、“半二重 (half duplex)” あるいは “ローカ ルエコー” となっているところを、“全二重 (full duplex)” に変更してください。

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。