initrd는 Linux 및 Unix 계열 운영체제에서 사용되는 초기 램디스크(initial RAM disk) 이미지 파일을 가리키는 용어이다. 부팅 과정에서 커널이 메모리 상에 마운트하는 임시 파일 시스템으로, 주된 목적은 루트 파일 시스템이 마운트되기 전에 필요한 드라이버와 초기화 프로그램을 제공하는 것이다.
정의 및 특징
- 형식: 일반적으로 압축된
cpio아카이브 형태이며,gzip,bzip2,xz등으로 압축될 수 있다. - 로드 시점: 부팅 로더(예: GRUB, LILO 등)가 커널 이미지와 함께
initrd이미지를 메모리(RAM)에 로드한 뒤, 커널이 해당 이미지를 루트 파일 시스템으로 마운트한다. - 역할:
- 하드웨어 초기화: 디스크·네트워크·RAID 등 루트 파일 시스템을 인식하기 위해 필요한 커널 모듈을 로드한다.
- 초기 스크립트 실행:
/init스크립트가 실행되어 실제 루트 파일 시스템을 마운트하고,init프로세스로 전환한다. - 시스템 환경 구성: 필요한 임시 디렉터리와 장치 파일을 생성한다.
역사적 배경
- 초기 Linux 부팅 과정은
root파일 시스템을 직접 마운트해야 했으나, 다양한 파일 시스템과 하드웨어 지원이 요구되면서initrd개념이 도입되었다. - 1995년 후에
initrd가 처음 도입되었으며, 이후initramfs(initial RAM filesystem)라는 대안이 등장했지만, 현재도 많은 배포판에서initrd와initramfs를 혼용하거나 선택적으로 사용한다.
사용 예
- 부팅 파라미터:
linux /vmlinuz root=/dev/sda1 initrd=initrd.img - 커스텀 이미지 생성:
mkinitrd(Red Hat 계열) 또는dracut(Fedora, RHEL)와 같은 도구를 사용해 필요한 모듈과 스크립트를 포함한initrd이미지를 만든다. - 고급 기능: 암호화된 루트 파티션, 네트워크 부팅(PXE), LVM/RAID 구성 등 복합적인 환경에서
initrd는 초기화 단계에서 필수적인 역할을 수행한다.
한계 및 대체 기술
initrd는 고정된 이미지 파일이므로, 커널 업데이트 시마다 재생성해야 하는 관리 부담이 있다.initramfs는 커널에 내장된 가상 파일 시스템으로, 이미지 크기 제한이 없고 동적 로드가 가능해 현재는 대부분의 최신 배포판에서 기본으로 채택하고 있다.
참고 사항
initrd와initramfs는 용도와 동작 방식에서 유사하지만, 구현 방식과 지원되는 파일 시스템 구조가 다르다. 배포판마다 기본 사용 방식을 확인하는 것이 중요하다.