리눅스의 부팅 과정
부팅 과정
아래 부팅 과정은 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). |