reboot(2) - wariua/manpages-ko GitHub Wiki
reboot - μ¬λΆν νκΈ° λλ Ctrl-Alt-Del μΌκΈ°/λκΈ°
/* 컀λ λ²μ 2.1.30λΆν° μμ μ¬λ³Ό μ΄λ¦ LINUX_REBOOT_*μ νΈμΆμ
λ€ λ²μ§Έ μΈμκ° μλ€. */
#include <unistd.h>
#include <linux/reboot.h>
int reboot(int magic, int magic2, int cmd, void *arg);
/* glibc λ° λλ€μμ λ€λ₯Έ libcλ€(uclibc, dietlibc, musl λ±)μμλ
κ΄λ ¨ μμ μΌλΆκ° RB_*λΌλ μ¬λ³Ό μ΄λ¦μ κ°μ§κ³ μμΌλ©° λΌμ΄λΈλ¬λ¦¬
νΈμΆμ΄ μΈμ 1κ°μ§λ¦¬ μμ€ν
νΈμΆ λνΌμ΄λ€. */
#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
μ€λ₯λ‘) μ€ν¨νλ€. νμ§λ§ magic2
μ κ°μΌλ‘ 2.1.17λΆν° LINUX_REBOOT_MAGIC2A
(μ¦ 85072278)λ, 2.1.97λΆν° LINUX_REBOOT_MAGIC_2B
(μ¦ 369367448)λ, 2.5.71λΆν° LINUX_REBOOT_MAGIC2C
(μ¦ 537993216)λ νμ©νλ€. (μ΄ μμλ€μ 16μ§μ κ°μλ μλ―Έκ° μλ€.)
cmd
μΈμλ λ€μ κ°μ κ°μ§ μ μλ€.
LINUX_REBOOT_CMD_CAD_OFF
- (
RB_DISABLE_CAD
, 0). CADλ₯Ό λλ€. κ·Έλ¬λ©΄ CAD ν€ μ λ ₯ μ init(1λ² νλ‘μΈμ€)μκ²SIGINT
μκ·Έλμ΄ κ°κ³ , κ·Έ νλ‘μΈμ€μμ μ μ ν λμ(μλ§λ λͺ¨λ νλ‘μΈμ€ μ£½μ΄κ³ , sync νκ³ , μ¬λΆν νκΈ°)μ μ ν μ μλ€. LINUX_REBOOT_CMD_CAD_ON
- (
RB_ENABLE_CAD
, 0x89abcdef). CADλ₯Ό μΌ λ€. κ·Έλ¬λ©΄ CAD ν€ μ λ ₯ μ μ¦μLINUX_REBOOT_CMD_RESTART
μ λμνλ λμμ΄ μ΄λ€μ§λ€. LINUX_REBOOT_CMD_HALT
- (
RB_HALT_SYSTEM
, 0xcdef0123, 리λ μ€ 1.1.76λΆν°). "System halted." λ©μμ§λ₯Ό μ°κ³ μ μμ€ν μ λ©μΆλ€. ROM λͺ¨λν°κ° μμΌλ©΄ κ·Έλ¦¬λ‘ μ μ΄κ° κ°λ€. 미리 sync(2) νμ§ μμμΌλ©΄ λ°μ΄ν°κ° μ μ€λλ€. LINUX_REBOOT_CMD_KEXEC
- (
RB_KEXEC
, 0x45584543, 리λ μ€ 2.6.13λΆν°). kexec_load(2)λ‘ λ―Έλ¦¬ μ μ¬ν΄ λ 컀λμ μ€ννλ€. 컀λμ΄CONFIG_KEXEC
λ‘ κ΅¬μ±λ κ²½μ°μλ§ μ΄ μ΅μ μ μΈ μ μλ€. LINUX_REBOOT_CMD_POWER_OFF
- (
RB_POWER_OFF
, 0x4321fedc, 리λ μ€ 2.1.30λΆν°). "Power down." λ©μμ§λ₯Ό μ°κ³ μ μμ€ν μ λ©μΆκ³ , κ°λ₯ν κ²½μ° μμ€ν μ μ μμ λͺ¨λ μ κ±°νλ€. 미리 sync(2) νμ§ μμμΌλ©΄ λ°μ΄ν°κ° μ μ€λλ€. LINUX_REBOOT_CMD_RESTART
- (
RB_AUTOBOOT
, 0x1234567). "Restarting system." λ©μμ§λ₯Ό μ°κ³ μ μ¦μ κΈ°λ³Έ μ¬μμ λμμ μννλ€. 미리 sync(2) νμ§ μμμΌλ©΄ λ°μ΄ν°κ° μ μ€λλ€. LINUX_REBOOT_CMD_RESTART2
- (0xa1b2c3d4, 리λ
μ€ 2.1.30λΆν°). "Restarting system with command '%s'" λ©μμ§λ₯Ό μ°κ³ μ μ¦μ (
arg
μ μ€ λͺ λ Ή λ¬Έμμ΄μ μ¬μ©ν΄) μ¬μμμ μννλ€. 미리 sync(2) νμ§ μμμΌλ©΄ λ°μ΄ν°κ° μ μ€λλ€. LINUX_REBOOT_CMD_SW_SUSPEND
- (
RB_SW_SUSPEND
, 0xd000fce1, 리λ μ€ 2.5.18λΆν°). μμ€ν μ λμ€ν¬μ μ μ₯νκ³ μ€μ§(νμ΄λ²λ€μ΄μ )νλ€. 컀λμ΄CONFIG_HIBERNATION
μΌλ‘ ꡬμ±λ κ²½μ°μλ§ μ΄ μ΅μ μ μΈ μ μλ€.
μνΌμ μ λ§ reboot()
λ₯Ό νΈμΆν μ μλ€.
μ λμλ€μ μ νν ν¨κ³Όλ μν€ν μ²μ λ°λΌ λ€λ₯Ό μ μλ€. i386 μν€ν μ²μμ μΆκ° μΈμλ (2.1.122) νμ¬ μ무 μν λ νμ§ μμΌλ©° 컀λ λͺ λ Ήν μΈμ("reboot=...")λ‘ μ¬λΆν μ΄ μκ³Ό μ½λ μ€ μ΄λ μͺ½μ΄μ΄μΌ νλμ§, νλμΈμ§ BIOSλ₯Ό κ±°μ³μΌ νλμ§ μ ν μ μλ€.
리λ
μ€ 3.4λΆν°λ κΈ°λ³Έ PID λ€μμ€νμ΄μ€ μλ PID λ€μμ€νμ΄μ€μμ μλ λμ΄ν cmd
κ°λ€ μ€ νλλ‘ reboot()
λ₯Ό νΈμΆνλ©΄ κ·Έ λ€μμ€νμ΄μ€μ "μ¬λΆν
"μ μννλ€. μ¦ κ·Έ PID λ€μμ€νμ΄μ€μ "init" νλ‘μΈμ€κ° μ¦μ μ’
λ£λλλ° pid_namespaces(7)μμ κ·Έ ν¨κ³Όλ₯Ό μ€λͺ
νλ€.
μ΄ κ²½μ° reboot()
νΈμΆ μ cmd
μ μ€ μ μλ κ°λ€μ λ€μκ³Ό κ°λ€.
-
LINUX_REBOOT_CMD_RESTART
,LINUX_REBOOT_CMD_RESTART2
- "init" νλ‘μΈμ€κ° μ’
λ£λλ€. λΆλͺ¨ νλ‘μΈμ€μμμ wait(2)μ μμμ΄
SIGHUP
μκ·Έλλ‘ μ£½μλ€κ³ λ³΄κ³ νλ€. -
LINUX_REBOOT_CMD_POWER_OFF
,LINUX_REBOOT_CMD_HALT
- "init" νλ‘μΈμ€κ° μ’
λ£λλ€. λΆλͺ¨ νλ‘μΈμ€μμμ wait(2)μ μμμ΄
SIGINT
μκ·Έλλ‘ μ£½μλ€κ³ λ³΄κ³ νλ€.
λ€λ₯Έ cmd
κ°λ€μ λν΄μ reboot()
κ° -1μ λ°ννκ³ errno
λ₯Ό EINVAL
λ‘ μ€μ νλ€.
μμ€ν
μ λ©μΆκ±°λ μ¬μμνλ cmd
κ°λ€μμλ μ±κ³΅ν reboot()
νΈμΆμ΄ λ°ννμ§ μλλ€. λ€λ₯Έ cmd
κ°λ€μμλ μ±κ³΅ μ 0μ λ°ννλ€. λͺ¨λ κ²½μ°μμ μ€ν¨ μ -1μ λ°ννλ©° errno
λ₯Ό μ μ ν μ€μ νλ€.
EFAULT
-
LINUX_REBOOT_CMD_RESTART2
μμ μ¬μ©μ κ³΅κ° λ°μ΄ν°λ₯Ό κ°μ Έμ€λ λ° λ¬Έμ λ°μ. EINVAL
- λ§€μ§ λλ²λ
cmd
μλͺ»λ¨. EPERM
- νΈμΆ νλ‘μΈμ€κ°
reboot()
λ₯Ό νΈμΆν μΆ©λΆν νΉκΆμ κ°μ§κ³ μμ§ μμ. νΈμΆμκ° μκΈ° μ¬μ©μ λ€μμ€νμ΄μ€ λ΄μμCAP_SYS_BOOT
λ₯Ό κ°μ§κ³ μμ΄μΌ νλ€.
reboot()
λ 리λ
μ€ μ μ©μ΄λ―λ‘ μ΄μμ±μ΄ μμ΄μΌ νλ νλ‘κ·Έλ¨μμλ μ¬μ©νμ§ λ§μμΌ νλ€.
systemctl(1)
, systemd(1)
, kexec_load(2), sync(2), bootparam(7), capabilities(7), ctrlaltdel(8)
, halt(8)
, shutdown(8)
2019-03-06