NAZWA

reboot - przeładowanie systemu lub włączenie/wyłączenie Ctrl-Alt-Del

BIBLIOTEKA

Standardowa biblioteka C ( libc, -lc)

SKŁADNIA

/* Since Linux 2.1.30 there are symbolic names  LINUX_REBOOT_*
   for the constants and a fourth argument to the call: */
#include <linux/reboot.h>  /* Definicja stałych LINUX_REBOOT_*/
#include <sys/syscall.h>   /* Definicja stałych SYS_* */
#include <unistd.h>
int syscall(SYS_reboot, int magic, int magic2, int cmd, void *arg);
/* Pod glibc i większością libc alternatywnych (w tym uclibc, dietlibc,
   musl i kilku innych) niektóre stałe dostały nazwy  RB_*, a wywołanie
   biblioteczne jest jednoargumentową funkcją opakowującą
   wywołanie systemowe: */
#include <sys/reboot.h>    /* Definicja stałych RB_* */
#include <unistd.h>
int reboot(int cmd);

OPIS

Wywołanie reboot() przeładowuje system albo włącza lub wyłącza kombinację klawiszy odpowiedzialną za przeładowanie systemu (nazywaną w skrócie CAD od domyślnej kombinacji Ctrl-Alt-Del, którą można zmienić przy pomocy loadkeys(1)).
This system call fails (with the error EINVAL) unless magic equals LINUX_REBOOT_MAGIC1 (that is, 0xfee1dead) and magic2 equals LINUX_REBOOT_MAGIC2 (that is, 0x28121969). However, since Linux 2.1.17 also LINUX_REBOOT_MAGIC2A (that is, 0x05121996) and since Linux 2.1.97 also LINUX_REBOOT_MAGIC2B (that is, 0x16041998) and since Linux 2.5.71 also LINUX_REBOOT_MAGIC2C (that is, 0x20112000) are permitted as values for magic2. (The hexadecimal values of these constants are meaningful.)
Parametr cmd może przyjmować następujące wartości:
LINUX_REBOOT_CMD_CAD_OFF
(RB_DISABLE_CAD, 0). CAD jest wyłączony, co oznacza, że naciśnięcie kombinacji klawiszy CAD wyśle procesowi init (procesowi nr 1) sygnał SIGINT i ten proces zdecyduje, jaką akcję wykonać (być może: zabicie wszystkich procesów, sync, restart).
LINUX_REBOOT_CMD_CAD_ON
(RB_ENABLE_CAD, 0x89abcdef). CAD jest włączony, co oznacza, że naciśnięcie klawiszy CAD wywoła od razu akcję skojarzoną z LINUX_REBOOT_CMD_RESTART.
LINUX_REBOOT_CMD_HALT
(RB_HALT_SYSTEM, 0xcdef0123; od wersji 1.1.76 Linuksa). Wypisywany jest komunikat "System halted.", a system jest zatrzymywany. Kontrola jest przekazywana do monitora ROM, jeżeli istnieje. Jeżeli nie wywołano wcześniej sync(2), niezapisane dane zostaną utracone.
LINUX_REBOOT_CMD_KEXEC
(RB_KEXEC, 0x45584543, od wersji 2.6.13 Linuksa). Uruchamia jądro załadowane wcześniej za pomocą kexec_load(2). Opcja jest dostępna tylko wtedy, jeśli jądro zostało skonfigurowane z CONFIG_KEXEC.
LINUX_REBOOT_CMD_POWER_OFF
(RB_POWER_OFF, 0x4321fedc; od wersji 2.1.30 Linuksa). Wypisywany jest komunikat "Power down.", system jest zatrzymywany i jeżeli jest to możliwe, zasilanie jest odłączane. Jeżeli nie wywołano wcześniej sync(2), niezapisane dane zostaną utracone.
LINUX_REBOOT_CMD_RESTART
(RB_AUTOBOOT, 0x1234567). Wypisywany jest komunikat "Restarting system.", a natychmiast po tym następuje przeładowanie systemu. Jeżeli nie wywołano wcześniej sync(2), niezapisane dane zostaną utracone.
LINUX_REBOOT_CMD_RESTART2
(0xa1b2c3d4; od wersji 2.1.30 Linuksa). Wypisywany jest komunikat "Restarting system with command '%s'" i natychmiast po nim system jest przeładowywany (używając polecenia podanego w argumencie arg). Jeżeli nie wywołano wcześniej sync(2), niezapisane dane zostaną utracone.
LINUX_REBOOT_CMD_SW_SUSPEND
(RB_SW_SUSPEND, 0xd000fce1; od wersji 2.5.18 Linuksa). System jest wstrzymywany (hibernowany) na dysk. Opcja jest dostępna tylko wtedy, jeśli jądro zostało skonfigurowane z CONFIG_HIBERNATION.
Tylko administrator może wywołać funkcję reboot().
Dokładny wynik powyższych akcji zależy od architektury komputera. Obecnie (2.1.122) dodatkowy parametr nie ma żadnego znaczenia dla architektury i386, jednakże typ restartowania systemu może być określony w argumentach linii poleceń jądra ("reboot=...") jako restart albo ciepły, albo zimny oraz albo twardy, albo przez BIOS.

Zachowanie wewnątrz przestrzeni nazw 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.

WARTOŚĆ ZWRACANA

For the values of cmd that stop or restart the system, a successful call to reboot() does not return. For the other cmd values, zero is returned on success. In all cases, -1 is returned on failure, and errno is set to indicate the error.

BŁĘDY

EFAULT
Problem pobierania danych z przestrzeni użytkownika w wypadku wywołania LINUX_REBOOT_CMD_RESTART2.
EINVAL
Niepoprawne liczby magiczne lub cmd.
EPERM
The calling process has insufficient privilege to call reboot(); the caller must have the CAP_SYS_BOOT inside its user namespace.

STANDARDY

Funkcja reboot() jest specyficzna dla Linuksa i nie powinna być używana w programach, które mają działać pod różnymi systemami.

ZOBACZ TAKŻE

systemctl(1), systemd(1), kexec_load(2), sync(2), bootparam(7), capabilities(7), ctrlaltdel(8), halt(8), shutdown(8)

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Robert Luberda <[email protected]> i Michał Kułach <[email protected]>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej [email protected]