Linux initramfs란? 부팅 과정에서 필요한 임시 루트 파일 시스템 이해하기

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를 사용합니다.

항목initrdinitramfs
저장 방식RAM DiskRAM 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 단계의 로그와 설정을 함께 확인하는 것이 문제 해결의 핵심입니다.

댓글 남기기