reboot - przeładowanie systemu lub
włączenie/wyłączenie Ctrl-Alt-Del
Standardowa biblioteka C (
libc,
-lc)
/* 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);
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.
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.
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.
- 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.
Funkcja
reboot() jest specyficzna dla Linuksa i nie powinna być
używana w programach, które mają działać
pod różnymi systemami.
systemctl(1),
systemd(1),
kexec_load(2),
sync(2),
bootparam(7),
capabilities(7),
ctrlaltdel(8),
halt(8),
shutdown(8)
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]