부트 프로세스(Boot Process)

Laigasus

Infra|2024년 8월 13일|마지막 수정 시간: 2024년 9월 23일|
type
status
date
slug
summary
tags
category
icon
password

부팅 절차

System V(init) 부팅 순서

notion image

1. BIOS/UEFI

BIOS (Basic Input/Output System) 또는 UEFI (Unified Extensible Firmware Interface)는 컴퓨터가 전원을 켤 때 실행되는 첫 번째 소프트웨어입니다. 이 단계에서는 하드웨어를 초기화하고 테스트하며, 부팅 가능한 장치를 식별합니다. 그 후, 선택된 부팅 장치에서 부트 로더를 로드하여 다음 단계로 넘어갑니다.

2. 부트로더(Boot Loader)

부트 로더는 BIOS/UEFI 다음으로 실행되는 프로그램으로, 주로 하드 디스크의 첫 번째 섹터(MBR 또는 GPT)에 위치합니다. 그 주요 역할은 운영 체제 커널을 메모리에 로드하고 실행하는 것입니다. 리눅스 시스템에서 가장 널리 사용되는 부트 로더는 GRUB(GRand Unified Bootloader)입니다.

3. 커널(Kernel)

커널은 운영 체제의 핵심 부분으로, 하드웨어와 소프트웨어 사이의 중개자 역할을 합니다. 부트 로더에 의해 메모리에 로드되면, 커널은 시스템 하드웨어를 초기화하고 필요한 드라이버를 로드합니다. 그 후, 커널은 루트 파일 시스템을 마운트하고 init 프로세스(또는 systemd)를 시작하여 사용자 공간 초기화를 시작합니다.

4. init

init은 리눅스 시스템에서 첫 번째로 실행되는 프로세스입니다. 이 프로세스는 시스템의 나머지 부분을 초기화하고 다른 프로세스들을 시작하는 역할을 합니다. init은 '/etc/inittab' 파일을 읽어 시스템의 실행 레벨을 결정하고, 해당 레벨에 맞는 서비스와 데몬을 시작합니다.

Systemd 부팅 절차

notion image
1~3 까지는 SystemV 와 동일합니다.

4. systemd

initramfs 파일을 해제하고 systemd 를 실행하여 메모리에 적재시킵니다.
💡
initramfs 란?
initramfs(initial RAM filesystem)는 리눅스 부팅 과정에서 사용되는 임시 파일 시스템입니다. 이는 실제 루트 파일 시스템이 마운트되기 전에 커널이 사용하는 초기 루트 파일 시스템으로, 부팅에 필요한 드라이버와 스크립트를 포함합니다. initramfs는 실제 루트 파일 시스템을 마운트하고 접근하는 데 필요한 모든 모듈과 도구를 제공하여 부팅 프로세스를 원활하게 진행할 수 있도록 합니다.

5.1. default.target

graphical.targetmulti-user.target 중 가장먼저 실행할 것을 정합니다.

5.2. basic.target

basic.target은 systemd의 기본적인 시스템 초기화를 담당하는 타겟 유닛입니다. 이는 시스템 부팅 과정에서 필수적인 서비스들을 시작하고, 다른 타겟 유닛들이 의존하는 기본적인 환경을 설정합니다. basic.target은 일반적으로 multi-user.target이나 graphical.target 이전에 활성화되며, 시스템의 핵심 기능을 준비하는 역할을 합니다.

6.1. graphical.target

그래픽 사용자 인터페이스(GUI)를 제공하는 모드입니다. 이 모드에서는 X Window System이 시작되어 사용자에게 그래픽 환경을 제공합니다. 일반적으로 데스크톱 환경이나 윈도우 매니저도 함께 실행됩니다.

6.2. multi-user.target

커맨드 라인을 제공하는 다중 사용자 모드입니다. init 프로세스의 runlevel 3 과 매핑됩니다.
/etc/systemd/system/multi-user.target.wants 내 유닛들을 실행합니다.

rescue.target

rescue.target은 시스템 복구를 위한 특별한 모드입니다. 이 모드에서는 최소한의 필수 서비스만 실행되며, 시스템 관리자가 문제를 진단하고 해결할 수 있는 환경을 제공합니다. rescue.target은 일반적으로 부팅 문제나 심각한 시스템 오류가 발생했을 때 사용됩니다.
 

sysinit.target

sysinit.target은 systemd 부팅 프로세스의 초기 단계에서 실행되는 중요한 타겟 유닛입니다. 이 타겟은 시스템의 기본적인 초기화를 담당하며, 파일 시스템 마운트, 스왑 활성화, 커널 모듈 로드 등의 핵심 작업을 수행합니다. sysinit.target은 다른 타겟들이 의존하는 기본적인 시스템 상태를 설정하여 부팅 프로세스의 기반을 마련합니다.
 

타겟유닛과 런 레벨

일반적으로 사용되는 init은 0,1,3,5,6 입니다.
레벨(init)
타겟 유닛
설명
0
시스템 종료
1
단일 사용자 모드 (복구 모드)
2
다중 사용자 모드 (네트워크 비활성화)
3
다중 사용자 모드 (네트워크 활성화)
4
사용자 정의 모드
5
그래픽 사용자 인터페이스 모드
6
시스템 재부팅
레벨(init)
타겟 유닛
설명
0
poweroff.target
시스템을 셧다운 하고 종료
1
rescue.target
단일 사용자(복구 쉘)
2
multi-user.target
다중 사용자 모드(네트워크 비활성화)
3
multi-user.target
다중 사용자 모드 (네트워크 활성화)
4
multi-user.target
사용자 정의 모드
5
graphical.target
다중 사용자 모드(GUI)
6
reboot.target
시스템 셧다운 및 재부팅
 

사용자 제어 가능한 타겟 유닛

  • emergency
  • rescue
  • multi-user
  • graphical
Loading...