Linux 서버가 부팅될 때 Kernel이 메모리에 올라온 직후 바로 실제 루트 파일 시스템(/)을 사용하는 것은 아닙니다. 대부분의 Linux 배포판은 먼저 initramfs(Initial RAM File System) 라는 임시 루트 파일 시스템을 메모리에 로드한 뒤, 필요한 드라이버와 저장장치를 준비하고 실제 루트 파일 시스템으로 전환합니다.
부팅 중 “Unable to mount root fs”, “Kernel Panic”, “dracut emergency shell” 과 같은 오류가 발생했다면 대부분 initramfs 단계에서 문제가 생긴 것입니다.
이번 글에서는 initramfs의 개념과 역할, 동작 원리, 확인 방법, 그리고 실무에서 자주 발생하는 장애 사례를 살펴보겠습니다.
initramfs란?
initramfs는 Linux Kernel이 실제 Root File System을 마운트하기 전에 사용하는 임시 Root File System입니다.
Kernel은 initramfs를 메모리(RAM)에 압축 해제한 뒤 필요한 작업을 수행합니다.
간단한 구조는 다음과 같습니다.
Power On
↓
BIOS / UEFI
↓
GRUB
↓
Linux Kernel
↓
initramfs
↓
Root File System (/)
↓
systemd
즉, initramfs는 실제 운영체제로 넘어가기 위한 준비 단계라고 이해하면 됩니다.
initramfs가 필요한 이유
예를 들어 루트 파일 시스템이 다음과 같은 환경에 있다고 가정해 보겠습니다.
- RAID
- LVM
- NVMe SSD
- iSCSI
- SAN Storage
- 암호화(LUKS)
Kernel은 부팅 직후 이러한 장치를 바로 사용할 수 없습니다.
따라서 initramfs가 먼저 실행되어
- 필요한 Driver 로드
- RAID 구성
- LVM 활성화
- 암호화 해제
- Storage 인식
등의 작업을 수행한 뒤 실제 Root File System을 마운트합니다.
initramfs 내부에서 수행하는 작업
initramfs는 다음 작업을 담당합니다.
- Storage Driver 로드
- Device Driver 초기화
- RAID 구성
- LVM 활성화
- UUID 검색
- Root Device 찾기
- Root File System Mount
- systemd 실행 준비
이 작업이 끝나면 임시 Root에서 실제 Root File System으로 전환됩니다.
initramfs의 동작 과정
부팅 과정을 조금 더 자세히 보면 다음과 같습니다.
Kernel 시작
↓
initramfs 압축 해제
↓
필요한 Module 로드
↓
Storage 인식
↓
Root Device 검색
↓
Root File System Mount
↓
switch_root
↓
systemd 실행
여기서 switch_root는 initramfs에서 실제 Root File System으로 전환하는 중요한 과정입니다.
initramfs 파일 확인하기
현재 설치된 initramfs 파일은 /boot 디렉터리에 있습니다.
확인
ls -lh /boot
예시
initramfs-6.8.0-52-generic.img
vmlinuz-6.8.0-52-generic
배포판에 따라 이름은 약간 다를 수 있습니다.
initramfs 내용 확인하기
Ubuntu 계열
lsinitramfs /boot/initrd.img-$(uname -r)
RHEL 계열
lsinitrd
이 명령을 사용하면 initramfs 내부에 포함된 Driver와 Module을 확인할 수 있습니다.
initramfs 다시 생성하기
Kernel Upgrade 이후 initramfs를 새로 생성해야 하는 경우가 있습니다.
Ubuntu
update-initramfs -u
특정 Kernel만 생성
update-initramfs -u -k $(uname -r)
RHEL 계열
dracut -f
Kernel 변경 후 initramfs를 재생성하지 않으면 부팅 오류가 발생할 수 있습니다.
initramfs 관련 오류
대표적인 오류는 다음과 같습니다.
Kernel panic
Unable to mount root fs
또는
dracut-initqueue timeout
또는
ALERT! UUID=xxxx does not exist
이러한 오류는 대부분 다음 원인으로 발생합니다.
- Storage Driver 누락
- UUID 변경
- LVM 문제
- RAID 문제
- initramfs 손상
- Kernel Upgrade 실패
initramfs 문제 해결 방법
먼저 Boot Loader에서 Recovery Mode로 진입합니다.
현재 Root Device 확인
blkid
UUID 확인
cat /etc/fstab
initramfs 재생성
Ubuntu
update-initramfs -u
RHEL
dracut -f
GRUB 갱신
Ubuntu
update-grub
RHEL
grub2-mkconfig -o /boot/grub2/grub.cfg
initramfs와 initrd의 차이
예전 Linux에서는 initrd(Initial RAM Disk) 를 사용했습니다.
현재 대부분의 배포판은 initramfs를 사용합니다.
| 항목 | initrd | initramfs |
|---|---|---|
| 저장 방식 | RAM Disk | RAM File System |
| 파일 시스템 | 필요 | 불필요 |
| 성능 | 상대적으로 느림 | 빠름 |
| 사용 여부 | 과거 배포판 | 현재 대부분의 Linux |
현재 Linux에서는 initramfs가 표준 방식입니다.
실무에서 자주 사용하는 명령어
Kernel 확인
uname -r
initramfs 확인
ls -lh /boot
Ubuntu
update-initramfs -u
RHEL
dracut -f
부팅 로그 확인
journalctl -b
Kernel 로그 확인
dmesg
자주 묻는 질문
initramfs를 삭제하면 어떻게 되나요?
Kernel이 실제 Root File System을 찾을 수 없어 대부분 부팅에 실패합니다.
initramfs와 Kernel은 같은 것인가요?
아닙니다. Kernel은 운영체제의 핵심이고, initramfs는 Kernel이 실제 Root File System을 찾기 위해 사용하는 임시 환경입니다.
모든 Linux에서 initramfs를 사용하나요?
현재 Ubuntu, Debian, RHEL, Rocky Linux, AlmaLinux, SUSE 등 대부분의 최신 Linux 배포판에서 initramfs를 사용합니다.
마무리
initramfs는 Linux 부팅 과정에서 Kernel과 실제 Root File System을 연결하는 중요한 역할을 합니다. Storage Driver 로드, RAID 및 LVM 초기화, Root Device 탐색 등 핵심 작업을 수행한 뒤 운영체제가 정상적으로 시작될 수 있도록 준비합니다. 부팅 오류나 Kernel Panic이 발생했다면 initramfs 단계의 로그와 설정을 함께 확인하는 것이 문제 해결의 핵심입니다.