initramfs는 Linux 커널이 부팅될 때 초기화 단계에서 사용되는 임시 루트 파일 시스템이다. 일반적으로 압축된 cpio 아카이브 형태로 저장되며, 부팅 로더(GRUB 등) 또는 커널 자체에 의해 메모리(RAM)에 로드된다. 커널이 이 파일 시스템을 마운트한 뒤, 초기화 스크립트(init 프로그램)를 실행하여 실제 루트 파일 시스템을 마운트하고 전환한다.
주요 특징
- 임시 루트 파일 시스템: 부팅 초기에 최소한의 실행 환경을 제공한다.
- 압축 cpio 아카이브:
gzip,xz,lz4등 다양한 압축 방식을 사용할 수 있다. - 부팅 로더와 연동: 부팅 로더 설정(
grub.cfg등)에서 커널 옵션initrd=를 통해 지정한다. - initrd와의 차이: 초기 RAM 디스크(initrd)는 별도의 블록 디바이스 이미지를 사용하지만, initramfs는 직접 커널 메모리 공간에 마운트되며, 초기화 과정이 간소화된다.
사용 흐름
- 부팅 로더가 커널과 initramfs 이미지를 메모리에 로드한다.
- 커널이 initramfs를
ramfs(또는tmpfs)에 마운트한다. - 마운트된 파일 시스템 내의
init(또는/init) 스크립트가 실행된다. init스크립트는 실제 루트 파일 시스템을 찾아 마운트하고,switch_root혹은pivot_root를 수행하여 시스템의 루트 디렉터리를 전환한다.- 이후 일반적인 사용자 공간 초기화(
systemd,SysVinit등)가 이어진다.
적용 사례
- 드라이버 로딩: 부팅 시 하드웨어 드라이버가 커널에 내장되지 않은 경우, initramfs 내에 포함된 모듈을 로드한다.
- 암호화된 루트 파일 시스템:
LUKS등으로 암호화된 디스크를 해제하기 위한 도구와 스크립트를 포함한다. - 네트워크 부팅:
NFS나iSCSI를 이용해 원격 루트 파일 시스템을 마운트하기 위한 초기 환경을 제공한다.
어원
initramfs는 “initial RAM filesystem”의 축약형으로, “초기 RAM 파일 시스템”이라는 의미를 갖는다. 이는 초기화 단계에서 메모리(RAM) 상에 임시로 구성되는 파일 시스템임을 직관적으로 나타낸다.
이상은 현재 확보된 공신력 있는 자료에 근거한 내용이며, 추가적인 세부 사항은 해당 Linux 배포판의 문서나 커널 매뉴얼을 참고한다.