REBOOT(2)

名称
reboot - システムをリブートするかまたはプロセッサを停止する

ライブラリ
libc

書式
<unistd.h> <sys/reboot.h> int reboot(int howto)

解説
reboot() はシステムをリブートします。スーパユーザだけが必要に応じてマシンを リブートできます。しかし、回復不可能なシステム障害の場合は、 リブートは自動的に起動されます。

howto はオプションのマスクです。システムコールインタフェースは インクルードファイル <sys/reboot.h> 内に定義された次のオプションを受付け、 新しいカーネルまたは新しいブートストラップと init プログラムに渡されるようにします。

RB_AUTOBOOT
    デフォルト。システムが通常の方法でリブートするようにします。

RB_ASKNAME
    ブートストラッププログラム自体によって解釈され、 どのファイルをブートすべきかに ついて、コンソールにプロンプトを表示するようにします。 通常、システムはファイル “xx(0,0)kernel” からブートされます。ここで、 xx はファイル名を入力するようにプロンプトを出さない場合の、 デフォルトのディスク名です。

RB_DFLTROOT
    コンパイル時に指定されたルートデバイスを使用します。通常、システムは、 可能であればブートされたデバイスをルートデバイスとして使用します (デフォルトの動作は、システムがどのドライブからロードされたかを判別する ブートストラッププログラムの能力に依存します。これはすべてのシステムで 可能なわけではありません)。

RB_DUMP
    リブートの前にカーネルメモリをダンプします。詳細については、 savecore(8) を参照してください。

RB_HALT
    プロセッサは単に停止されます。リブートは起きません。 このオプションは注意して使用する必要があります。

RB_POWEROFF
    システム停止の後、シャットダウンコードは、可能であれば電源を切ります。 これにはハードウェアのサポートが必要です。

RB_INITNAME
    システムがリブートした際に、 /sbin/init 以外の init プログラム (init(8) を参照) が実行されるよう指定するオプションです。 このスイッチは現時点では無効です。

RB_KDB
    シンボルテーブルをロードし、システム内の組み込みデバッガを有効にします。 カーネルがデバッグ用に構成されていない場合、このオプションは意味を持ち ません。これ以外のいくつかのオプションは、 このオプションと組み合わせると通常と異なる意味を持つようになりますが、 それらの機能を使用することは reboot() システムコールでは不可能な場合があります。詳細については、 ddb(4) を参照してください。

RB_NOSYNC
    通常、プロセッサが停止されるかまたはリブートされる前に、ディスクへまだ 書込まれていないデータがあればそれを書き込みます (sync(8) を参照)。 このオプションは、ファイルシステムへの変更が手作業で行われた場合や、 プロセッサが暴走している場合、有用なことがあります。

RB_RDONLY
    初期段階で、ルートファイルシステムを読取り専用でマウントします。 現在はこれがデフォルトであり、このオプションは無意味なものになっています。

RB_SINGLE
    通常のリブート処理ではまず自動的にディスクの一貫性チェックが行なわれ、 次いでマルチユーザ環境へ移行するようになっています。 RB_SINGLE は、これを行なわず、 システムをコンソール上のシングルユーザシェルでブートします。 RB_SINGLE は、実際にはブートし直されたシステムで init(8) プログラムによって解釈されます。

オプションを指定しない場合 (すなわち、 RB_AUTOBOOT が使用される場合)、システムは、プロセッサが所定の方法で選択した ユニット 0 のディスクの ルートファイルシステムにある “kernel” というファイルからリブートされます。 この際、通常はディスクの一貫性チェックが自動的に実行されます (fsck(8) を参照)。

戻り値
正常に処理が終了した場合、この呼び出しは戻ることはありません。 そうでない場合は -1 が返され、エラーがグローバル変数 errno 内に返されます。

エラー

[EPERM]
    呼び出し側がスーパーユーザではありません。

関連項目
crash(8), halt(8), init(8), reboot(8), savecore(8)

バグ
HP300 システムは、 RB_DFLTROOT と RB_KDB のどちらもサポートしていません。

歴史
reboot() 関数は 4.0BSD で登場しました。