REBOOT
Section: Linux Programmer's Manual (2)
Updated: 2019-03-06
Index
JM Home Page
roff page
名前
reboot - 再起動する。または Ctrl-Alt-Delを有効・無効にする
書式
/* カーネル 2.1.30 以降では、定数としてシンボリックな名前
LINUX_REBOOT_* が定義されており、呼び出しの第 4 引数として
指定することができる。*/
#include <unistd.h>
#include <linux/reboot.h>
int reboot(int magic, int magic2, int cmd, void
*arg);
/* Under glibc and most alternative libc's (including uclibc, dietlibc,
musl and a few others), some of the constants involved have gotten
symbolic names RB_*, and the library call is a 1-argument
wrapper around the system call: */
#include <unistd.h>
#include <sys/reboot.h>
int reboot(int cmd);
説明
reboot() はシステムを再起動する。または再起動のキーストロークである Ctrl-Alt-Delete (CAD) を有効/無効にする。
このキーストロークは loadkeys(1) によって変更できる。
magic が LINUX_REBOOT_MAGIC1 (値は 0xfee1dead) であり、かつ magic2 が
LINUX_REBOOT_MAGIC2 (672274793) でなければ、このシステムコールは (エラー EINVAL で) 失敗する。
しかし 2.1.17 からは LINUX_REBOOT_MAGIC2A (85072278) が、 また 2.1.97 からは
LINUX_REBOOT_MAGIC2B (369367448) が、 2.5.71 からは LINUX_REBOOT_MAGIC2C
(537993216) が magic2 の値として指定できるようになった (これらの定数の 16 進での 表記にはちょっとした意味がある)。
cmd 引数には以下の値を指定できる。
- LINUX_REBOOT_CMD_CAD_OFF
-
(RB_DISABLE_CAD, 0) CAD を無効にする。 これ以降に CAD キーストロークが入力されると、 SIGINT
シグナルが init (プロセス 1) に送られる。 このシグナルを受けると、おそらく init プロセスは 前もって定められた動作を行うことになる
(多分すべてのプロセスの kill, sync, 再起動)。
- LINUX_REBOOT_CMD_CAD_ON
-
(RB_ENABLE_CAD, 0x89abcdef) CAD を有効にする。 これ以降に CAD キーストロークが入力されると、 ただちに
LINUX_REBOOT_CMD_RESTART に関連付けられた動作が行われるようになる。
- LINUX_REBOOT_CMD_HALT
-
(RB_HALT_SYSTEM, 0xcdef0123; Linux 1.1.76 以降) "System halted."
というメッセージが表示され、システムは停止 (halt) する。 制御は ROM モニタに移る (ROM モニタがある場合)。 先に
sync(2) を行なわないと、データが失われる。
- LINUX_REBOOT_CMD_KEXEC
-
(RB_KEXEC, 0x45584543, Linux 2.6.13 以降) kexec_load(2)
を使って事前にロードされたカーネルを実行する。このオプションが利用できるのは、カーネルのコンフィグで CONFIG_KEXEC
が有効になっている場合にのみである。
- LINUX_REBOOT_CMD_POWER_OFF
-
(RB_POWER_OFF, 0x4321fedc; Linux 2.1.30 以降) "Power down"
というメッセージが表示され、システムは停止 (stop) する。 可能な場合はシステムの電源が落とされる。 先に sync(2)
を行なわないと、データが失われる。
- LINUX_REBOOT_CMD_RESTART
-
(RB_AUTOBOOT, 0x1234567) "Restarting system." というメッセージが表示され、
デフォルトの再起動処理がただちに実行される。 先に sync(2) を行なわないと、データが失われる。
- LINUX_REBOOT_CMD_RESTART2
-
(0xa1b2c3d4; Linux 2.1.30 以降) "Restarting system with command '%s'"
というメッセージが表示され、 ただちに ( arg に指定されたコマンドを用いて) 再起動 (restart) が行われる。 先に
sync(2) を行なわないと、データが失われる。
- LINUX_REBOOT_CMD_SW_SUSPEND
-
(RB_SW_SUSPEND, 0xd000fce1; Linux 2.5.18 以降). システムがディスクにサスペンド (ハイバネーション)
される。このオプションはカーネルで CONFIG_HIBERNATION が有効になっている場合にのみ利用できる。
スーパーユーザーだけが reboot() を呼び出すことができる。
上述のアクションの実際の効果はアーキテクチャーに依存する。 i386 アーキテクチャーでは、現在のところ (2.1.122) 付加引数は
何も行わないが、再起動のタイプをカーネルのコマンドライン引数 ("reboot=...") によって定めることができる。 これには warm または
cold と、 hard または BIOS 経由の再起動を 設定できる。
PID 名前空間内での動作
Since Linux 3.4, if reboot() is called from a PID namespace other than
the initial PID namespace with one of the cmd values listed below, it
performs a "reboot" of that namespace: the "init" process of the PID
namespace is immediately terminated, with the effects described in
pid_namespaces(7).
The values that can be supplied in cmd when calling reboot() in this
case are as follows:
- LINUX_REBOOT_CMD_RESTART, LINUX_REBOOT_CMD_RESTART2
-
The "init" process is terminated, and wait(2) in the parent process
reports that the child was killed with a SIGHUP signal.
- LINUX_REBOOT_CMD_POWER_OFF, LINUX_REBOOT_CMD_HALT
-
The "init" process is terminated, and wait(2) in the parent process
reports that the child was killed with a SIGINT signal.
For the other cmd values, reboot() returns -1 and errno is set to
EINVAL.
返り値
cmd がシステムの停止や再起動を表す値の場合、呼び出しが成功すると reboot() は返らない。 cmd
が他の値の場合には、成功すると 0 が返る。 cmd の値に関わらず、失敗の場合には -1 が返り、 errno が適切に設定される。
エラー
- EFAULT
-
LINUX_REBOOT_CMD_RESTART2 の時にユーザースペースのデータの取得に問題があった。
- EINVAL
-
magic の数字か cmd が間違っている。
- EPERM
-
The calling process has insufficient privilege to call reboot(); the
caller must have the CAP_SYS_BOOT inside its user namespace.
準拠
reboot() は Linux に特有であり、移植を考慮したプログラムでは用いるべきではない。
関連項目
systemctl(1), systemd(1), kexec_load(2), sync(2),
bootparam(7), capabilities(7), ctrlaltdel(8), halt(8),
shutdown(8)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/ に書かれている。
Index
- 名前
-
- 書式
-
- 説明
-
- PID 名前空間内での動作
-
- 返り値
-
- エラー
-
- 準拠
-
- 関連項目
-
- この文書について
-
This document was created by
man2html,
using the manual pages.
Time: 03:33:33 GMT, December 05, 2022