名前 | 形式 | 機能説明 | セキュリティ | オプション | ファイル | 属性 | 関連項目 | 診断 | 注意事項
init は汎用のプロセス生成コマンドです。その主な役割は、ファイル /etc/inittab に格納されている情報に基づいてプロセスを生成することです。
任意の時点で、システムは 8 つの実行レベルのいずれか 1 つにあります。実行レベルはソフトウェア構成で、そこでは選択されたプロセスグループだけが存在します。各実行レベルに対する、init によって生成されるプロセスは、/etc/inittab で定義されています。init は 8 つの実行レベル、つまり 0-6 および S または s (S と s は同じ) のいずれか 1 つを取ることができます。実行レベルは、特権ユーザーが /sbin/init を実行すると変更されます。/sbin/init は、起動時にオペレーティングシステムによって生成された元の init に適切なシグナルを送り、移行する実行レベルを通知します。
システムが起動されると、init が呼び出され、次のイベントが発生します。最初に init は、/etc/default/init を読み込み、環境変数を設定します。通常はここで、TZ (タイムゾーン) およびロケール関連の環境、すなわち LANG、LC_CTYPE などが設定されます (このページの最後にある「ファイル」の項を参照)。次に init は、/etc/inittab を調べ、initdefault エントリを探します(inittab(4) のマニュアルページを参照)。initdefault のエントリ
init は通常、このエントリで指定された実行レベルを、開始時の最初の実行レベルとして使用します。
init はユーザーに、システムコンソールから実行レベルを入力するように要求します。
init はシングルユーザー状態に移行します。この状態では、システムコンソールデバイス (/dev/console) が読み書き用にオープンされ、コマンド /sbin/su (su(1M) のマニュアルページを参照) が呼び出されます。init または telinit のどちらか一方を使用して、システムの実行レベルを変更します。(ファイルの終わり (EOF) を使用して) シェルを終了させたが、/etc/inittab が存在しない場合、init は再びシングルユーザー状態に戻すだけです。
init は対応する実行レベルに移行します。実行レベル 0、5、および 6 はシステム停止用に予約されています。実行レベル 2、3、 および 4 は、マルチユーザー操作用に使用できます。
電源投入後に、init が最初のシングルユーザー状態以外の実行レベルに移行する場合、init はまず、/etc/inittab を走査して boot および bootwait エントリを探します (inittab(4) のマニュアルページを参照)。移行する実行レベルがエントリの実行レベルと一致している場合は、/etc/inittab の他のプロセスが実行される前に、これらのエントリが実行されます。このようにすると、ファイルシステムのマウントなど、オペレーティングシステムの特殊な初期化を先に終えてから、ユーザーにシステムを使用させることができます。次に init は、/etc/inittab を走査し、その実行レベルで処理すべき他のすべてのエントリを実行します。
/etc/inittab の各プロセスを生成するために、init は各エントリを読み込み、再生成が必要なエントリごとに、子プロセスを生成します。/etc/inittab で指定された全プロセスを生成すると、init は、以下の状態のために待機します。子孫プロセスの1 つが消滅する、powerfail シグナルを受けとる、システムの実行レベルの変更を要求する他の init または telinit プロセスから送られるシグナルを受けとる。これらの状態のいずれか 1 つが発生すると、init は /etc/inittab を再検査します。
/etc/inittab にはいつでも新しいエントリを追加できますが、init は上記の 3 つの状態のいずれかが発生するまで待機し続けるので、/etc/inittab を再検証しません。この状況を回避するには、init Q または init q コマンドを使用して、init が /etc/inittab をただちに再検査するようにします。
起動時に init が呼び出されたとき、また、システムがシングルユーザー状態から別の実行状態に移行するたびに、init はコンソールの ioctl(2) 状態をファイル /etc/ioctl.sysconに格納されているモードに設定します。init はシングルユーザー状態が移行するたびに、このファイルに書き込みを行います。
実行レベルの変更が要求されると、init は目標の実行レベルで定義されていないすべてのプロセスに警告シグナル (SIGTERM
) を送ります。init は 5 秒間待機したのち、終了シグナル (SIGKILL
) を送信することによって、これらのプロセスを強制終了させます。
init によって生成されたプロセスが終了したことを通知するシグナルを受信すると、init は、その事実と原因を /var/adm/utmpx と /var/adm/wtmpx (存在していれば) に記録します (who(1) を参照) 。生成されたプロセスの履歴は /var/adm/wtmpx に記録されます。
init は powerfail シグナル (SIGPWR
) を受信した場合、/etc/inittab を走査し、タイプが powerfail と powerwait の特殊なエントリを探します。これらのエントリが呼び出されてから (実行レベルが許可する場合)、その後の処理が実行されます。このように、init はオペレーティングシステムの停止中にさまざまなクリーンアップおよび記録機能を実行します。
タイムゾーンや文字の書式といった環境変数のデフォルト値を /etc/default/init で設定できます。環境変数の一覧については、「ファイル」の項を参照してください。
/sbin/init にリンクされている telinit は、init のアクションを指示する場合に使用します。telinit は、1 文字の引数を取り、適切なアクションを実行するように、init にシグナルを送ります。
init は pam(3PAM) を使用してセッションを管理します。/etc/pam.conf に記述されている PAM 構成ポリシーにより、init に使用されるセッション管理モジュールが指定されます。以下に、pam.conf ファイルの抜粋を示します。UNIX セッション管理モジュールを使用するinit のエントリが指定されています。
init session required pam_unix_session.so.1
init サービスに対応するエントリがない場合、「other 」のサービスのエントリが使用されます。
ファームウェアモードに移行します。
システムをシステム管理者モードにします。すべてのローカルファイルシステムがマウントされます。いくつかの重要なコアプロセスだけが実行を続けます。このモードはオプションのユーティリティパッケージをインストールする場合など、管理作業を行うためのものです。すべてのファイルにアクセスできます。ユーザーはシステムにログインできません。
システムをマルチユーザーモードにします。すべてのマルチユーザー環境用の端末プロセスおよびデーモンが生成されます。一般に、この状態を、マルチユーザー状態といいます。
ネットワークを介してローカル資源を使用できるようにすることで、マルチユーザーモードを拡張します。
代替のマルチユーザー環境構成として定義できます。システム運用上は必要なく、通常は使用されません。
電源を切断しても問題が起きないように、マシンを停止させます。可能であれば、マシンの電源を自動的に切断させます。
オペレーティングシステムを停止し、/etc/inittab の initdefault エントリで定義された状態で再起動します。
/etc/inittab エントリに a、b、または c という実行レベルが設定されているときだけ処理します。これらは擬似状態であり、特定のコマンドを実行するように定義できますが、現在の実行レベルが変更されるわけではありません。
/etc/inittab を再検査します。
シングルユーザーモードに移行します。適切な形式の /etc/inittab ファイルがなくてもかまわない唯一の実行レベルです。このファイルが存在しない場合、デフォルトで init が入ることができる唯一の正当な実行レベルはシングルユーザーモードだけです。シングルユーザーモードでは、基本システム動作に必要なファイルシステムがマウントされます。システムがシングルユーザーモードに移行すると、これらのファイルシステムは (リモートファイルサーバーが提供している場合でも) マウントされたままになります。他のローカルファイルシステムもマウントされたままになります。シングルユーザーモードへの切り替え時に、init または init.d によって開始された、マルチユーザーモードでしか実行してはならないプロセスはすべて強制終了されます。さらに、utmpx エントリが設定されているプロセスもすべて強制終了されます。この最後の状態では、SAC が起動したすべてのポートモニターが確実に強制終了され、これらのポートモニターによって起動されたサービスも、ttymon login ログインサービスを含めてすべて強制終了されます。
システムコンソール装置
環境変数とそのデフォルト値を指定します。たとえば、タイムゾーン変数 TZ の場合、TZ=US/Pacific のように指定できます。変数は次のとおりです。
タイムゾーン情報 (ctime(3C) のマニュアルページを参照) またはタイムゾーン情報ファイル /usr/share/lib/zoneinfo の名前のどちらか一方を指定します。
init が使用し、すべてのプロセスが init プロセスから継承するマスク (umask(1) のマニュアルページを参照)。設定されていない場合、init はカーネルから継承したマスクを使用します。CMASK の設定に関係なく、init は必ず、022 で umask の適用を試みてからファイルを作成します。
文字の種類の情報
翻訳メッセージ
通貨の書式情報
数値の書式情報
時刻の書式情報
設定されている場合、他のすべての LC_* 環境変数でこの値が使用されます。
LC_ALL が設定されてなく、かつ特定の LC_* も設定されていない場合は、これら環境変数に LANG の値が使用されます。
内部通信用の名前付きパイプ
init によるプロセスディスパッチ制御
シングルユーザー状態に移行したときに init によって保存された、コンソールの ioctl (入出力制御) 状態
ユーザーアクセスおよび管理情報
ユーザーアクセスおよび管理情報の履歴
次の属性については、attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
---|---|
使用条件 | SUNWcsu |
login(1), sh(1), stty(1), who(1), shutdown(1M), su(1M), ttymon(1M), ioctl(2), kill(2), ctime(3C), pam(3PAM), inittab(4), pam.conf(4), utmpx(4), attributes(5), pam_authtok_check(5), pam_authtok_get(5), pam_authtok_store(5), pam_dhkeys(5), pam_passwd_auth(5), pam_unix(5), pam_unix_account(5), pam_unix_auth(5), pam_unix_session(5), termio(7I)
2 分間に 10 回以上、/etc/inittab 内の 1 つのエントリが再起動されていることを検出すると、init はそのエントリのコマンド文字列に誤りがあるとみなして、システムコンソール上にエラーメッセージを表示します。さらに 5 分経過するか、あるいはユーザーが生成した init または telinit からシグナルを受信するまで、init はそのエントリを再起動することを拒否します。このようにすることで、inittab ファイルに入力ミスがあった場合や /etc/inittabで参照されているプログラムが削除された場合でも、init がシステム資源を使い果たすのを防止できます。
init および telinit を実行できるのは、特権ユーザーだけです。
/etc/inittabで、S または s 状態をむやみに使用してはなりません。このファイルを変更するときに注意すべきことは、この状態を initdefault 以外の行に追加しないことです。
/etc/inittab の initdefault エントリでデフォルトの状態が指定されていない場合は、状態 6 になります。その結果、システムはファームウェアへのアクセスと再起動を繰り返すループに陥ります。
システムの起動時に utmpx ファイルを作成できない場合、システムは /etc/inittab の initdefault エントリで指定されている状態に関係なく、“s” の状態で起動します。/var ファイルシステムにアクセスできない場合には、この状況が発生することがあります。
システムが S または s 状態へ移行するときに、/etc/nologin ファイル (nologin(4) のマニュアルページを参照) が作成されます。その後、実行レベル 2 に移行すると、/etc/rc2.d ディレクトリにあるスクリプトによってこのファイルが削除されます。
init は内部通信に名前付きパイプ /etc/initpipe を使用します。
pam_unix(5) モジュールは、将来のリリースではサポートされなくなる可能性があります。同様の機能は、pam_authtok_check(5), pam_authtok_get(5), pam_authtok_store(5), pam_dhkeys(5), pam_passwd_auth(5), pam_unix_account(5), pam_unix_auth(5)、および pam_unix_session(5) で提供されています。
名前 | 形式 | 機能説明 | セキュリティ | オプション | ファイル | 属性 | 関連項目 | 診断 | 注意事項