bootup(7) - wariua/manpages-ko GitHub Wiki
bootup - μμ€ν λΆν κ³Όμ
μμ€ν
λΆνΈμλ μ¬λ¬ λ€μν μμλ€μ΄ κ΄λ ¨λμ΄ μλ€. μμ€ν
μ μμ΄ λ€μ΄μ¨ μ§ν μμ€ν
BIOSμμ μ΅μνμ νλμ¨μ΄ μ΄κΈ°νλ₯Ό νκ³ λμ μμ μ μ₯ μ₯μΉμ μ μ₯λ λΆνΈ λ‘λλ‘ μ μ΄λ₯Ό λκΈ°κ² λλ€. κ·Έλ¬λ©΄ λΆνΈ λ‘λλ λμ€ν¬μμ (λλ λ€νΈμν¬μμ) OS 컀λμ νΈμΆνκ² λλ€. 리λ
μ€μ κ²½μ°μ μ΄ μ»€λμ (μ νμ μΌλ‘) μ΅μ΄ λ¨λμ€ν¬ μ΄λ―Έμ§(initrd)λ₯Ό νμ΄μ μ€ννλ€. μ΄ μ΄λ―Έμ§λ dracut(8)
λ±μΌλ‘ μμ±νλ©° (μ¬κΈ°μ μλ§ systemd(1)
λ₯Ό μ΄μ©ν΄) λ£¨νΈ νμΌ μμ€ν
μ μ°Ύλλ€. λ£¨νΈ νμΌ μμ€ν
μ μ°Ύμμ λ§μ΄νΈ ν λ€μ initrdλ OS μ΄λ―Έμ§μ μ μ₯λ (systemd(1)
κ°μ) νΈμ€νΈμ μμ€ν
κ΄λ¦¬μμκ² μ μ΄λ₯Ό λκΈ΄λ€. κ·Έλ¬λ©΄ μμ€ν
κ΄λ¦¬μκ° λλ¨Έμ§ νλμ¨μ΄λ€μ λͺ¨λ μ‘°μ¬νκ³ νμν νμΌ μμ€ν
λ€μ λͺ¨λ λ§μ΄νΈ νκ³ μ€μ λ μλΉμ€λ€μ λͺ¨λ μμνλ μΌμ λ§‘λλ€.
μμ€ν μ μ§ μ μμ€ν κ΄λ¦¬μλ μλΉμ€λ€μ λͺ¨λ μ μ§μν€κ³ , νμΌ μμ€ν λ€μ λͺ¨λ μΈλ§μ΄νΈ νκ³ (κΈ°λ° μ μ₯ κΈ°μ λ€μ λΌμ΄ λ΄κ³ ), (μ νμ μΌλ‘) λ£¨νΈ νμΌ μμ€ν κ³Ό κ±°κΈ° μμΉν μ μ₯μλ₯Ό μΈλ§μ΄νΈ νκ³ λΌμ΄ λ΄λ initrd μ½λλ‘ λλμκ°λ€. λ§μ§λ§ λ¨κ³λ‘ μμ€ν μ μμ λλ€.
μμ€ν λΆνΈ κ³Όμ μ λν μΆκ°μ μΈ λ΄μ©μ boot(7)μμ μ°Ύμ μ μλ€.
λΆν
λ OS μ΄λ―Έμ§ μμ μμ€ν
κ΄λ¦¬μλ μμ€ν
λμμ νμν νμ νμΌ μμ€ν
κ³Ό μλΉμ€, λλΌμ΄λ²μ μ΄κΈ°νλ₯Ό λ§‘λλ€. systemd(1)
μμ€ν
μμ μ΄ κ³Όμ μ λ€μν λΆλ¦¬λ λ¨κ³λ€λ‘ μͺΌκ°μ Έμ νκ² μ λλ€λ‘ λ
ΈμΆλμ΄ μλ€. (νκ² μ λμ λν μμΈν μ 보λ systemd.target(5)
μ 보λΌ.) λΆν
κ³Όμ μ΄ κ³ λλ‘ λ³λ ¬ν λμ΄ μμ΄μ νΉμ νκ² μ λλ€μ λλ¬νλ μμκ° νμ μ μ΄μ§ μλ€. νμ§λ§ κ·Έλλ μ νλ μμ μμ ꡬ쑰λ₯Ό μΆ©μ€ν λ°λ₯Έλ€.
systemdκ° μμ€ν
μ ꡬλν λ default.targetμ΄ μμ‘΄νλ λͺ¨λ μ λλ€μ (κ·Έλ¦¬κ³ κ·Έ μμ‘΄ μ λλ€μ΄ μμ‘΄νλ κ²λ€κΉμ§ μ¬κ·μ μΌλ‘) νμ±ννλ€. μΌλ°μ μΌλ‘ default.targetμ graphical.targetμ΄λ multi-user.targetμ μμΌλ¦¬μ΄μ€μΌ λΏμ΄λ©°, μ΄λ μͺ½μΈμ§λ μμ€ν
μ΄ κ·Έλν½ UIλ‘ κ΅¬μ±λμ΄ μλμ§ ν
μ€νΈ μ½μλ‘λ§ κ΅¬μ±λμ΄ μλμ§μ λ°λΌ κ²°μ λλ€. λΉκ²¨ μ€λ μ λλ€ κ°μ μ΅μνμ μμ κ΄κ³λ§μ κ°μ νκΈ° μν΄ μ μλ €μ§ νκ² μ λλ€μ΄ μ¬λΏ μλ€. systemd.special(7)
μ λμ΄λμ΄ μλ€.
λ€μ λνλ κ·Έ μ μλ €μ§ μ λλ€κ³Ό λΆν λ‘μ§ λ΄μ μμΉλ₯Ό κ°κ΄μ μΌλ‘ λ³΄μ¬ μ€λ€. νμ΄νλ μ΄λ€ μ λμ΄ λ€λ₯Έ μ λ μμΌλ‘ λΉκ²¨μ Έ κ°λμ§λ₯Ό κΈ°μ νλ€. λν μμͺ½μ κ°κΉμ΄ μ λλ€μ΄ μλμ κ°κΉμ΄ μ λλ€λ³΄λ€ λ¨Όμ μμλλ€.
local-fs-pre.target
|
v
(λ€μν λ§μ΄νΈ λ° (λ€μν μ€μ (λ€μν cryptsetup
fsck μλΉμ€...) μ₯μΉλ€...) μ₯μΉλ€...) (λ€μν μ μμ€ (λ€μν μ μμ€
| | | μλΉμ€: udevd, API VFS λ§μ΄νΈ:
v v v tmpfiles, random mqueue, configfs,
local-fs.target swap.target cryptsetup.target seed, sysctl, ...) debugfs, ...)
| | | | |
\__________________|_________________ | ___________________|____________________/
\|/
v
sysinit.target
|
____________________________________/|\________________________________________
/ | | | \
| | | | |
v v | v v
(λ€μν (λ€μν | (λ€μν rescue.service
νμ΄λ¨Έλ€...) κ²½λ‘λ€...) | μμΌλ€...) |
| | | | v
v v | v rescue.target
timers.target paths.target | sockets.target
| | | |
v \_________________ | ___________________/
\|/
v
basic.target
|
____________________________________/| emergency.service
/ | | |
| | | v
v v v _emergency.target_
display- (κ·Έλν½ UIμ (λ€μν
manager.service νμν μμ€ν
μλΉμ€)
| λ€μν |
| μμ€ν
μλΉμ€) v
| | _multi-user.target_
| | |
\_________________ | _________________/
\|/
v
_graphical.target_
λΆνΈ νκ²μΌλ‘ νν μ°μ΄λ νκ² μ λλ€μ κ°μ‘° νμνμλ€. μ΄ μ λλ€μ λͺ©ν νκ²μΌλ‘ νκΈ°μ μ’μ μ νμ§μ΄λ€. μλ₯Ό λ€μ΄ systemd.unit=
컀λ λͺ
λ Ήν μ΅μ
(systemd(1)
μ°Έκ³ )μ μ λ¬νκ±°λ μ¬λ³Όλ¦ λ§ν¬λ‘ default.targetμ΄ κ·Έ μ λμ κ°λ¦¬ν€κ² νλ©΄ λλ€.
timers.targetμ basic.targetκ³Ό λΉλκΈ°μ μΌλ‘ λΉκ²¨ μ¨λ€. μ΄λ κ² νλ©΄ νμ΄λ¨Έκ° λΆν νλ°μμμΌ μ¬μ© κ°λ₯ν΄μ§λ μλΉμ€μ μμ‘΄ν μ μλ€.
systemdλ₯Ό μ¬μ©ν΄μλ μ΅μ΄ λ¨λμ€ν¬(initial RAM disk) ꡬν(initrd)μ ꡬμ±ν μ μλ€. μ΄ κ²½μ°μ initrd λ΄μ λΆν μ λ€μ ꡬ쑰λ₯Ό λ°λ₯Έλ€.
initrd λ΄μμ κΈ°λ³Έ νκ²μ initrd.targetμ΄λ€. basic.targetμ λλ¬ν λκΉμ§λ μμ€ν
κ΄λ¦¬μ λΆν
(μ λ΄μ© μ°Έκ³ )κ³Ό λμΌνκ² λΆν
κ³Όμ μ΄ μμνλ€. κ±°κΈ°μλΆν° systemdλ νΉμν νκ²μΈ initrd.targetμΌλ‘ μ κ·Όνλ€. νμΌ μμ€ν
μ λ§μ΄νΈ νκΈ° μ μ μμ€ν
μ΄ νμ΄λ²λ€μ΄μ
μμ 볡κ·ν κ²μΈμ§ μλλ©΄ μ μ λΆνΈλ₯Ό μ§νν κ²μΈμ§ κ²°μ ν΄μΌ νλ€. μ΄ κ²°μ μ [email protected]μμ μ΄λ€μ§λ©°, local-fs-pre.target μ μ μλ£λμ΄μΌ νλ€. λ°λΌμ κ·Έ νμΈμ΄ λλκΈ° μ μλ μ΄λ€ νμΌ μμ€ν
λ λ§μ΄νΈ ν μ μλ€. λ£¨νΈ μ₯μΉκ° μ¬μ© κ°λ₯ν΄μ§λ©΄ initrd-root-device.targetμ λλ¬νλ€. κ·Έ λ£¨νΈ μ₯μΉλ₯Ό /sysrootμ λ§μ΄νΈ ν μ μμΌλ©΄ sysroot.mount μ λμ΄ νμ±νλκ³ initrd-root-fs.targetμ λλ¬νλ€. μλΉμ€ initrd-parse-etc.serviceμμλ /sysroot/etc/fstabμμ κ°λ₯ν /usr λ§μ΄νΈμ x-initrd.mount
μ΅μ
μ΄ νμλ μΆκ° νλͺ©λ€μ νμνλ€. λ°κ²¬ν λͺ¨λ νλͺ©λ€μ /sysroot μλμ λ§μ΄νΈ νλ©°, κ·Έλ¬λ©΄ initrd-fs.targetμ λλ¬νλ€. μλΉμ€ initrd-cleanup.serviceλ initrd-switch-root.targetμΌλ‘ 격리λλλ°(isolate), κ±°κΈ°μ μ 리 μλΉμ€κ° λ μ μλ€. μ΅μ’
λ¨κ³λ‘ initrd-switch-root.serviceκ° νμ±νλκ³ , κ·Έλ¬λ©΄ μμ€ν
μ΄ /sysrootλ‘ λ£¨νΈλ₯Ό μ ννκ² λλ€.
: (μμμ μμ λμΌ)
:
v
basic.target
| emergency.service
______________________/| |
/ | v
| initrd-root-device.target _emergency.target_
| |
| v
| sysroot.mount
| |
| v
| initrd-root-fs.target
| |
| v
v initrd-parse-etc.service
(μ체μ μΈ initrd |
μλΉμ€λ€...) v
| (sysroot-usr.mount λ°
| fstab μ΅μ
μΌλ‘ νμλ
| λ€μν λ§μ΄νΈλ€
| x-initrd.mount...)
| |
| v
| initrd-fs.target
\______________________ |
\|
v
initrd.target
|
v
initrd-cleanup.service
λ€μ νκ²μΌλ‘ 격리
initrd-switch-root.target
|
v
______________________/|
/ v
| initrd-udevadm-cleanup-db.service
v |
(μ체μ μΈ initrd |
μλΉμ€λ€...) |
\______________________ |
\|
v
initrd-switch-root.target
|
v
initrd-switch-root.service
|
v
νΈμ€νΈ OSλ‘ μ΄ν
systemdμμμ μμ€ν μ μ§ μμ λ€μν νκ² λ¨μλ€λ‘ μ΄λ€μ Έ μμΌλ©° μ΄λ€ μ΅μνμ μμ κ΅¬μ‘°κ° μ μ©λλ€.
(λͺ¨λ μμ€ν
(λͺ¨λ νμΌ
μλΉμ€μμ μμ€ν
λ§μ΄νΈ,
μΆ©λ) μ€μ, cryptsetup
| μ₯μΉ λ±κ³Όμ
| μΆ©λ)
| |
v v
shutdown.target umount.target
| |
\_______ ______/
\ /
v
(λ€μν μ μμ€
μλΉμ€λ€)
|
v
final.target
|
_____________________________________/ \_________________________________
/ | | \
| | | |
v v v v
systemd-reboot.service systemd-poweroff.service systemd-halt.service systemd-kexec.service
| | | |
v v v v
_reboot.target_ _poweroff.target_ _halt.target_ _kexec.target_
νν μ°λ μμ€ν μ μ§ νκ²λ€μ΄ κ°μ‘°λμ΄ μλ€.
systemd(1)
, boot(7), systemd.special(7)
, systemd.target(5)
, dracut(8)
systemd 234