WIPIVERSE

리눅스 부팅 프로세스

리눅스 부팅 프로세스는 하드웨어 초기화부터 사용자 공간 프로세스가 실행될 때까지 일련의 단계로 구성된다. 주요 단계는 다음과 같다.

  1. 하드웨어 초기화 (BIOS/UEFI)

    • 전원을 켜면 기본 입출력 시스템(BIOS) 또는 통합 확장 가능 펌웨어 인터페이스(UEFI)가 실행되어 CPU, 메모리, 주변 장치 등을 초기화한다.
    • 부팅 가능한 저장 매체를 탐색하고, 부트 로더가 위치한 섹터(또는 파일)를 지정한다.
  2. 부트 로더 (Boot Loader)

    • 일반적으로 GRUB(GRand Unified Bootloader)와 같은 부트 로더가 사용된다.
    • 부트 로더는 커널 이미지(vmlinuz)와 초기 램 디스크(initramfs) 파일을 메모리로 로드하고, 커널에 전달할 커맨드 라인 옵션을 설정한다.
    • 멀티부팅 환경에서 선택 메뉴를 제공하거나, 특정 커널 버전을 지정할 수 있다.
  3. 커널 로드 및 초기화

    • 커널 이미지가 메모리 상에 로드되면, 커널은 자체 초기화 루틴을 실행한다.
    • 하드웨어 추상화 계층(HAL)을 통해 장치를 탐지하고, 파일 시스템 드라이버, 네트워크 스택 등 기본 모듈을 초기화한다.
    • initramfs(초기 램 파일 시스템)가 마운트되어, 루트 파일 시스템을 마운트하기 전까지 필요한 초기화 작업을 수행한다.
  4. 루트 파일 시스템 마운트

    • 커널은 initramfs에서 지정된 루트 파일 시스템을 마운트한다. 이는 로컬 디스크, NFS, LVM, 암호화된 볼륨 등 다양한 형태가 될 수 있다.
    • 루트 파일 시스템이 마운트되면 initramfs는 해제되고, 실제 루트 파일 시스템으로 전환된다.
  5. 초기화 시스템 (Init System) 실행

    • 커널이 init 프로세스(프로세스 ID 1)를 실행한다. 현대 리눅스 배포판에서는 주로 systemd가 사용되며, 일부 배포판은 SysVinit이나 OpenRC 등을 채택한다.
    • 초기화 시스템은 서비스와 데몬을 정의된 순서와 의존 관계에 따라 시작한다. 여기에는 네트워킹, 로그인 화면, 그래픽 서버, 애플리케이션 서비스 등이 포함된다.
  6. 사용자 공간 전환

    • 초기화 시스템이 모든 필수 서비스와 목표 런레벨(또는 타깃)을 달성하면, 사용자 로그인 프롬프트(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 타깃)에 따라 세부 흐름이 다소 차이날 수 있으나, 위에 열거한 단계와 구성 요소는 대부분의 현대 리눅스 시스템에서 공통적으로 관찰된다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기