init(8) FreeBSD 一般コマンドマニュアル

init

前のページ 上に戻る 次のページ

init




解説

     init はブート処理の最後に起動されます。 init は通常、 rc(8) で説明されて
     いる自動リブートシーケンスを実行します。それが成功すると、システムはマル
     チユーザモードになります。リブートスクリプトの実行に失敗すると、 init は
     スーパユーザが使うシェルを起動してシングルユーザモードを開始させます。
     init プログラムは、ブートプログラムからのパラメータの指示を受けて、マルチ
     ユーザモードに移行せず、一般のデーモンを起動することなくシングルユーザモ
     ードのシェルを起動させることができます。その場合、システムはメンテナンス
     のためのモードになり、シェルを抜ける (^D を入力する) ことでシングルユーザ
     モードからマルチユーザモードになります。これによって、 init/etc/rc を
     ファストブートモード (ディスクチェック省略) で実行します。

     もし ttys(5) ファイルの console のエントリが ``insecure'' にマークされて
     いた場合には、 init はシングルユーザモードのシェルを起動する前に、スーパ
     ユーザのパスワードを要求します。パスワードチェックは、 console が
     ``secure'' にマークされていればスキップされます。

     カーネルは 4 種類のセキュリティレベルで走行します。どのスーパユーザプロセ
     スもセキュリティレベルを上げることができますが、レベルを下げることができ
     るプロセスはありません。セキュリティレベルは以下のように定義されます:

     -1    常に危険なモード - システムは常にレベル 0 モードで走行します。これ
           は初期値のデフォルトです。

     0     危険なモード - 変更不可 (immutable) フラグや追加のみ (append-only)
           フラグはオフにできます。全てのデバイスは、そのパーミッションに従っ
           て読み書きされます。

     1     安全なモード - 変更不可フラグや追加のみのフラグはオフにできません。
           マウントされたファイルシステムのディスクおよび /dev/mem/dev/kmem は read-only となります。カーネルモジュール ( kld(4) 参
           照) は、ロードおよびアンロードできません。

     2     安全度の高いモード - レベル 1 のモードの効果に加え、ディスクはマウ
           ントさていようといまいと、( mount(2) を除き) 常に read-only となり
           ます。このレベルは、ファイルシステムをアンマウントして変更を加える
           ことを不可能にします。また、システムがマルチユーザで走行中に
           newfs(8) を実行することも出来なくなります。

           更に、カーネル時間の変更は 1 秒以内に制限されています。これ以上変更
           しようとすると、 ``Time adjustment clamped to +1 second'' という
           メッセージをログします。

     3     ネットワークの安全モード - 安全度の高いモードに加え、 IP パケット
           フィルタルール ( ipfw(8) および ipfirewall(4) 参照) を変更不可能と
           し、 dummynet(4) の設定を修正不可能とします。

     初期のセキュリティレベルが非 0 だった場合、 init はセキュリティレベルを変
     更しません。それ以外の場合、 init は、最初にレベル 1 に上げます。レベルは
     減らすことはできませんので、その後の操作においてはレベルは最低 1 であり、
     これはシングルユーザモードに戻る場合においても成立ちます。マルチユーザモ
     ムがその端末に新しい getty を実行することで繰り返されます。

     init は任意のデーモンを走行させ続けるためにも使用可能であり、デーモンが死
     んだ場合には自動的に再開します。この場合、 ttys(5) ファイルの 1 番目の
     フィールドは、設定されたデバイスノードへのパスを参照してはならず、デーモ
     ンに対する最後のコマンドライン引数として渡されます。これは AT&T System V
     UNIX /etc/inittab にある機能と同様です。

     ラインの状態 (on, off, secure, getty, ウィンドウの情報) は、 ttys(5) ファ
     イルを書き換えて ``kill -HUP 1'' によってシグナル SIGHUP を init に送るこ
     とで、リブートせずに変更できます。このシグナルを受け取ると initttys(5) ファイルを再度読み込みます。 ttys(5) でラインがオフにされると、
     init はそのラインに関係するセッションの制御プロセスに SIGHUP シグナルを送
     ります。オフであったラインが ttys(5) ファイルでオンにされると、 init は 2
     番目のフィールドで指定されるコマンドを起動します。ラインのコマンドやウィ
     ンドウフィールドが変更された場合、その変更は現在のログインセッションが終
     了するまで有効にはなりません。 (例えば、 init によって新しいプロセスが起
     動されるまで有効にならない。) ttys(5) 中のあるラインをコメントアウトある
     いは削除した場合は、 init はそのラインに関しては何も実行しません。しかし
     この場合、 ttys(5) ファイルと utmp(5) ファイル内の記録情報が一致しなくな
     るため、試すことはお勧めしません。

     ``kill -TERM 1'' などによって terminate シグナル (TERM) を受けると、 init
     はマルチユーザモードを終了し、シングルユーザモードに復帰します。ハード
     ウェアまたはソフトウェアの問題でデッドロックしたプロセスがある場合、 init
     はすべてのプロセスの終了を待たず (これは無限に終らないかも知れません)、
     30 秒間でタイムアウトして警告のメッセージを出力します。

     terminal stop シグナル (TSTP) を送ると ( ``kill -TSTP 1'' )、 init は新し
     いプロセスを起動するのをやめ、徐々にシステム停止可能な状態にします。その
     後、hangup シグナルで完全なマルチユーザモードに戻り、terminate シグナルで
     シングルユーザモードに移ります。この hook は reboot(8)halt(8) で使わ
     れています。

     interrupt シグナル (INT) を送ると ( ``kill -INT 1'' )、 init はすべてのプ
     ロセスを (デッドロックプロセスを待たずに) 終了させ、リブートを実行しま
     す。この操作は、マシンがハングした時に、カーネルの中から、あるいは、X か
     ら、システムを安全にシャットダウンするのに便利です。

     init は同じことを行いますが、ユーザ定義シグナル 1 (USR1) を送られた場合は
     マシンを停止し、ユーザ定義シグナル 2 (USR2) を送られた場合はマシンを停止
     してから電源を切ります (ハードウェアが許す場合)。

     マシンをシャットダウンする時、 init/etc/rc.shutdown スクリプトを実行
     しようとします。このスクリプトは innd (インターネットニュースサーバ) のよ
     うな特定のプログラムを綺麗に終了させるために使用可能です。

     init の役割は非常に重要で、もし init が死ぬとシステムが自動的にリブートさ
     れます。もしブート時に init プログラムを見つけられなければ、システムは
     ``panic: init died (signal %d, exit %d)'' のようなメッセージを出力して
     panic で終了します。

     するプロセスが、起動されるたびにすぐ終了してしまう。これは、端末ラインに
     着信があるかノイズが大きい場合にしばしば起こります。 init30 秒間スリ
     ープし、 その後、プロセスを開始させようとし続けます。

     some processes would not die; ps axl advised.  シャットダウンの際、ハング
     していて終了させられないプロセスがあります。この状態は、通常、デバイスに
     異常があるときにデバイスドライバで貼り付いてしまうことにより起こります。


関連ファイル

     /dev/console      システムのコンソールデバイス
     /dev/tty*         ttys(5) 内にある端末ポート
     /var/run/utmp     現在ログインしているのユーザの情報
     /var/log/wtmp     すべてのログイン・ログアウトの情報
     /etc/ttys         端末の初期化情報が書かれたファイル
     /etc/rc           システム立ち上げ用スクリプト
     /etc/rc.shutdown  システムシャットダウン用スクリプト


関連項目

     kill(1), login(1), sh(1), dummynet(4), ipfirewall(4), kld(4), ttys(5),
     crash(8), getty(8), halt(8), ipfw(8), rc(8), reboot(8), shutdown(8),
     sysctl(8)


歴史

     init コマンドは Version 6 AT&T UNIX から登場しました。


注意

     sysctl を持たないシステムは、セキュリティレベル -1 で動作します。

     ブートシーケンスにおいて、セキュリティレベルを 1 より高く設定するのがあま
     りにも早すぎると、 fsck(8) が一貫性のないファイルシステムを補修することを
     妨げてしまう可能性があります。セキュリティレベル設定を行う場所として適切
     なところは、全てのマルチユーザ立ち上げ処理が完了した後である、 /etc/rc の
     末尾です。

FreeBSD 4.4                     April 18, 1994                     FreeBSD 4.4

ABELNET VPSサービス