init または shutdown コマンドを使用してシステムをブートしたり実行レベルを変更したりすると、init デーモンは、/etc/inittab ファイルから情報を読み取ってプロセスを起動します。/etc/inittab ファイルには、init プロセスにとって重要な 3 つの情報が定義されています。
システムのデフォルトの実行レベル
起動、監視するプロセス、および停止時に再起動するプロセス
システムが新しい実行レベルに移行したとき行う処理
/etc/inittab ファイル内の各エントリは、次のフィールドからなります。
id:rstate:action:process
表 8-2 に、inittab エントリの各フィールドを要約します。
表 8-2 inittab ファイルのフィールド
フィールド |
説明 |
---|---|
id |
エントリに固有の (一意の) 識別子。 |
rstate |
このエントリが適用される実行レベルのリスト。 |
action |
プロセスフィールドに指定されたプロセスの実行方法。指定できる値は、initdefault、sysinit、boot、bootwait、wait、および respawn。 |
process |
実行するコマンド。 |
以下の例は、デフォルトの inittab ファイルです。
1 ap::sysinit:/sbin/autopush -f /etc/iu.ap 2 ap::sysinit:/sbin/soconfig -f /etc/sock2path 3 fs::sysinit:/sbin/rcS sysinit >/dev/msglog 2<>/dev/msglog </dev/console 4 is:3:initdefault: 5 p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/msglog 2<>/dev/... 6 sS:s:wait:/sbin/rcS >/dev/msglog 2<>/dev/msglog </dev/console 7 s0:0:wait:/sbin/rc0 >/dev/msglog 2<>/dev/msglog </dev/console 8 s1:1:respawn:/sbin/rc1 >/dev/msglog 2<>/dev/msglog </dev/console 9 s2:23:wait:/sbin/rc2 >/dev/msglog 2<>/dev/msglog </dev/console 10 s3:3:wait:/sbin/rc3 >/dev/msglog 2<>/dev/msglog </dev/console 11 s5:5:wait:/sbin/rc5 >/dev/msglog 2<>/dev/msglog </dev/console 12 s6:6:wait:/sbin/rc6 >/dev/msglog 2<>/dev/msglog </dev/console 13 fw:0:wait:/sbin/uadmin 2 0 >/dev/msglog 2<>/dev/msglog </dev/console 14 of:5:wait:/sbin/uadmin 2 6 >/dev/msglog 2<>/dev/msglog </dev/console 15 rb:6:wait:/sbin/uadmin 2 1 >/dev/msglog 2<>/dev/msglog </dev/console 16 sc:234:respawn:/usr/lib/saf/sac -t 300 17 co:234:respawn:/usr/lib/saf/ttymon -g -h -p "`uname -n` console login: " -T terminal-type -d /dev/console -l console -m ldterm,ttcompat |
STREAMS モジュールを初期化します。
ソケット転送プロバイダを構成します。
ファイルシステムを初期化します。
デフォルトの実行レベルを定義します。
電源障害の場合のシャットダウンを指定します。
シングルユーザーモードを定義します。
実行レベル 0 を定義します。
実行レベル 1 を定義します。
実行レベル 2 を定義します。
実行レベル 3 を定義します。
実行レベル 5 を定義します。
実行レベル 6 を定義します。
未使用レベル firmware を定義します。
未使用レベル off を定義します。
未使用レベル reboot を定義します。
サービスアクセスコントローラを初期化します。
コンソールを初期化します。
init プロセスが起動されます。init プロセスは、/etc/default/init ファイルを読み取って環境変数を設定します。デフォルトでは、TIMEZONE 変数だけが設定されます。
init は inittab ファイルを読み取って、次の処理を行います。
デフォルトの実行レベル 3 を定義する initdefault エントリを識別します。
action フィールドが sysinit になっているすべてのプロセスエントリを実行して、ユーザーがログインする前に特別な初期設定処理がすべて行われるようにします。
rstate フィールドが 3 になっている (デフォルトの実行レベル 3 と一致する) プロセスエントリを実行します。
init プロセスが inittab ファイルを使用する方法についての詳細は、init(1M) のマニュアルページを参照してください。
表 8-3 に、実行レベル 3 の action フィールドで使用するキーワードについて説明します。
表 8-3 実行レベル 3 の action キーワードの説明
キーワード |
指定されたプロセスの実行方法 |
---|---|
powerfail |
システムが電源切断シグナルを受信したときだけプロセスを実行する。 |
wait |
指定されたプロセスの終了を待つ。 |
respawn |
プロセスがまだ起動されていない場合は起動する。プロセスがすでに起動されている場合は、inittab ファイルの検索を続ける。 |
表 8-4 に、実行レベル 3 で実行されるプロセス (またはコマンド) について説明します。
表 8-4 実行レベル 3 のコマンドの説明
コマンドまたはスクリプト名 |
説明 |
---|---|
/usr/sbin/shutdown |
システムをシャットダウンする。init プロセスは、システムが powerfail シグナルを受信した場合にのみ shutdown コマンドを実行する。 |
/sbin/rcS |
ルート (/)、 /usr、 /var、 /var/adm のファイルシステムをマウントしてチェックする。 |
/sbin/rc2 |
標準のシステムプロセスを起動して、システムを実行レベル 2 (マルチユーザーモード) に移行する。 |
/sbin/rc3 |
実行レベル 3 で使用される NFS 資源共有を開始する。 |
/usr/lib/saf/sac -t 30 |
ポートモニターと UUCP 用のネットワークアクセスを起動する。このプロセスは失敗すると再起動される。 |
/usr/lib/saf/ttymon -g -h -p "`uname -n` console login: " -T terminal_type -d /dev/console -l console |
コンソールでのログイン要求を監視する ttymon プロセスを起動する。 このプロセスは失敗すると再起動される。SPARC システムの terminal_type は sun である。 IA システムの terminal_type は AT386 である。 |