reboot(2) System Calls Manual reboot(2) NAZWA reboot - przeladowuje system lub wlacza/wylacza Ctrl-Alt-Del BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA /* Od Linuksa 2.1.30 istnieja symboliczne nazwy LINUX_REBOOT_* dla stalych oraz czwarty parametr wywolania: */ #include /* Definicja stalych LINUX_REBOOT_*/ #include /* Definicja stalych SYS_* */ #include int syscall(SYS_reboot, int magic, int magic2, int op, void *arg); /* Pod glibc i wiekszoscia libc alternatywnych (w tym uclibc, dietlibc, musl i kilku innych) niektore stale dostaly nazwy RB_*, a wywolanie biblioteczne jest jednoargumentowa funkcja opakowujaca wywolanie systemowe: */ #include /* Definicja stalych RB_* */ #include int reboot(int op); OPIS Wywolanie reboot() przeladowuje system albo wlacza lub wylacza kombinacje klawiszy odpowiedzialna za przeladowanie systemu (nazywana w skrocie CAD od domyslnej kombinacji Ctrl-Alt-Del, ktora mozna zmienic przy pomocy loadkeys(1)). To wywolanie systemowe sie nie powiedzie (z kodem EINVAL), chyba ze magic wynosi LINUX_REBOOT_MAGIC1 (czyli 0xfee1dead) i magic2 jest rowne LINUX_REBOOT_MAGIC2 (czyli 0x28121969). Jednakze magic2 moze przyjmowac dodatkowe wartosci: od Linuksa 2.1.17 - LINUX_REBOOT_MAGIC2A (czyli 0x05121996), od Linuksa 2.1.97 - LINUX_REBOOT_MAGIC2B (czyli 0x16041998), a od Linuksa 2.5.71 rowniez LINUX_REBOOT_MAGIC2C (czyli 0x20112000) (szesnastkowe wartosci powyzszych stalych maja znaczenie). Parametr op moze przyjmowac nastepujace wartosci: LINUX_REBOOT_CMD_CAD_OFF (RB_DISABLE_CAD, 0). CAD jest wylaczony, co oznacza, ze nacisniecie kombinacji klawiszy CAD wysle procesowi init (procesowi nr 1) sygnal SIGINT i ten proces zdecyduje, jaka akcje wykonac (byc moze: zabicie wszystkich procesow, sync, restart). LINUX_REBOOT_CMD_CAD_ON (RB_ENABLE_CAD, 0x89abcdef). CAD jest wlaczony, co oznacza, ze nacisniecie klawiszy CAD wywola od razu akcje skojarzona 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, jezeli istnieje. Jezeli nie wywolano wczesniej sync(2), niezapisane dane zostana utracone. LINUX_REBOOT_CMD_KEXEC (RB_KEXEC, 0x45584543, od wersji 2.6.13 Linuksa). Uruchamia jadro zaladowane wczesniej za pomoca kexec_load(2). Opcja jest dostepna tylko wtedy, jesli jadro zostalo 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 jezeli jest to mozliwe, zasilanie jest odlaczane. Jezeli nie wywolano wczesniej sync(2), niezapisane dane zostana utracone. LINUX_REBOOT_CMD_RESTART (RB_AUTOBOOT, 0x1234567). Wypisywany jest komunikat "Restarting system.", a natychmiast po tym nastepuje przeladowanie systemu. Jezeli nie wywolano wczesniej sync(2), niezapisane dane zostana 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 przeladowywany (uzywajac polecenia podanego w argumencie arg). Jezeli nie wywolano wczesniej sync(2), niezapisane dane zostana utracone. LINUX_REBOOT_CMD_SW_SUSPEND (RB_SW_SUSPEND, 0xd000fce1; od wersji 2.5.18 Linuksa). System jest wstrzymywany (hibernowany) na dysk. Opcja jest dostepna tylko wtedy, jesli jadro zostalo skonfigurowane z CONFIG_HIBERNATION. Tylko administrator moze wywolac funkcje reboot(). Dokladny wynik powyzszych akcji zalezy od architektury komputera. Obecnie (2.1.122) dodatkowy parametr nie ma zadnego znaczenia dla architektury i386, jednakze typ restartowania systemu moze byc okreslony w argumentach linii polecen jadra ("reboot=...") jako restart albo cieply, albo zimny oraz albo twardy, albo przez BIOS. Zachowanie wewnatrz przestrzeni nazw PID Od Linuksa 3.4, jesli reboot() jest wywolane z przestrzeni nazw PID innej niz pierwotna przestrzen nazw PID, z jedna z wartosci op podanych ponizej, wykonuje ,,przeladowanie" tej przestrzeni uzytkownika: proces ,,init" przestrzeni uzytkownika PID jest natychmiast konczony, z wszystkimi tego konsekwencjami, opisanymi w podreczniku pid_namespaces(7). Wartosci, jakie mozna podac w op, przy wywolywaniu reboot() w takiej sytuacji to: LINUX_REBOOT_CMD_RESTART LINUX_REBOOT_CMD_RESTART2 Proces ,,init" jest konczony, a wywolanie wait(2) w procesie macierzystym zglasza, ze potomek zostal zabity sygnalem SIGHUP. LINUX_REBOOT_CMD_POWER_OFF LINUX_REBOOT_CMD_HALT Proces ,,init" jest konczony, a wywolanie wait(2) w procesie macierzystym zglasza, ze potomek zostal zabity sygnalem SIGINT. W przypadku odmiennych wartosci op, reboot() zwraca -1 i ustawia errno na EINVAL. WARTOSC ZWRACANA Jesli podano wartosc op powodujaca zatrzymanie lub zrestartowanie systemu, to reboot() nie powraca. W przypadku innych wartosci parametru op zwracane jest zero, jesli funkcja zakonczyla sie powodzeniem. We wszystkich przypadkach (niezaleznie od wartosci op) w razie wystapienia bledu zwracane jest -1 ustawiane errno wskazujac blad. BLEDY EFAULT Problem pobierania danych z przestrzeni uzytkownika w wypadku wywolania LINUX_REBOOT_CMD_RESTART2. EINVAL Niepoprawne: liczby magiczne lub op. EPERM Proces wywolujacy nie ma odpowiednich uprawnien, aby wywolac reboot(); wymagane jest posiadanie przywileju CAP_SYS_BOOT (ang. capability) w swojej przestrzeni nazw uzytkownika. STANDARDY Linux. ZOBACZ TAKZE systemctl(1), systemd(1), kexec_load(2), sync(2), bootparam(7), capabilities(7), ctrlaltdel(8), halt(8), shutdown(8) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.9.1 2 maja 2024 r. reboot(2)