Linux

λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œ λΆ€νŒ… ν”„λ‘œμ„ΈμŠ€(λ¦¬λˆ…μŠ€ λΆ€νŒ…κ³Όμ •)

🐧 Yon 2021. 12. 15. 17:15
λ°˜μ‘ν˜•

μš”μ•½

 

λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œμ΄ μ˜¬λ°”λ‘œ μ‹œλ™ν•˜λ €λ©΄ 일련의 과정이 μ˜¬λ°”λ‘œ μˆ˜ν–‰λ˜μ–΄μ•Ό ν•œλ‹€.
PC μ•„ν‚€ν…μ²˜μ— 직접 μ„€μΉ˜λœ λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œμ€ λ‹€μŒ 과정을 거쳐 μ‹œλ™ν•œλ‹€.

  • 전원을 μΌ¬
  • ν•˜λ“œμ›¨μ–΄λ₯Ό μ‹œμž‘ν•¨(BIOS λ˜λŠ” UEFI νŽŒμ›¨μ–΄μ—μ„œ)
  • λΆ€νŠΈ λ‘œλ” μœ„μΉ˜ μ°ΎκΈ° + μ‹œμž‘ν•˜κΈ°
  • λΆ€νŠΈ λ‘œλ”μ—μ„œ 운영체제 κ³ λ₯΄κΈ°
  • μ„ νƒλœ μš΄μ˜μ²΄μ œμ— λ§žλŠ” 컀널과 초기 RAM λ””μŠ€ν¬(initrd) μ‹œμž‘ν•˜κΈ°
  • μ΄ˆκΈ°ν™” ν”„λ‘œμ„ΈμŠ€(init λ˜λŠ” systemd) μ‹œμž‘
  • μ„ νƒλœ 런레벨 λ˜λŠ” 타깃에 따라 μ„œλΉ„μŠ€ μ‹œμž‘

 

μš°λ¦¬λŠ” μœ„μ™€ 같은 일련의 과정을 "λΆ€νŒ…(Booting)" 이라 λΆ€λ₯Έλ‹€.

 


μ‹œμŠ€ν…œ λΆ€νŒ…μ΄λž€

μ‹œμŠ€ν…œ λΆ€νŒ… ν”„λ‘œμ„ΈμŠ€μ˜ λͺ©μ μ€ 컀널을 λ©”λͺ¨λ¦¬μ— 올리고 μ‹€ν–‰ν•˜λŠ” 것이닀. 봐도봐도 μ‹ κΈ°ν•˜κ³  μ–΄λ €μš΄ μ‹œμŠ€ν…œ λΆ€νŒ…... 이 ν¬μŠ€νŒ…μ€ λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œμ˜ λΆ€νŒ… 과정을 4λ‹¨κ³„λ‘œ κ°€μ‹œν™”ν•œ λ‚΄μš©μ„ λ²ˆμ—­ν•΄μ„œ λ‹΄κ³  μžˆλ‹€. κΉŒλ¨Ήμ„ λ•Œ λ§ˆλ‹€ κ΅¬κΈ€λ§ν•˜λŠ”κ±° νž˜λ“€μ–΄μ„œ μ—¬λŸ¬κ°€μ§€ 레퍼런슀λ₯Ό μ°Έκ³ ν•˜μ—¬ ν¬μŠ€νŒ…μœΌλ‘œ λͺ¨μ•˜λ‹€... λŒμ•„μ„œλ©΄ 자꾸 κΉŒλ¨ΉλŠ”κ²Œ 문제(눈물)... 

 

  • Q1. λΆ€νŒ… μ „, 컀널은 어디에 μžˆμ§€?
  • Q2. λΆ€νŒ… μ „, λ©”λͺ¨λ¦¬μ—λŠ” 뭐가 μžˆμ§€?
  • Q3. λΆ€νŒ… ν›„ 첫 번째둜 μ‹€ν–‰λ˜λŠ” 것은 뭐지?

 

 


 

 

λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œ λΆ€νŒ… ν”„λ‘œμ„ΈμŠ€

λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œμ˜ λΆ€νŒ… ν”„λ‘œμ„ΈμŠ€λ₯Ό μ•„λž˜ 4λ‹¨κ³„μ˜ μˆœμ„œλ‘œ μžμ„Έν•˜κ²Œ μ‚΄νŽ΄λ³΄μž

1단계: ν•˜λ“œμ›¨μ–΄ 단계
2단계: λΆ€νŠΈλ‘œλ” 단계
3단계: μ»€λ„λ‘œλ“œ 단계
4단계: INIT 단계(SysV / Systemd)

https://ocw.unican.es/

1단계: ν•˜λ“œμ›¨μ–΄ 단계

1-1. Power On

  • νŒŒμ›Œλ²„νŠΌμ„ 톡해 전원이 κ³΅κΈ‰λ˜λ©΄ λ©”μΈλ³΄λ“œλŠ” 리셋 벑터(Reset Vector)λ₯Ό 톡해 CPUκ°€ BIOS μ½”λ“œλ₯Ό ν˜ΈμΆœν•˜λ„λ‘ ν•œλ‹€.

  • λͺ¨λ“  Intel CPU듀은 전원 곡급 직후 초기 λΆ€νŒ… λ•Œ real mode둜 λ™μž‘ν•˜λŠ”λ°, 이 μ‹œμ μ—μ„œλŠ” 전체 λ©”λͺ¨λ¦¬μ˜ 1MB μ˜μ—­κΉŒμ§€λ§Œ μ ‘κ·Όν•  수 μžˆλ‹€. 이 μ˜μ—­μ˜ μ£Όμ†ŒλŠ” 0xFFFFFFFF둜, 1978λ…„λ„μ˜ Intel CPU 8086도, μ΅œμ‹  CPU도 같은 λ°©μ‹μœΌλ‘œ λ™μž‘ν•œλ‹€. 

  • μ΄ˆκΈ°λΆ€νŒ… 직후 CPUκ°€ 처음으둜 ν•˜κ²Œ 될 일은 EIP(Extend Instruction Pointer-CPUκ°€ ν•  일듀, 즉 λ©”λͺ¨λ¦¬μ— λ“±λ‘λ˜μ–΄ μžˆλŠ” Code의 μ£Όμ†Œλ₯Ό κ°€λ¦¬ν‚€λŠ” 포인터)에 μˆ¨κ²¨μ§„ 0xFFFFFFF0 μ£Όμ†Œλ‘œ μ ν”„ν•˜λŠ” 것이닀. 이 μ£Όμ†ŒλŠ” νŽŒμ›¨μ–΄(BIOS, EFI)의 μ—”νŠΈλ¦¬ 포인트둜 λ§€ν•‘λ˜λŠ” μ˜μ—­μœΌλ‘œ 리셋 벑터(Reset Vector)라고 ν•œλ‹€. 이 μ˜μ—­μ€ 전원을 켰을 λ•Œ 항상 같은 μžλ¦¬μ— μžˆμ§€λ§Œ real mode(초기 λΆ€νŒ… λ•Œ 전체 λ©”λͺ¨λ¦¬μ˜ 1MB μ˜μ—­κΉŒμ§€λ§Œ μ ‘κ·Ό κ°€λŠ₯ν•˜μ§€ λͺ»ν•¨)μ—μ„œλŠ” μ ‘κ·Όν•  수 없도둝 숨겨져 μžˆλ‹€. 

  • 즉, λΆ€νŒ… 직후 CPUλŠ” λ¦¬μ…‹ 벑터λ₯Ό 톡해 νŽŒμ›¨μ–΄(BIOS, EFI)둜 μ ‘κ·Όν•˜κ³ , μ΄κ³³μ—μ„œ νŽŒμ›¨μ–΄ μ½”λ“œ(BIOS Code)λ₯Ό μ‹€ν–‰ν•œλ‹€.

  • 특히 BIOSλŠ” λ ˆκ±°μ‹œ λ°”μ΄μ˜€μŠ€λΌκ³  뢈리며, ν•˜λ“œλ””μŠ€ν¬μ˜ 첫 μ„Ήν„°λ₯Ό μ½μ–΄μ„œ 첫 섹터에 μ§€μ‹œλœ μ£Όμ†Œμ— μžˆλŠ” μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ„λ‘ ν•˜λŠ” λΆ€νŒ… 절차λ₯Ό λ”°λ₯Έλ‹€.

  • νŽŒμ›¨μ–΄λŠ” μ‹œμŠ€ν…œμ˜ ν•˜λ“œμ›¨μ–΄ ꡬ성을 μ €μž₯ν•œλ‹€.

 

1-2. POST, BOOT SECTOR(MBR/VBR/EBR)

  • Power-on-self-test (POST): "삐~" CPU, RAM, μ œμ–΄μž₯치, BIOS μ½”λ“œ 자체, μ£Όλ³€μž₯치 등에 λŒ€ν•œ 검사 진행

  • OSμ™Έ κΈ°μ‘΄ 가상화 ν™•μž₯, λ³΄μ•ˆ 등에 λŒ€ν•œ ꡬ성 확인

https://ocw.unican.es/

  • MBR(Master Boot Record)
    POST 과정이 μ™„λ£Œλ˜λ©΄, BIOSλŠ” λΆ€νŒ… λ””λ°”μ΄μŠ€(ν•˜λ“œλ””μŠ€ν¬ λ“±)λ₯Ό κ²€μƒ‰ν•˜κ³ , ν•΄λ‹Ή λ””λ°”μ΄μŠ€μ˜ νŒŒν‹°μ…˜ ν…Œμ΄λΈ”μ„ κ²€μƒ‰ν•œλ‹€. νŒŒν‹°μ…˜ λ˜μ§€ μ•Šμ€ μž₯치의 μ‹œλ™ μ„Ήν„°λŠ” VBR이 λœλ‹€. νŒŒν‹°μ…˜ ν…Œμ΄λΈ”μ„ 찾은 경우, ν•΄λ‹Ή νŒŒν‹°μ…˜μ˜ 첫 번째 블둝(μ„Ήν„° 0) 512 bytes의 MBR(Master Boot Record-μ‹œλ™μ„Ήν„°)μ—μ„œ λΆ€νŠΈλ‘œλ” μ½”λ“œ(Boot Loader Code=OS Loader)λ₯Ό κ²€μƒ‰ν•œλ‹€. λΆ€νŠΈλ‘œλ” μ½”λ“œλ₯Ό  찾으면 λ©”λͺ¨λ¦¬μ— λ‘œλ“œμ‹œν‚¨λ‹€.  

    γ…‘νŒŒν‹°μ…˜ ν…Œμ΄λΈ”(Partition Table): 4개 Primary partition 정보(μ‹œμž‘~끝 블둝, 크기 λ“±) (64bytes)
    γ…‘λΆ€νŠΈ μ‹œκ·Έλ‹ˆμ²˜(Boot Signature): λΆ€νŠΈλ‘œλ” μ½”λ“œμ˜ κ³ μœ κ°’(0x55AA) (2 bytes)

 

  • VBR(Volume Boot Record)
    - 각 Primary partition의 첫 번째 블둝(λΆ€νŠΈλ‘œλ” μ½”λ“œμ™€ λΆ€νŠΈμ‹œκ·Έλ‹ˆμ²˜λ₯Ό 포함할 수 μžˆλ‹€)
    - νŒŒν‹°μ…˜λ˜μ§€ μ•Šμ€ μž₯치의 μ‹œλ™ μ„Ήν„°λŠ” VBR이닀.

 

  • EBR(Extended Boot Record)
    - 각 Logical partition(ν•˜λ‚˜μ˜ νŒŒν‹°μ…˜μ„ sub-divide ν•œ νŒŒν‹°μ…˜ λ‹¨μœ„)의 첫 번째 블둝(νŒŒν‹°μ…˜ ν…Œμ΄λΈ”, VBR λΆ€νŠΈμ‹œκ·Έλ‹ˆμ²˜ 포함)
    - EBR의 νŒŒν‹°μ…˜ ν…Œμ΄λΈ”μ—λŠ” λͺ¨λ“  Logical partition이 λ§ν¬λ˜μ–΄ μžˆλ‹€.

 

 


2단계: λΆ€νŠΈλ‘œλ” 단계

https://ocw.unican.es/

 BIOSκ°€ λ””μŠ€ν¬μ˜ MBRμ—μ„œ λΆ€νŠΈ λ‘œλ”λ₯Ό μ°Ύκ³ , 이 λΆ€νŠΈ λ‘œλ”κ°€ GRUB μ„€μ • νŒŒμΌμ„ 찾으면, λΆ€νŠΈλ‘œλ”λŠ” μ•½ 3~5초 λ™μ•ˆμ˜ μ‹œκ°„μ„ μΉ΄μš΄νŠΈλ‹€μš΄ν•œλ‹€. 이 μ‹œκ°„ λ™μ•ˆ(κΈ°λ³Έ μš΄μ˜μ²΄μ œκ°€ μ‹œμž‘ν•˜κΈ° μ „κΉŒμ§€) μ‚¬μš©μžλŠ” 아무 ν‚€λ‚˜ 눌러 λΆ€νŠΈ λ‘œλ”μ— κ°œμž…ν•  수 있게 λœλ‹€.

일반적으둜 μœ μ €κ°€ λΆ€νŠΈ λ©”λ‰΄μ—μ„œ λΆ€νŠΈ λ‘œλ”μ— κ°œμž…ν•΄μ•Ό ν•˜λŠ” μ΄μœ λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

  • λ‹€λ₯Έ 런레벨둜 μ‹œμž‘ν•΄μ•Ό ν•  λ•Œ(런레벨 μ˜€λ²„λΌμ΄λ“œ)
  • λ‹€λ₯Έ 컀널을 선택해야 ν•  λ•Œ
    (ex. RHEL의 μƒˆ 컀널이 yum을 톡해 μ„€μΉ˜λ˜λ©΄ 이전 컀널이 ν•˜λ‚˜μ”© μœ μ§€λœλ‹€. μƒˆ 컀널이 μ‹œμž‘ν•˜μ§€ μ•Šμ„ λ•Œλ₯Ό λŒ€λΉ„ν•˜λŠ” 것이닀)
  • λ‹€λ₯Έ 운영체제λ₯Ό 선택해야 ν•  λ•Œ
    (ex. νŽ˜λ„λΌμ™€ RHELκ°€ ν•¨κ»˜ μ„€μΉ˜λœ μ»΄ν“¨ν„°μ—μ„œ RHEL이 μ˜¬λ°”λ‘œ λ™μž‘ν•˜μ§€ μ•Šμ„ λ•Œ νŽ˜λ„λΌλ‘œ μ‹œλ™ν•œ λ’€ RHEL 파일 μ‹œμŠ€ν…œμ„ λ§ˆμš΄νŠΈν•˜μ—¬ 문제 해결을 μ‹œλ„ν•  수 μžˆλ‹€)
  • λΆ€νŠΈ μ˜΅μ…˜μ„ λ³€κ²½ν•΄μ•Ό ν•  λ•Œ
    (ex. 컀널 μ˜΅μ…˜ μΆ”κ°€, νŠΉμ • ꡬ성 μš”μ†Œ ν•˜λ“œμ›¨μ–΄ 지원 λΉ„ν™œμ„±ν™”-μΌμ‹œμ μœΌλ‘œ USB 포트 λΉ„ν™œμ„±ν™” λ“±-)

 

2-1. GRUB(GRand Unified Bootloader): Linux Loader

 

 

  • GRUB은 νŒŒμΌμ‹œμŠ€ν…œκ³Ό ν•¨κ»˜ λ™μž‘ν•  수 있음 (ext2, ext3, ext4... λ“±λ“±)
  • UEFI 버전도 γ…‡γ…‹(grub.efi)
  • grub> μ΄λΌλŠ” 고유의 μž‘μ€ 셸을 μ‚¬μš©ν•  수 있음(이 μ…Έμ˜ ν”„λ‘¬ν”„νŠΈλ₯Ό 톡해 λΆ€νŒ… νŒŒλΌλ―Έν„° 및 λΆ€νŒ…OS 등을 μ •μ˜ν•  수 있음)

 

 


 

3단계: 컀널 단계(Loading the Kernel)

λΆ€νŒ… 2λ‹¨κ³„κΉŒμ§€ μ§€λ‚˜λ©° ν˜„μž¬ λΆ€νŠΈλ‘œλ”λŠ” μ»€λ„νŒŒμΌκ³Ό RAMλ””μŠ€ν¬ νŒŒμΌμ„ λ©”λͺ¨λ¦¬μ— λ‘œλ“œν•΄λ†“μ€ μƒνƒœμ΄λ‹€
γ…‘ vmlinux-2.6.26-2-686
γ…‘ initrd.img-2.6.26-2-686

 

컀널은 μ»΄ν“¨ν„°μ˜ 각쒅 ν•˜λ“œμ›¨μ–΄λ₯Ό μ‚¬μš©ν•˜λŠ” 데 ν•„μš”ν•œ λ“œλΌμ΄λ²„μ™€ λͺ¨λ“ˆμ„ λ‘œλ“œν•œλ‹€. 이 μ‹œμ μ—μ„œλŠ” 주둜 ν•˜λ“œμ›¨μ–΄ μ‹€νŒ¨λ₯Ό μ°Ύμ•„μ•Ό ν•œλ‹€. κ΄€λ ¨λœ κΈ°λŠ₯이 μ˜¬λ°”λ‘œ λ™μž‘ν•˜μ§€ μ•ŠλŠ” 문제λ₯Ό 차단해야 ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. (맀우 λ“œλ¬Όμ§€λ§Œ νŠΉμ • ν•˜λ“œμ›¨μ–΄μš© λ“œλΌμ΄λ²„κ°€ μ—†λ‹€κ±°λ‚˜ μ—‰λš±ν•œ λ“œλΌμ΄λ²„κ°€ λ‘œλ“œλ˜κΈ°λ„ ν•œλ‹€)

λ‘œλ“œλœ μ»€λ„νŒŒμΌ μ‹€ν–‰

  • λ‘œλ“œλœ μ»€λ„νŒŒμΌ μ‹€ν–‰, μ½˜μ†”μ— κ΄€λ ¨ 정보 λ„μ›Œμ€Œ
  • PCI bus 점검 및 κ°μ§€λœ μ£Όλ³€μž₯치(Peripheral) 확인 ν›„ /var/log/dmesg νŒŒμΌμ— 기둝
  • 컀널은 swapper ν”„λ‘œμ„ΈμŠ€(PID 0)λ₯Ό 호좜, swapper(PID 0)λŠ” 컀널이 μ‚¬μš©ν•  각 μž₯μΉ˜λ“œλΌμ΄λΈŒλ“€μ„ μ΄ˆκΈ°ν™”
  • Root file system (" / ")을 읽기 μ „μš©μœΌλ‘œ λ§ˆμš΄νŠΈγ…‘μ΄ κ³Όμ •μ—μ„œ 마운트 μ‹€νŒ¨μ‹œ "컀널 νŒ¨λ‹‰" λ©”μ‹œμ§€ 좜λ ₯
  • λ¬Έμ œμ—†μ΄ 컀널이 μ‹€ν–‰λ˜κ³  λ‚˜λ©΄ μ–Έλ§ˆμš΄νŠΈ ν›„ Root File System을 읽기+μ“°κΈ° λͺ¨λ“œλ‘œ 리마운트
  • 이후 Init ν”„λ‘œμ„ΈμŠ€(PID 1)λ₯Ό 호좜

 

컀널이 μ‹œμž‘ν•˜λ©΄μ„œ μƒμ„±ν•œ λ©”μ‹œμ§€λ“€μ΄ λ³΅μ‚¬λ˜λŠ” 곳은 컀널 링 버퍼(Kernel Ring Buffer)라고 ν•˜λ©°, 이λ₯Ό λ‚˜μ€‘μ— μ°Έμ‘°ν•  μˆ˜λ„ μžˆλ‹€. 이곳에 컀널 λ©”μ‹œμ§€κ°€ μ €μž₯되며, 버퍼가 λͺ¨λ‘ μ±„μ›Œμ§€λ©΄ 였래된 μˆœμ„œλΆ€ν„° λ©”μ‹œμ§€κ°€ μ‚­μ œλœλ‹€. λΆ€νŒ… ν›„ μ‹œμŠ€ν…œ λ‘œκ·ΈμΈν•˜μ—¬ 컀널 λ©”μ‹œμ§€λ₯Ό 파일둜 μΊ‘μ²˜ν•˜λŠ” μ»€λ§¨λ“œλ₯Ό 톡해 컀널 λ©”μ‹œμ§€ 기둝을 파일 ν˜•νƒœλ‘œ 남길 수 μžˆλ‹€.

컀널 λ©”μ‹œμ§€λŠ” ꡬ성 μš”μ†Œ 즉, CPUλ‚˜ λ©”λͺ¨λ¦¬, λ„€νŠΈμ›Œν¬ μΉ΄λ“œ, ν•˜λ“œ λ“œλΌμ΄λΈŒ 등이 감지될 λ•Œ λ‚˜νƒ€λ‚œλ‹€.

dmesg > /tmp/kernel_msg.txt
less /tmp/kernel_msg.txt

# systemdλŠ” systemd 저널에 μ €μž₯λœλ‹€
# λ”°λΌμ„œ journalctl을 μ‹€ν–‰ν•΄μ•Ό λΆ€νŠΈ μ‹œλΆ€ν„° μ§€κΈˆκΉŒμ§€ μŒ“μΈ λ©”μ‹œμ§€ 확인 κ°€λŠ₯

 

 


 

4단계 INIT(sysV)

init μ‹œμŠ€ν…œμ€ SysV 및 Systemd둜 κ΅¬λΆ„λœλ‹€

 

SysVinit 1. Configuration. the file /etc/inittab

  • /etc/inittab의 초기 μ‹œμŠ€ν…œ ꡬ성 νŒŒμΌμ„ μ½μ–΄μ˜΄(Operation mode, 런레벨, μ½˜μ†” λ“±)

SysVinit 2. Initialization. the file /etc/init.d/rc

  • /etc/init.d/rc.S(debian) λͺ…λ Ή μ‹€ν–‰
  • (μ‹œμŠ€ν…œ μ΄ˆκΈ°ν™”-μŠ€μ™‘μ˜μ—­ λ‘œλ“œ, ν•„μš”μ—†λŠ” 파일 제거, νŒŒμΌμ‹œμŠ€ν…œ 점검 및 마운트, λ„€νŠΈμ›Œν¬ ν™œμ„±ν™” λ“±)

SysVinit  3. Services. /etc/init.d 및 /etc/rcN.d 디렉토리듀

  • μ§€μ •λœ λŸ°λ ˆλ²¨μ— ν•΄λ‹Ήν•˜λŠ” 슀크립트 및 μ„œλΉ„μŠ€ μ‹€ν–‰
  • /etc/init.d 의 μ‹€ν–‰ κ°€λŠ₯ν•œ μ„œλΉ„μŠ€λ“€ λͺ¨λ‘ μ‹€ν–‰(cron, ssh, lpd λ“±λ“±)
  • 각 λŸ°λ ˆλ²¨λ³„λ‘œ μ‹€ν–‰ν•  μ„œλΉ„μŠ€λ“€μ€ /etc/rcN.d μ—μ„œ μ •μ˜ν•  수 있음 (S01: 런레벨 1μ—μ„œ ν™œμ„±ν™”, K01:런레벨 1μ—μ„œ λΉ„ν™œμ„±ν™”)

 


 

4단계 INIT(systemd: BSD init)

systemdλŠ” λŒ€ν‘œμ μœΌλ‘œ Ubuntu Linux의 Init System이닀.
Sysvinit에 λΉ„ν•΄ μ‹œμž‘μ†λ„κ°€ λΉ λ₯΄κ³ , λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œμ„ λ³΄μ‘°ν•˜λŠ” ν’€νƒ€μž„ ν”„λ‘œμ„ΈμŠ€λ‘œ μƒμ£Όν•œλ‹€
Target μœ λ‹›μ„ μ‚¬μš©ν•˜μ—¬ λΆ€νŒ…, μ„œλΉ„μŠ€κ΄€λ¦¬, 동기화 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ§„ν–‰ν•œλ‹€
System Unit : Any resource that system can operate/manage (ex. .service, .target, .device, .mount, .swap...)

 

Systemd Boot process

  • systemd용 GRUB2 ꡬ성(GRUB_CMDLINE_LINUX="init=/lib/systemd/systemd" (이후 update-grub μ‹€ν–‰)
  • 첫 번째 .target μœ λ‹› μ‹€ν–‰ (보톡 graphical.target의 심볼릭 λ§ν¬μž„)
#첫 번째 .target μœ λ‹›

[Unit]

Description=yon boot target
Requires=multi-user.target
Wants=yonbar.service
After=multi-user.target rescue.service rescue.target
  • Requires = hard dependencies
  • Wants = soft dependencies (μ‹œμž‘μ΄ ν•„μš”ν•˜μ§€ μ•Šμ€)
  • After = μ—¬κΈ°μ„œ μ •μ˜λœ μ„œλΉ„μŠ€λ“€ μ‹€ν–‰ 이후에 λΆ€νŒ…ν•  것

 

 

 


reference
1) https://itragdoll.tistory.com/3
2) μ‰½κ²Œ λ°°μš°λŠ” 운영체제 (μ‘°μ„±ν›ˆ μ§€μŒ)
3) Wasabi Session
4) https://ocw.unican.es/
5) https://manybutfinite.com/post/how-computers-boot-up/ 

 

 

 

 

 

 

λ°˜μ‘ν˜•