bootup(7) - wariua/manpages-ko GitHub Wiki

NAME

bootup - μ‹œμŠ€ν…œ λΆ€νŒ… κ³Όμ •

DESCRIPTION

μ‹œμŠ€ν…œ λΆ€νŠΈμ—λŠ” μ—¬λŸ¬ λ‹€μ–‘ν•œ μš”μ†Œλ“€μ΄ κ΄€λ ¨λ˜μ–΄ μžˆλ‹€. μ‹œμŠ€ν…œ 전원이 λ“€μ–΄μ˜¨ 직후 μ‹œμŠ€ν…œ 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κ³Ό λΉ„λ™κΈ°μ μœΌλ‘œ 당겨 μ˜¨λ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ 타이머가 λΆ€νŒ… ν›„λ°˜μ—μ„œμ•Ό μ‚¬μš© κ°€λŠ₯ν•΄μ§€λŠ” μ„œλΉ„μŠ€μ— μ˜μ‘΄ν•  수 μžˆλ‹€.

졜초 λž¨λ””μŠ€ν¬μ—μ„œμ˜ λΆ€νŒ… (INITRD)

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_

ν”νžˆ μ“°λŠ” μ‹œμŠ€ν…œ μ •μ§€ νƒ€κ²Ÿλ“€μ΄ κ°•μ‘°λ˜μ–΄ μžˆλ‹€.

SEE ALSO

systemd(1), boot(7), systemd.special(7), systemd.target(5), dracut(8)


systemd 234

⚠️ **GitHub.com Fallback** ⚠️