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 で登場しました。