리눅스 서버 부팅 과정 한눈에 이해하기 (BIOS부터 systemd까지)

Views: 0

리눅스 서버의 부팅 과정은 BIOS, 부트로더, 커널 초기화, systemd 실행으로 이어지며 각 단계는 운영체제를 정상적으로 구동하기 위한 필수 절차다. 본 글에서는 각 단계의 역할과 동작 방식을 명확하게 설명해 전체 흐름을 이해할 수 있도록 정리한다.

부팅로그 확인하기 journalctl -b

1. 부팅 과정의 전체 흐름 이해하기

서버가 전원을 켜는 순간부터 사용자 로그인이 가능한 상태가 되기까지는 여러 핵심 단계가 순차적으로 진행된다. 이 과정은 하드웨어 초기화부터 운영체제 실행까지 이어지며, 단계별로 명확한 역할을 가진다.

전체 과정은 다음과 같이 구성된다.

  1. BIOS 또는 UEFI 실행
  2. 부트로더 로딩 (GRUB 등)
  3. 리눅스 커널 실행
  4. Init 시스템(systemd 등) 초기화
    각 과정은 독립적으로 보이지만 서로 유기적으로 연결돼 있으며 하나라도 실패하면 시스템이 정상적으로 부팅되지 않는다.

2. BIOS와 UEFI: 하드웨어 준비의 시작

BIOS란?

BIOS(Basic Input/Output System)는 전통적인 펌웨어로, 하드웨어 초기화와 POST(Power-On Self Test)를 수행한 뒤 부트 가능한 장치를 탐색한다. BIOS는 MBR(Master Boot Record) 기반 디스크에서 부트로더를 찾는다.

UEFI란?

UEFI(Unified Extensible Firmware Interface)는 BIOS의 한계를 개선한 차세대 펌웨어다. GPT(GUID Partition Table)를 사용하며, 보안 부팅(Secure Boot)과 빠른 부팅 속도가 장점이다. UEFI는 부트로더를 EFI 파티션 내에서 직접 실행한다.

3. 부트로더: 운영체제로 연결하는 다리

GRUB의 역할

GRUB은 대표적인 리눅스 부트로더로 커널 이미지를 메모리에 적재하고 초기 RAM 디스크(initramfs)를 함께 로드한다. 이를 통해 커널이 루트 파일 시스템을 마운트할 수 있도록 지원한다.

부트로더 설정 파일

GRUB의 설정은 /boot/grub/grub.cfg에 저장되며, 커널 버전, 부팅 메뉴, 기본 부팅 항목 등이 정의된다. 사용자는 부팅 시 직접 커널 옵션을 수정할 수도 있다.

4. 리눅스 커널 실행과 초기화

부트로더가 커널을 메모리에 적재하면 커널이 실행된다. 커널은 다음과 같은 역할을 수행한다.

  • 메모리 관리 초기화
  • CPU, 디스크, 네트워크 등 하드웨어 드라이버 로드
  • initramfs를 기반으로 루트 파일 시스템 마운트
  • 첫 사용자 공간 프로세스인 init 실행

이 단계에서 문제가 발생하면 커널 패닉(kernel panic)이 출력되며 부팅이 중단된다.

5. init 프로세스와 systemd

전통적인 SysVinit

과거 리눅스는 /sbin/init을 기반으로 runlevel 개념을 사용했다. 각 레벨은 시스템 상태를 정의하며, 스크립트 방식으로 서비스를 순차적으로 실행했다.

systemd의 등장

systemd는 현대 리눅스 배포판에서 기본 init 시스템으로 사용된다. 병렬 서비스 실행, 서비스 의존성 관리, 로그 관리(journald)를 제공하며 부팅 속도와 안정성을 대폭 개선했다.

systemd 부팅 과정

  1. PID 1로 systemd 실행
  2. 기본 타깃(target) 설정 (예: multi-user.target, graphical.target)
  3. 필요한 서비스 유닛(.service), 소켓(.socket), 마운트(.mount) 등을 순차 및 병렬적으로 실행
  4. 로그인 서비스 활성화 (getty@.service 등)

6. 부팅 후 확인 방법

현재 부팅 단계 확인

  • systemctl status : 서비스 상태 확인
  • systemd-analyze : 부팅 시간 분석
  • dmesg : 커널 로그 확인

부팅 로그 확인

journalctl -b 명령어로 현재 부팅의 전체 로그를 볼 수 있으며, 오류 분석이나 성능 확인에 유용하다.

7. 전체 과정 요약

단계주요 역할
BIOS/UEFI하드웨어 초기화, 부트 장치 탐색
부트로더커널 및 initramfs 로드
커널 초기화하드웨어 드라이버 로드, 루트 파일 시스템 마운트
systemd서비스 및 사용자 환경 준비

마무리

리눅스 서버의 부팅 과정은 단순히 전원을 켜는 것이 아니라 각 단계가 유기적으로 연결된 정교한 흐름이다. BIOS부터 systemd까지 과정의 원리를 이해하면 문제 해결과 시스템 최적화에 큰 도움이 된다.