名前
agetty - Linux 用 getty
のもう一つの実装
書式
agetty [-ihLmnw] [-f issue_file] [-l
login_program] [-I init] [-t timeout] port
baud_rate,... [term]
agetty [-ihLmnw] [-f issue_file] [-l login_program] [-I
init] [-t timeout] baud_rate,... port
[term]
説明
agetty は tty
ポートをオープンし、ログイン名を求めるプロンプトを出し、
/bin/login
コマンドを起動する。通常
agetty は init(8) から
起動される。
agetty
はいくつか非標準な機能を持っており、直結ラインやダイアルインの
ラインに便利になっている。
- o
- ログイン名を読むときに
tty
の設定(パリティビット、
erase、 kill、 end-of-line、 uppercase
文字)を行う。 agetty
は 7
ビット文字を偶、奇、スペースの各パリティ、あるいはパリティなしの
いずれでも扱うことができる。また
8
ビット文字をパリティなしで扱うこと
ができる。以下の特殊文字を認識する;
@ および
コントロール U (kill)、
#、 DEL
およびバックスペース
(erase)、復帰 (carriage return)
および改行 (linefeed) (end of
line)。
- o
- オプション機能: Hayes(tm)
互換のモデムが出す
CONNECT メッセージ
から通信速度 (baud rate)
を推測する。
- o
- オプション機能:
すでにオープンしているラインを与えられた場合に
はラインを切断しない
(コールバックの用途に便利)。
- o
- オプション機能:
/etc/issue
ファイルの内容を表示させない。
- o
- オプション機能:
/etc/issue 以外の issue
ファイルを表示する。
- o
- オプション機能:
ログイン名を尋ねない。
- o
- オプション機能:
/bin/login
以外の非標準なログインプログラムを起
動する。
- o
- オプション機能:
ハードウェアによるフローコントロールを有効にする。
- o
- オプション機能:
接続ラインをローカルなライン
(キャリア検知を必要としな
いライン)
に設定する。
このプログラムは
/etc/gettydefs (System V) や /etc/gettytab (SunOS 4)
ファイルを利用しない。
- port
- /dev/
ディレクトリからの相対パス名。
"-"
が指定されると、
agetty
は自分の標準入力がすでに
tty
ポートに接続されており、リモートユーザー
への接続がすでに確立されているものとみなす。
System V では port
引き数としての "-"
は "--"
の前に置かなければ
ならない。
- baud_rate,...
- 一つ以上の通信速度をコンマで区切ったリスト。
agetty が BREAK
文字を受け取ると、リストの次に進む。最後まで行ったら最初に戻
る。
通信速度は大きい方から小さい方へと並べるようにする。こうすると
null 文字 (Ctrl-@)
も通信速度の切り替えに使えるようになる。
- term
- TERM
環境変数に用いる値。これは
init(8)
の設定を上書きし、
login およ び shell
に受け継がれる。
オプション
- -h
- ハードウェア (RTS/CTS)
コントロールを有効にする。ソフトウェアによる
(XON/XOFF)
フローコントロールを無効にするかどうかはアプリケーションに
任せる。
- -i
- ログインプロンプトの前に
/etc/issue
の内容を表示しない。端末や通信装置は、正しくない通信速度で大量のテキ
ストを受け取ると混乱してしまうことがある。ダイアルアップスクリプトによっ
ては、ログインプロンプトの前に大量のテキストを受け取ると落ちてしまう場
合がある。
- -f issue_file
- issue_file を /etc/issue
の代わりに表示する。端末別にメッセージを変えることができるようになる。
-i
オプションはこのオプションを上書きする。
- -I initstring
- 通信に先立って tty
やモデムに送る初期化文字列を設定する。これはモデムの
初期化に用いることができる。印刷できない文字も、バックスラッシュ
(\) に引き続いて 8
進数で指定すれば送ることができる。例えば改行文字
(ASCII 10, 8 進数では 012)
を送るには \012
とする。
- -l login_program
- 指定した login_program を /bin/login
の代わりに起動する。これに
よって非標準なログインプログラム
(例えばダイアルアップパスワードを尋ね
たり、 /etc/passwd
以外のパスワードファイルを用いるなど)
を使うことが
できる。
- -m
- 通信速度を Hayes(tm)
互換モデムが出す CONNECT
メッセージから抽出しよ
うと試みる。メッセージは
"<その他><速度><その他>"
というような形式になっ
ている。 agetty
では、コマンドラインの
baud_rate
の先頭に指定されたスピードで、
モデムがステータスメッセージを出力するものとみなしている。
-m
の機能は負荷の高いシステムでは失敗することもあるので、コマン
ドラインでも予想される通信速度をすべて列記して、
BREAK 処理を有効に
しておく方が良いだろう。
- -n
- ログイン名入力のプロンプトを出さない。これは
-l
オプションと共に用い
て、 BBS
システムのように非標準のログイン処理を起動する際に便利である。
-n
オプションを用いると、
agetty
はログインしてくるユーザーから
入力を受け取ることができないので、コネクションのパリティやキャラクタビッ
ト数、改行処理などを決定することができない。デフォルトはスペースパリティ、
文字は 7
ビット、行末文字は
ASCII の CR (13)
となっている。 agetty
が起動するプログラム
(通常は /bin/login) は root
権限で実行されること
に注意せよ。
- -t timeout
- timeout
秒以内にユーザー名を読み込むことができなかったら切断する。
このオプションは直結回線には用いない方が良いだろう。
- -L
- 接続回線を、キャリア検知の必要がないローカルな直結回線であるとみなす。
これはローカルに接続された端末で、キャリア検知用の信号線がないシリアル
ケーブルを使っているときに便利である。
- -w
- ユーザーまたはモデムからの復帰文字か改行文字を待ち、これを受け取ってか
ら /etc/issue (または別の
issue)
ファイルやログインプロンプトを
出す。 -I
オプションを用いた接続の際に非常に便利。
例
この節では
/etc/inittabファイルに記述するコマンドエントリの例を示す。
他のフィールドには、それぞれ適当な値を指定する必要があるだろう。詳細は
inittab(5)
を参照すること。
直結ラインまたはコンソール
tty 用: /sbin/agetty 9600 ttyS1
直結された端末で、正しい
CD 線のない場合 (password:
プロンプトが出ない
で端末が黙ってしまう場合はこちらを試してみると良い):
/sbin/agetty -L 9600 ttyS1 vt100
9600/2400/1200 bps
のモデムを用いた古いスタイルのダイアルイン接続ライ
ン /sbin/agetty -mt60 ttyS1 9600,2400,1200
Hayes
モデムで、マシンへのインターフェースが
115200 bps に固定されてい
る場合
(以下の例の初期文字列ではモデムのエコーとリザルトコードを抑止し、
モデム/コンピュータ間の
DCD
はモデム/モデム間の
DCD
に追随するようにし、
DTR
が落ちた場合は切断とベル
1
回での自動応答機能を有効にするように
設定している): /sbin/agetty -w -I
'ATE0Q1&D2&C1S0=1\015' 115200 ttyS1
issue ファイル (/etc/issue
または -f
オプションで設定されたファイル)
ではシステム名や日付、時間
などを表示するエスケープコードを用いることができる。エスケープコードは
バックスラッシュ (\)
とそれに続く一文字からなる。文字は以下のうちのど
れか。
- b
- 現在のラインの通信速度。
- d
- 現在の日付。
- s
- システム名
(オペレーティングシステムの名前)。
- l
- 現在の tty
ラインの名前。
- m
- マシンのアーキテクチャを表す名前
(例: i486)。
- n
- マシンのノード名
(ホスト名)。
- o
- マシンのドメイン名。
- r
- OS のリリース番号 (例:
1.1.9)。
- t
- 現在の時刻。
- u
- 現在ログインしているユーザー数。
- U
- 文字列 "1 user" または
"<n> users"。 <n>
は現在ログインしているユーザー
数。
- v
- OS のバージョン
(ビルドした日付など)。
- 以下は著者のシステムでの
/etc/issue
ファイルの例である:
-
This is \n.\o (\s \m \r) \t
- 表示は以下のようになる。
-
This is thingol.orcan.dk (Linux i386 1.1.9) 18:29:30
ファイル
/var/run/utmp, システムのステータスファイル。
/etc/issue, ログインプロンプトの前に表示される。
/dev/console, 障害を報告する端末 (syslog(3) が使われていない場合)。
/etc/inittab, init(8) の設定ファイル。
バグ
通信速度の自動検知機能
(-m オプション)
では、 agetty
のスケジュールがダイアルイン接続の確立後すぐに回ってこなければならない
(2400 bps の場合は 30 ms
以内)。システムを強くするために、
-m
オプションを用いる場合には、常にコマンドライン引き数で通信速度の複数
指定を行い、 BREAK
処理を有効にしておくべきである。
/etc/issue (または他の issue
ファイル)
のテキストとログインプロンプトの表示には常
に 7
ビット文字とスペースパリティが用いられる。
通信速度の自動検知機能
(-m オプション)
では、モデムのステータ
スメッセージは DCD
ラインが high
になってからでないと受け付けない。
返り値
プログラムが返す情報はすべて
console
デバイスに書き込まれるか、
syslog(3)
を通してレポートされる。どちらかはプログラムの設定に依存する。
port
引き数が端末デバイスを指定していない場合、
utmp に現在のプ
ロセスのエントリがない場合
(System V のみ)
などにエラーメッセージ
が発行される。
著者
W.Z. Venema <wietse@wzv.win.tue.nl>
Eindhoven University of Technology
Department of Mathematics and Computer Science
Den Dolech 2, P.O. Box 513, 5600 MB Eindhoven, The Netherlands
Peter Orbaek <poe@daimi.aau.dk>
Linux への移植とオプションの追加。現在もコードを保守している。
Eric Rasmussen <ear@usfirst.org>
-f オプション (端末によってissue ファイルを変更する機能) の追加。
作成日
Sat Nov 25 22:51:05 MET 1989