.\" Copyright (c) 1980, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Donn Seeley at Berkeley Software Design, Inc. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)init.8 8.3 (Berkeley) 4/18/94 .\" %Id: init.8,v 1.4.2.3 1997/08/18 03:30:04 davidn Exp % .\" jpman %Id: init.8,v 1.2 1997/05/27 08:12:44 yugawa Stab % .\" .Dd April 18, 1994 .Dt INIT 8 .Os BSD 4 .Sh 名称 .Nm init .Nd プロセス制御の初期化を行う .Sh 書式 .Nm init .Sh 解説 .Nm init はブート処理の最後に起動されます。 .Nm init は通常、 .Xr reboot 8 で説明されている自動リブートシーケンスを実行します。それが成功すると、 システムはマルチユーザモードになります。 リブートスクリプトの実行に失敗すると、 .Nm init はスーパユーザが使うシェルを起動してシングルユーザモードを 開始させます。 .Nm init プログラムは、ブートプログラムからのパラメータの指示を受けて、マルチユー ザモードに移行せず、一般のデーモンを起動することなくシングルユーザモードの シェルを起動させることができます。 その場合、システムはメンテナンスのためのモードになり、 シェルを抜ける (^D を入力する)ことで シングルユーザモードからマルチユーザモードになります。 これによって、 .Nm init は .Pa /etc/rc をファストブートモード(ディスクチェック省略)で実行します。 .Pp もし .Xr ttys 5 ファイルの .Nm console のエントリが ``insecure'' にマークされていた場合には、 .Nm init はシングルユーザモードのシェルを起動する前に、スーパユーザのパスワードを 要求します。 パスワードチェックは、 .Nm console が ``secure'' にマークされていればスキップされます。 .Pp カーネルは 4 種類のセキュリティレベルで走行します。どのスーパーユーザ プロセスもセキュリティレベルを上げることができますが、レベルを下げることが できるのは .Nm init だけです。セキュリティレベルは以下のように定義されます: .Bl -tag -width flag .It Ic -1 常に危険なモード \- システムは常にレベル 0 モードで走行します。 .It Ic 0 危険なモード \- 変更不可(immutable)フラグや追加のみ(append-only)フラグは 無効にされます。 全てのデバイスは、そのパーミッションに従って読み書きされます。 .It Ic 1 安全なモード \- 変更不可フラグや追加のみのフラグは変更されません。 マウントされたファイルシステムのディスクおよび .Pa /dev/mem や .Pa /dev/kmem は read-only となります。 .It Ic 2 安全度の高いモード \- レベル 1 のモードの効果に加え、ディスクは マウントさていようといまいと、( .Xr mount 2 を除き) 常に read-only となります。 このレベルは、ファイルシステムをアンマウントして変更を加えることを不可能に します。また、システムがマルチユーザで走行中に .Xr newfs 8 を実行することも出来なくなります。 .El .Pp 初期のセキュリティレベルが -1 だった場合、 .Nm init はセキュリティレベルを変更しません。 それ以外の場合、シングルユーザモードではレベル 0 で、マルチユーザモードでは レベル 1 で、システムは動作します。マルチユーザモードにおいてレベル 2 で システムを走らせたい場合は、シングルユーザの状態の間に、つまり、 .Pa /etc/rc の中で .Xr sysctl 8 を使って設定します。 .Pp マルチユーザモードの場合、 .Nm init は .Xr ttys 5 ファイルで指示された端末ポートのためのプロセスを管理します。 .Nm init はこのファイルを読み込み、2 番目のフィールドに指示されたコマンドを 実行します。 そのコマンドは通常、 .Xr getty 8 で、 .Nm getty はtty をオープン、初期化し、 .Xr login 1 プログラムを実行します。 .Nm login プログラムは、ユーザがログインするとシェルを起動します。ユーザが ログアウトするか異常終了するなどして、そのシェルが終了すると、 .Nm init プログラムが起こされ、 .Xr utmp 5 ファイルからユーザを消し、 .Xr wtmp 5 ファイルにログアウトを記録します。 このサイクルは、 .Nm init プログラムがその端末に新しい .Nm getty を実行することで繰り返されます。 .Pp ラインの状態 (on, off, secure, getty, ウインドウの情報) は、 .Xr ttys 5 ファイルを書き換えて .Dq Li "kill -HUP 1" によってシグナル .Dv SIGHUP を .Nm init に送ることで、リブートせずに変更できます。 このシグナルを受け取ると .Nm init は .Xr ttys 5 ファイルを再度読み込みます。 .Xr ttys 5 でラインがオフにされると、 .Nm init はそのラインに関係するセッションの制御プロセスに SIGHUP シグナルを送ります。 オフであったラインが .Xr ttys 5 ファイルでオンにされると、 .Nm init は新しい .Nm getty を起動して、新しいログインを可能にします。 ラインの getty やウインドウフィールドが変更された場合、その変更は現在 のログインセッションが終了するまで有効にはなりません。 (例えば、 .Nm init によって新しいプロセスが起動されるまで有効にならない。) .Xr ttys 5 中のあるラインをコメントアウトあるいは削除した場合は、 .Nm init はそのラインに関しては何も実行しません。 しかしこの場合、 .Xr ttys 5 ファイルと .Xr utmp 5 ファイル内の記録情報が一致しなくなるため、試すことはお勧めしません。 .Pp .Dq Li "kill \-TERM 1" などによって terminate シグナル .Pq Dv TERM を受けると、 .Nm init はマルチユーザモードを終了し、シングルユーザモードに復帰します。 ハードウェアまたはソフトウェアの問題でデッドロックしたプロセスがある場合、 .Xr init はすべてのプロセスの終了を待たず(これは無限に終らないかも知れません)、 30 秒間でタイムアウトして警告のメッセージを出力します。 .Pp terminal stop シグナル .Pq Dv TSTP を送ると( .Dq Li "kill \-TSTP 1" )、 .Nm init は新しい .Xr getty を起動するのをやめ、徐々にシステム停止可能な状態にします。 その後、hangup シグナルで完全なマルチユーザモードに戻り、terminate シグナル でシングルユーザモードに移ります。 この hook は .Xr reboot 8 と .Xr halt 8 で使われています。 .Pp interrupt シグナル .Pq Dv INT を送ると( .Dq Li "kill \-INT 1" )、 .Nm init はすべてのプロセスを(デッドロックプロセスを待たずに)終了させ、 リブートを実行します。 この操作は、マシンがハングした時に、カーネルの中から、あるいは、X から、 システムを安全にシャットダウンするのに便利です。 .Pp マシンをシャットダウンする時、 .Nm init は .Pa /etc/rc.shutdown スクリプトを実行しようとします。 このスクリプトは .Nm innd (インターネットニュースサーバ) のような特定のプログラムを綺麗に終了させるために使用可能です。 .Pp .Nm init の役割は非常に重要で、もし .Nm init が死ぬとシステムが自動的にリブートされます。 もしブート時に .Nm init プログラムを見つけられなければ、システムは以下のようなメッセージを出力 して panic で終了します。 ``panic: init died (signal %d, exit %d)'' .Sh 診断 .Bl -diag .It "getty repeating too quickly on port %s, sleeping" ラインにサービスを提供するプロセスが、起動されるたびにすぐ終了してしまう。 これは、端末ラインに着信があるかノイズが大きい場合にしばしば起こります。 .Em "init は 10 秒間スリープし、" .Em "その後、プロセスを開始させようとし続けます。" .Pp .It "some processes would not die; ps axl advised." シャットダウンの際、ハングしていて終了させられないプロセスがあります。 この状態は、通常、デバイスに異常があるときにデバイスドライバではり付い てしまうことにより起こります。 .El .Sh 関連ファイル .Bl -tag -width /var/log/wtmp -compact .It Pa /dev/console システムのコンソールデバイス .It Pa /dev/tty* .Xr ttys 5 内にある端末ポート .It Pa /var/run/utmp 現在ログインしているのユーザの情報 .It Pa /var/log/wtmp すべてのログイン・ログアウトの情報 .It Pa /etc/ttys 端末の初期化情報が書かれたファイル .It Pa /etc/rc システム立ち上げ用スクリプト .It Pa /etc/rc.shutdown システムシャットダウン用スクリプト .El .Sh 関連項目 .Xr kill 1 , .Xr login 1 , .Xr sh 1 , .Xr ttys 5 , .Xr crash 8 , .Xr getty 8 , .Xr halt 8 , .Xr rc 8 , .Xr reboot 8 , .Xr shutdown 8 .Sh 歴史 .Nm コマンドは .At v6 から登場しました。 .Sh バグ .Xr sysctl を持たないシステムは、セキュリティレベル \-1 で動作します。