리눅스의 부팅 과정

부팅 과정

아래 부팅 과정은 BIOS기반 x86 컴퓨터를 가정한 과정이다.

순서 부팅 과정 설명
1 ROM에 저장되어 있는 BIOS 프로그램(펌웨어)가 실행됨 (1) 전원을 켜면 프로세서가 ROM의 BIOS 프로그램을 찾아 실행함
(2) BIOS는 하드웨어 검사를 진행한 뒤
(3) MBR에 설치된 부트 로더를 메모리에 올려 실행시킴
2 MBR에 있는 부트로더가 실행됨 (1) 부트로더가 MBR에 함께 존재하는 파티션 테이블 조사해 부팅 가능한 파티션 탐색
(2) MBR의 부트로더는 GRUB과 같은 2단계 부트 로더를 메모리에 로드
(3) GRUB 부트로더가 커널 이미지와 initramfs를 메모리에 로드
3 커널 이미지와 initramfs 로드 (1) GRUB 부트로더로부터 커널이 메모리에 로드됨(커널 이미지는 /boot/vmlinuz-<kernel-version>에 존재)
(2) initramfs는 부팅 과정에서 필요한 임시 파일 시스템
4 커널 실행 및 초기 램디스크(initramfs) 실행 (1) 커널이 메모리에 적재되고 실행됨 (2) 초기 램 디스크가 실행되어, 루트 파일 시스템이 마운트되기 전까지 임시 환경 제공
5 하드웨어 점검 및 초기화 메모리, 프로세서, 저장장치, 주변장치 등의 디바이스를 찾고, 디바이스 드라이버를 로드한다.
6 루트(/)파일시스템 마운트 및 검사 루트 파일 시스템을 마운트하고 검사한다.
7 systemd 프로그램 실행 및 제어 넘김 (1) 커널이 /lib/systemd/systemd 프로그램 실행(PID=1)시키고 여기에 제어를 넘김
(2) systemd 프로세스는 시스템 운영을 위한 나머지 초기화 과정을 처리
(3) systemd 는 부팅 끝난 후에도 시스템 종료를 처리할 때까지 계속 수행된다.

관련 용어 설명

용어 설명 주요 기능
BIOS BIOS는 컴퓨터를 켜면 가장 먼저 실행되는 펌웨어로, 하드웨어 초기화 및 운영체제(OS) 로드에 필요한 환경을 설정한다. UEFI가 점차 대체 중이다. (1) 하드웨어 초기화 (CPU, 메모리, 저장장치 등).
(2) POST (Power-On Self Test) 수행: 하드웨어 이상 여부 점검.
(3) 부트 디바이스 탐색 및 부트로더 실행.
MBR MBR은 하드 디스크의 첫 번째 섹터에 위치하며, 디스크의 부팅 코드와 파티션 테이블 정보를 포함한다. GPT가 점차 MBR을 대체하고 있다. (1) 부트로더의 첫 단계를 실행.
(2) 디스크의 파티션 구조와 운영체제 로드 정보를 저장.
(3) 디스크의 유효성을 확인.
부트로더 BIOS 또는 UEFI에서 호출되어 운영체제 커널을 메모리에 로드하는 소프트웨어로, 여러 운영체제를 관리할 수 있다. (1) 부팅 가능한 OS를 찾고 선택.
(2) 커널을 메모리에 로드 및 실행.
(3) 사용자 입력으로 OS 부팅 옵션 설정.
커널 운영체제의 핵심 구성 요소로, 하드웨어와 소프트웨어를 연결하며 시스템 자원을 관리하는 역할. (1) 하드웨어 점검 및 초기화.
(2) 디바이스 드라이버 로드.
(3) 루트 파일 시스템 마운트.
(4) 프로세스 및 메모리 관리.
initramfs initramfs는 초기 부팅 단계에서 커널이 사용하는 임시 루트 파일 시스템으로, 디스크의 실제 루트 파일 시스템을 마운트하기 전에 필요한 환경을 준비한다. (1) 루트 파일 시스템 준비 (RAID, LVM, 암호화 해제 등).
(2) 하드웨어 드라이버 로드.
(3) 최종적으로 루트 파일 시스템으로 전환(switch_root).
systemd systemd는 리눅스 시스템의 초기화 시스템이자 서비스 관리자로, 부팅 시 시스템 초기화를 수행하고 서비스와 프로세스를 관리한다. (1) 병렬 서비스 시작으로 부팅 시간 단축.
(2) 시스템 및 서비스 상태 관리 (systemctl).
(3) 로그 관리 (journald).

Reference

UNIX시스템 - 김희천,김진욱 저