FreeBSD ハンドブック : シリアル通信 : ダイアルインサービス : 設定ファイル
Previous: ディバイス スペシャル ファイル
Next: モデムの設定

13.3.5. 設定ファイル

FreeBSD のシステムへのダイアル アップによるアクセスを実現するために編 集が必要と思われる設定ファイルが, /etc ディレクトリに三つあ ります. まず, /etc/gettytab には, /usr/libexec/getty デーモンの設定を記述します. つぎに, /etc/ttys に保存されている情報から, /sbin/init はど の tty ディバイスに対して getty のプロセスを実行するべきか判 断します. 最後に, お使いの FreeBSD が 1.1.5.1 以降のものならば /etc/rc.serial スクリプトに, それ以前のものならば /etc/rc.local スクリプトにシリアル ポートの初期化のためのコマ ンドを記述することができます.

UNIX にダイアル アップ モデムを接続する方法には, 二つの考え方がありま す. 一つの方法は, ダイアル インしてくるユーザの接続速度に関係なく, 常 にモデムとローカルのコンピュータの RS-232 インタフェースの接続速度を一 定に保つように設定する方法です. この設定の長所は, ユーザがダイアル イ ンして接続されると, 即座にシステムからのログイン プロンプトが送信され るということです. 短所は, システムが実際のモデム間の速度を知ることがで きないために, Emacs のようなフル スクリーンのプログラムが, 端末との接 続速度が遅い場合でも, そのような場合に効果的な方法で画面出力を行わない 点です.

もう一つは, モデムの RS-232 インタフェースとコンピュータの接続速度を, モデム間の接続速度に応じて変化させるような設定です. たとえば, モデム間 の接続が V.32bis (14.4 Kbps) ならば, モデムとコンピュータの間の接続を 19.2 Kbps とし, モデム間の接続が 2400 bps の時には, モデムとコンピュー タ間も 2400 bps で接続するような設定をします. この場合, getty は, モデムが返すリザルト コードからモデムとコンピュータの接続速度を認識す ることができませんので, getty は, まず初期速度で login: とい う文字列を送信して, それに対する応答の文字列を監視します. ここで, ユー ザ側の端末に無意味な文字列が表示された場合, ユーザは意味のある文字列を 受信するまで <Enter> キーを繰り返し押さなければならない ということを知っていると仮定しています. もし接続速度が間違っている場合, getty は, ユーザから送られた文字を無意味な文字列として扱い, 次の 速度を試します. そして, ここで再度 login: プロンプトを送信します. この一連の動作が異常な回数繰り返されることも考えられますが, 普通は1度 か2度のキー入力があれば, ユーザはまともなプロンプトを受信できます. こ のログインの動作が前者の固定速度による方法に比べて美しくないのは明らか ですが, この方法では, 低速度で接続しているユーザに対するフル スクリー ンのプログラムからのレスポンスが改善されます.

このドキュメントでは, 両方の設定方法について解説しますが, どちらかとい うとモデム間の速度に応じて RS-232 インタフェースの速度が変化するような 設定の方に偏った説明になってしまうと思います.

13.3.5.1. /etc/gettytab

/etc/gettytab は, getty(8) の設定ファイルで, termcap(5) と同様の形式で記述されます. ファイルのフォーマットや定 義できる機能についての詳細については, gettytab(5) のマニュアルを ご覧ください.

固定速度の設定

モデムとコンピュータ間の通信速度を固定して使う場合, おそらく /etc/gettytab に特に変更を加える必要はないはずです.

可変速度の設定

getty が利用するモデムとコンピュータの接続速度に関する情報を /etc/gettytab に記述する必要があります. もし, 2400 bps のモ デムをお使いになるのであれば, 既存の D2400 のエントリがそのまま利 用できるでしょう. このエントリは FreeBSD の 1.1.5.1 の gettytab には既に含まれていますので, あなたの FreeBSD のバージョンでこのエント リが存在しているのであれば, 新たに追加する必要はありません.

#
# Fast dialup terminals, 2400/1200/300 rotary (can start either way)
#
D2400|d2400|Fast-Dial-2400:\
        :nx=D1200:tc=2400-baud:
3|D1200|Fast-Dial-1200:\
        :nx=D300:tc=1200-baud:
5|D300|Fast-Dial-300:\
        :nx=D2400:tc=300-baud:

高速モデムをお使いの場合は, おそらく /etc/gettytab に新たなエ ントリを追加する必要があります. 以下の例は, 14.4 Kbps のモデムを, 最 大インタフェース速度を 19.2 Kbps として利用するためのエントリです.

#
# Additions for a V.32bis Modem
#
um|V300|High Speed Modem at 300,8-bit:\
        :nx=V19200:tc=std.300:
un|V1200|High Speed Modem at 1200,8-bit:\
        :nx=V300:tc=std.1200:
uo|V2400|High Speed Modem at 2400,8-bit:\
        :nx=V1200:tc=std.2400:
up|V9600|High Speed Modem at 9600,8-bit:\
        :nx=V2400:tc=std.9600:
uq|V19200|High Speed Modem at 19200,8-bit:\
        :nx=V9600:tc=std.19200:

上記の例を利用した場合, FreeBSD 1.1.5 以降ではパリティなし, 8ビットの 接続が行われます. FreeBSD 1.1 では, :np: パラメータをファイルの 先頭の std.xxx のエントリに追加することで, パリティなし, 8ビットの接続が行われますが, このパラメータを追加しなければ接続は偶数 パリティ, 7ビットになります.

上記の例では, まず 19.2 Kbps (V.32bis) によるモデムとコンピュータ間の 接続を試み, 続いて 9600 bps (V.32), 2400 bps, 1200 bps, 300 bpsと順に 試み, 再び 19.2 Kbps による接続を試みるという循環に入ります. この接続 速度の循環は, nx=(next table) の機能で実現されています. ま た, 各行はそれぞれ tc=(table continuation) の機能を使って, その他の接続速度に依存した「標準的な」設定を取り込んでいます.

もし, お使いのモデムが 28.8 Kbps であったり, 14.4 Kbps の圧縮転送の機 能を有効に利用したい場合は, 19.2 Kbps よりも速い速度を利用するように 設定する必要があります. 以下に 57.6 Kbps から接続を試みる gettytab の設定例を示しておきます.

#
# Additions for a V.32bis or V.34 Modem
# Starting at 57.6 Kbps
#
vm|VH300|Very High Speed Modem at 300,8-bit:\
        :nx=VH57600:tc=std.300:
vn|VH1200|Very High Speed Modem at 1200,8-bit:\
        :nx=VH300:tc=std.1200:
vo|VH2400|Very High Speed Modem at 2400,8-bit:\
        :nx=VH1200:tc=std.2400:
vp|VH9600|Very High Speed Modem at 9600,8-bit:\
        :nx=VH2400:tc=std.9600:
vq|VH57600|Very High Speed Modem at 57600,8-bit:\
        :nx=VH9600:tc=std.57600:

もし, お使いの CPU が低速のものであったり, CPU に対する負荷が高い場合 で, 16650A 系のシリアル ポートをお使いでない場合, 57.6 Kbps の接続に おいて, sio の ``silo'' エラーが発生するかもしれません.

13.3.5.2. /etc/ttys

/etc/ttys には, init が監視すべき tty のリストを記 述します. さらに, /etc/ttys は, login に対してセキュリ ティに関する情報を提供します. (ユーザ root は, secure とマー クされている tty のみからログインできます. ) 詳しくは ttys(5) のマニュアルをご覧ください.

/etc/ttys の既存の行を変更するか, あるいは新しい行を追加して, init が自動的に新しいダイアル アップ サービス用のポートに対して getty プロセスを起動するようにしてください. 書式は, 固定速度の設 定か可変速度の設定かに関わらず, 以下のとおりです.

ttyd0   "/usr/libexec/getty xxx"   dialup on

1番目の項目は, このエントリで対象とするディバイス スペシャル ファイル です. 上の例では ttyd0 として, /dev/ttyd0getty に監視させることを表しています. 2番目の項目 "/usr/libexec/getty xxx" (xxx は初期段階で使われる gettytab のエントリ に置き換えてください. ) が, init がこのディバイスに対して起動する プロセスです. 3番目の dialup は, デフォルトのターミナル タイプで す. 4番目の on は, この行が有効であることを init に対して示 しています. 5番目の項目に secure を指定することもできますが, これ は, たとえばシステムのコンソールのように, 物理的に安全な端末に対しての み指定するようにしてください.

デフォルトのターミナル タイプ (上記の例では dialup) は, ローカル のユーザの好みによって異なってきます. ユーザがログイン スクリプトをカ スタマイズして, ターミナル タイプが dialup の時には自動的に他のター ミナル タイプを設定できるように, ダイアル アップのポートのデフォルトの ターミナル タイプには dialup が伝統的に用いられています. しかし, 筆者のサイトでは, ほとんどのユーザが VT102 エミュレイションを使ってい るので, ダイアル アップのポートのデフォルト ターミナル タイプとして vt102 を指定しています.

/etc/ttys の修正がすんだら, 以下のようなコマンドを使って init プロセスに HUP シグナルを送り, /etc/ttys を 読み込み直させてください.

kill -1 1

ただ, もし初めてシステムを設定しているのであれば, モデムが適切に設定さ れて接続されるまでは, init に対してシグナルを送らない方がいいか もしれません.

固定速度の設定

速度を固定する設定では, /etc/ttys の中で, getty に対し て固定速度のエントリを指定する必要があります. たとえば, 以下の例はポー トのスピードが 19.2 Kbps に固定されたモデムのための ttys のエント リです.

ttyd0   "/usr/libexec/getty std.19200"   dialup on

別の速度でモデムのポートのスピードを固定したい場合は, /etc/gettytab から適切なエントリを選んで, 上の例の std.19200 の部分を std.speed として, 適切な速度のも のに置き換えてください.

可変速度の設定

可変速度の設定では, ttys のエントリが, /etc/gettytab の中の適切な「自動速度調整」の初期設定のエントリを参照していなければな りません. たとえば, もし前述の 19.2 Kbps から接続を試みる可変速度の設 定例 (V19200gettytab エントリ)をそのまま ttys に追 加したのであれば, ttys エントリは以下のようになります.

ttyd0   "/usr/libexec/getty V19200"   dialup on

13.3.5.3. /etc/rc.serial または /etc/rc.local

V.32, V.32bis または V.34 モデムのような高速モデムを利用する場合, ハー ドウェア (RTS/CTS) フロー制御を行う必要があります. FreeBSD kernel のモデム ポートにハードウェア フロー制御のフラグを設定するため の stty コマンドを, FreeBSD 1.1.5.1 以降では /etc/rc.serial に, FreeBSD 1.1 では /etc/rc.local に 記述できます.

たとえば, FreeBSD 1.1.5.1 の /etc/rc.serial のサンプルは以下 のとおりです.

#!/bin/sh
#
# Serial port initial configuration

stty -f /dev/ttyid1 crtscts
stty -f /dev/cuai01 crtscts

この例では, termio のフラグ crtscts をシリアル ポート #1 (com2:) のダイアル インおよびダイアル アウトの初期化ディバイスに 設定しています.

古い FreeBSD 1.1 では, 以下のエントリが crtscts フラグを設定する ために /etc/rc.local に追加されていました.

# Set serial ports to use RTS/CTS flow control
stty -f /dev/ttyd0 crtscts
stty -f /dev/ttyd1 crtscts
stty -f /dev/ttyd2 crtscts
stty -f /dev/ttyd3 crtscts

FreeBSD 1.1 には初期化のためのディバイス スペシャル ファイルがないので, ディバイス ファイルそのものにフラグを設定して, その後はフラグをクリア してしまうような極悪人が現れないことを願うしかありません.


FreeBSD ハンドブック : シリアル通信 : ダイアルインサービス : 設定ファイル
Previous: ディバイス スペシャル ファイル
Next: モデムの設定