FreeBSD ハンドブック
前のページ | 第 19章シリアル通信 | 次のページ

# 19.3. シリアル端末

寄稿: Sean Kelly.

訳: 中根 雅文 `<max@FreeBSD.org>`

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

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

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

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

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

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

- ダム (dumb) 端末

- PCを利用した端末

- X 端末

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

### 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  "/usr/libexec/getty std.38400"  wy50  on  insecure
    ttyd5   "/usr/libexec/getty std.19200"  vt100  on  insecure

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

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

  4 番目のフィールドは、 ポートを有効にすべきかどうかを指定します。 ここに `on` と記入すると、 `init` プロセスが 2 番目のフィールドに記載されているプログラム、 `getty` を起動します。 このフィールドを `off` にすると、 `getty` は動かず、 そのポートからはログインできません。
  最後のフィールドは、 そのポートが安全かどうか指定します。 あるポートが安全だということは、そのポートから `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> まで電子メールを (英語で) 送ってください。