Linux 서버를 운영하다 보면 부팅 과정에서 문제가 발생하는 경우가 있습니다. 전원은 켜지지만 운영체제가 시작되지 않거나, GRUB 화면에서 멈추거나, Kernel Panic이 발생하거나, systemd가 정상적으로 실행되지 않는 사례를 자주 접할 수 있습니다.
이러한 문제를 해결하려면 Linux Boot Process(부팅 과정) 를 이해해야 합니다. Linux는 단순히 전원을 켠다고 바로 로그인 화면이 나타나는 것이 아니라, 여러 단계의 과정을 거쳐 운영체제가 실행됩니다.
이번 글에서는 Linux 서버가 전원을 켠 순간부터 로그인 프롬프트가 나타날 때까지의 부팅 과정을 단계별로 살펴보겠습니다.
Linux Boot Process란?
Boot Process는 컴퓨터 전원이 켜진 후 Linux 운영체제가 실행되기까지의 전체 과정을 의미합니다.
일반적인 순서는 다음과 같습니다.
Power On
↓
BIOS / UEFI
↓
Boot Loader (GRUB)
↓
Linux Kernel
↓
initramfs
↓
systemd (PID 1)
↓
System Service
↓
Login
이 과정을 이해하면 부팅 장애가 발생했을 때 어느 단계에서 문제가 발생했는지 빠르게 파악할 수 있습니다.
1. Power On
모든 과정은 전원 버튼을 누르는 것부터 시작됩니다.
CPU는 미리 정해진 주소에서 첫 번째 명령을 실행하며 BIOS 또는 UEFI Firmware를 호출합니다.
이 시점에는 아직 Linux Kernel은 메모리에 존재하지 않습니다.
2. BIOS 또는 UEFI
BIOS(Basic Input Output System) 또는 UEFI(Unified Extensible Firmware Interface)는 하드웨어를 초기화하는 역할을 합니다.
주요 작업은 다음과 같습니다.
- CPU 초기화
- 메모리(RAM) 검사
- 디스크 확인
- 키보드 및 장치 초기화
- 부팅 가능한 디스크 검색
UEFI는 BIOS보다 빠른 부팅과 GPT 파티션 지원, 보안 부팅(Secure Boot) 등의 기능을 제공합니다.
3. Boot Loader(GRUB)
BIOS 또는 UEFI는 Boot Loader를 실행합니다.
Linux에서 가장 많이 사용하는 Boot Loader는 GRUB(Grand Unified Bootloader) 입니다.
GRUB의 역할은 다음과 같습니다.
- Linux Kernel 선택
- 여러 운영체제 선택
- Kernel Parameter 전달
- initramfs 로드
GRUB 화면에서 Recovery Mode를 선택하거나 Kernel 버전을 변경할 수도 있습니다.
4. Linux Kernel 로드
GRUB는 Kernel 이미지를 메모리에 적재하고 실행합니다.
이 단계에서 Kernel은 다음과 같은 작업을 수행합니다.
- 메모리 초기화
- CPU 초기화
- Scheduler 시작
- Device Driver 초기화
- Virtual Memory 구성
- Root File System 준비
Kernel에 문제가 발생하면 Kernel Panic이 나타날 수 있습니다.
5. initramfs 실행
Kernel은 임시 Root File System인 initramfs를 메모리에 로드합니다.
initramfs의 주요 역할은 다음과 같습니다.
- Root File System 찾기
- RAID 초기화
- LVM 초기화
- 암호화 디스크 해제
- 필요한 Driver 로드
Root File System을 찾지 못하면 다음과 같은 오류가 발생할 수 있습니다.
Kernel panic - not syncing:
Unable to mount root fs
6. systemd 실행
Root File System이 준비되면 Kernel은 최초의 사용자 프로세스를 실행합니다.
대부분의 최신 Linux 배포판에서는 systemd가 PID 1로 실행됩니다.
확인 방법
ps -p 1
예시
PID TTY CMD
1 ? systemd
systemd는 이후 모든 시스템 서비스를 시작하는 역할을 담당합니다.
7. 서비스 시작
systemd는 설정된 Target에 따라 필요한 서비스를 실행합니다.
예를 들어
- NetworkManager
- sshd
- cron
- rsyslog
- nginx
- docker
등이 순차적으로 시작됩니다.
서비스 상태 확인
systemctl status
부팅 시간이 오래 걸리는 서비스 확인
systemd-analyze blame
8. 로그인 화면
모든 서비스가 정상적으로 시작되면 로그인 프롬프트가 나타납니다.
콘솔 환경에서는
server login:
GUI 환경에서는 로그인 화면이 표시됩니다.
이 시점부터 사용자는 시스템을 사용할 수 있습니다.
Boot Process 확인 명령어
현재 Kernel 확인
uname -r
부팅 시간 확인
uptime
부팅 과정 분석
systemd-analyze
서비스별 부팅 시간
systemd-analyze blame
Kernel 로그 확인
journalctl -k
이번 부팅 로그 확인
journalctl -b
이전 부팅 로그 확인
journalctl -b -1
Boot Process에서 자주 발생하는 문제
대표적인 부팅 장애는 다음과 같습니다.
- GRUB 손상
- Kernel Panic
- initramfs 오류
- Root File System 인식 실패
- Driver 오류
- UUID 변경
- systemd 서비스 실패
- 디스크 오류
- 파일 시스템 손상
부팅이 되지 않는 경우 어느 단계에서 문제가 발생했는지 확인하는 것이 가장 중요합니다.
Boot Process 단계 요약
| 단계 | 역할 |
|---|---|
| Power On | 전원 공급 |
| BIOS / UEFI | 하드웨어 초기화 |
| GRUB | Kernel 선택 및 로드 |
| Linux Kernel | 하드웨어 제어 시작 |
| initramfs | Root File System 준비 |
| systemd | PID 1 실행 |
| Service | 시스템 서비스 시작 |
| Login | 사용자 로그인 가능 |
자주 묻는 질문
BIOS와 UEFI의 차이는 무엇인가요?
UEFI는 BIOS를 개선한 펌웨어로 GPT 파티션, Secure Boot, 빠른 부팅 등을 지원합니다.
GRUB가 손상되면 어떻게 되나요?
Kernel을 로드할 수 없기 때문에 운영체제가 부팅되지 않습니다. 복구 모드나 Live USB를 이용해 GRUB를 다시 설치해야 합니다.
systemd는 왜 PID가 1인가요?
Kernel이 최초로 실행하는 사용자 공간 프로세스이기 때문입니다. 이후 모든 서비스와 프로세스는 systemd를 기준으로 관리됩니다.
마무리
Linux Boot Process는 BIOS 또는 UEFI에서 시작해 GRUB, Kernel, initramfs, systemd를 거쳐 로그인 화면이 나타나는 일련의 과정입니다. 각 단계의 역할을 이해하면 부팅 장애가 발생했을 때 문제 지점을 빠르게 찾을 수 있으며, GRUB 오류, Kernel Panic, initramfs 문제와 같은 다양한 장애에도 효과적으로 대응할 수 있습니다.