리눅스 부팅 프로세스는 하드웨어 초기화부터 사용자 공간 프로세스가 실행될 때까지 일련의 단계로 구성된다. 주요 단계는 다음과 같다.
-
하드웨어 초기화 (BIOS/UEFI)
- 전원을 켜면 기본 입출력 시스템(BIOS) 또는 통합 확장 가능 펌웨어 인터페이스(UEFI)가 실행되어 CPU, 메모리, 주변 장치 등을 초기화한다.
- 부팅 가능한 저장 매체를 탐색하고, 부트 로더가 위치한 섹터(또는 파일)를 지정한다.
-
부트 로더 (Boot Loader)
- 일반적으로 GRUB(GRand Unified Bootloader)와 같은 부트 로더가 사용된다.
- 부트 로더는 커널 이미지(
vmlinuz)와 초기 램 디스크(initramfs) 파일을 메모리로 로드하고, 커널에 전달할 커맨드 라인 옵션을 설정한다. - 멀티부팅 환경에서 선택 메뉴를 제공하거나, 특정 커널 버전을 지정할 수 있다.
-
커널 로드 및 초기화
- 커널 이미지가 메모리 상에 로드되면, 커널은 자체 초기화 루틴을 실행한다.
- 하드웨어 추상화 계층(HAL)을 통해 장치를 탐지하고, 파일 시스템 드라이버, 네트워크 스택 등 기본 모듈을 초기화한다.
initramfs(초기 램 파일 시스템)가 마운트되어, 루트 파일 시스템을 마운트하기 전까지 필요한 초기화 작업을 수행한다.
-
루트 파일 시스템 마운트
- 커널은
initramfs에서 지정된 루트 파일 시스템을 마운트한다. 이는 로컬 디스크, NFS, LVM, 암호화된 볼륨 등 다양한 형태가 될 수 있다. - 루트 파일 시스템이 마운트되면
initramfs는 해제되고, 실제 루트 파일 시스템으로 전환된다.
- 커널은
-
초기화 시스템 (Init System) 실행
- 커널이
init프로세스(프로세스 ID 1)를 실행한다. 현대 리눅스 배포판에서는 주로systemd가 사용되며, 일부 배포판은SysVinit이나OpenRC등을 채택한다. - 초기화 시스템은 서비스와 데몬을 정의된 순서와 의존 관계에 따라 시작한다. 여기에는 네트워킹, 로그인 화면, 그래픽 서버, 애플리케이션 서비스 등이 포함된다.
- 커널이
-
사용자 공간 전환
- 초기화 시스템이 모든 필수 서비스와 목표 런레벨(또는 타깃)을 달성하면, 사용자 로그인 프롬프트(
getty), 그래픽 로그인 매니저(GDM, LightDM 등) 등을 통해 최종 사용자가 시스템에 접근할 수 있다.
- 초기화 시스템이 모든 필수 서비스와 목표 런레벨(또는 타깃)을 달성하면, 사용자 로그인 프롬프트(
주요 요소 요약
| 단계 | 주요 역할 | 대표 구성 요소 |
|---|---|---|
| BIOS/UEFI | 하드웨어 초기화 및 부트 디바이스 선택 | BIOS, UEFI |
| 부트 로더 | 커널 및 초기 램 디스크 로드, 커맨드 라인 전달 | GRUB, systemd‑boot, LILO |
| 커널 | 하드웨어 추상화, 초기 장치 드라이버 로드 | Linux kernel (vmlinuz) |
| initramfs | 초기 파일 시스템 제공, 루트 파일 시스템 마운트 준비 | initramfs, dracut, initrd |
| Init System | 서비스 및 데몬 관리 | systemd, SysVinit, OpenRC |
| 사용자 공간 | 사용자 세션 제공 | getty, display manager, desktop environment |
리눅스 부팅 프로세스는 표준화된 사양(예: UEFI Boot Services)과 배포판별 구현(예: systemd 타깃)에 따라 세부 흐름이 다소 차이날 수 있으나, 위에 열거한 단계와 구성 요소는 대부분의 현대 리눅스 시스템에서 공통적으로 관찰된다.