6.1. init システム

/etc/inittab ファイルにはバックグラウンドプログラムが含まれており、 これらを使ってシステムを動かし続けます。 こういったプログラムの一つが getty で、 シリアルポート一つにつき 1 個の getty プロセスがあります。

Figure 6-2. getty は、 /etc/inittab のエントリに基づき init が起動する

co:2345:respawn:/sbin/getty ttyS0 CON9600 vt102

inittab の各フィールドはコロン (:) で区切られており、 以下のものを含んでいます。

co

inittab 内の任意のエントリです。 このエントリが inittab の他の場所に現れていない限り大丈夫です。 このエントリはコンソール用なので、 co という名前にしました。

Red Hat Linux 7.3 には kudzu というプログラムがあり、 ブート時にシステム設定を行ないます。 kudzuco という inittab のエントリを特別扱いします。 このエントリを用いて、付属のモニター・キーボード、 あるいはシリアルコンソールの設定を行なうのです。 co の値をハードコーディングすれば、 これは防げます。

2345

このエントリがスタートするランレベルです。 動作可能なシステムについては、 ランレベル 2、3、4 それに 5 が使えます。 他のランレベルでは getty は使わないでください。 シリアルコンソールは、ランレベル 1 (ないしはシングルユーザーモード)で、 getty が無くても動作します。

respawn

そのプログラムが死んだ場合に、それを再起動します。 コンソールからログアウトしたとき、 新しい login プロンプトが現れるように、 再起動させたいんです。

/sbin/getty ttyS0 CON9600 vt102

実行すべきコマンドです。この場合、 /etc/gettydefs に存在する CON9600 の設定を使って、 /dev/ttyS0 に接続するよう、 getty に指示しています。 このエントリは 9600bps で動いている端末を表しています。 この端末は VT100 の後継モデルだと最初に仮定しています。

/etc/inittab の変更後、以下のコマンドを使って init を再起動します。

telinit q

あるいは kill -HUP 1 コマンドを使って、 init にハングアップシグナルを送ってもかまいません。 でもこの方法はお奨めしません。というのは、もしタイプミスをして、 本当に init を殺してしまうと、 その瞬間にシステムが突然停止してしまうからです。

inittab 内のコメントと Red Hat の kudzu: kudzu# のコメント行を使って、 付属のモニター・キーボードやシリアルポートに対する getty の起動や停止を行なっています。 本当のコメントと kudzu で保存している行が混乱しないように、 本物のコメント行は、 ## で始めて下さい。