agetty(8) 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 コマンドを起動する。通常 agettyinit(8) から 起動される。

agetty はいくつか非標準な機能を持っており、直結ラインやダイアルインの ラインに便利になっている。

  • ログイン名を読むときに tty の設定(パリティビット、 erase、 kill、 end-of-line、 uppercase 文字)を行う。 agetty は 7 ビット文字を偶、奇、スペースの各パリティ、あるいはパリティなしの いずれでも扱うことができる。また 8 ビット文字をパリティなしで扱うこと ができる。以下の特殊文字を認識する; @ および コントロール U (kill)、 #、 DEL およびバックスペース (erase)、復帰 (carriage return) および改行 (linefeed) (end of line)。
  • オプション機能: Hayes(tm) 互換のモデムが出す CONNECT メッセージ から通信速度 (baud rate) を推測する。
  • オプション機能: すでにオープンしているラインを与えられた場合に はラインを切断しない (コールバックの用途に便利)。
  • オプション機能: /etc/issue ファイルの内容を表示させない。
  • オプション機能: /etc/issue 以外の issue ファイルを表示する。
  • オプション機能: ログイン名を尋ねない。
  • オプション機能: /bin/login 以外の非標準なログインプログラムを起 動する。
  • オプション機能: ハードウェアによるフローコントロールを有効にする。
  • オプション機能: 接続ラインをローカルなライン (キャリア検知を必要としな いライン) に設定する。

このプログラムは /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 で利用できるエスケープ

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 <[email protected]>
Eindhoven University of Technology
Department of Mathematics and Computer Science
Den Dolech 2, P.O. Box 513, 5600 MB Eindhoven, The Netherlands
Peter Orbaek <[email protected]>
Linux への移植とオプションの追加。現在もコードを保守している。
Eric Rasmussen <[email protected]>
-f オプション (端末によってissue ファイルを変更する機能) の追加。

作成日

Sat Nov 25 22:51:05 MET 1989

最終修正日

96/07/20