언급 한 바와 같이, initramfs의 목적은 "실제"루트 파일 시스템을 마운트하는 것입니다 (다른 작업도 수행 할 수 있지만 이것은 일반적인 작업입니다).
initramfs가 없으면 커널은 일반적으로 파티션을 읽기 전용으로 마운트 한 다음에 제어권을 넘깁니다 /sbin/init
. initramfs는 일반적으로 루트 파일 시스템이 일반 파티션이 아닌 경우 (mdraid, lvm, 암호화 등) 커널에서이 작업을 수행합니다.
이제 initramfs의 배경과는 별도로 /etc/fstab
루트 파일 시스템에 있습니다. 따라서 initramfs가 시작될 때 해당 루트 파일 시스템이 없으므로 fstab (치킨 및 계란 문제)에 도달 할 수 없습니다.
대신 initramfs에서 사용할 수 있도록 매개 변수를 커널 부팅 인수로 전달해야합니다. 일반적으로 이것은 다음과 같습니다 root=/dev/sdX
. 그러나 루트 장치의 위치를 자동으로 파악하는 매개 변수가 없으므로 매개 변수가 없습니다. 소프트웨어 (일반적으로 스크립트) 일 뿐이므로 루트 장치를 마운트하기 위해 원하는 모든 작업을 수행 할 수 있습니다.
이제 앞에서 언급했듯이 커널은 실제 루트를 읽기 전용으로 마운트합니다. initramfs는이 작업을 정확히 수행해야합니다. initramfs가 완료되면 시스템은 initramfs가 전혀없는 것처럼 정확하게 부팅을 /sbin/init
시작 하고 시작합니다. 이 init은 모든 일반 부팅 스크립트를 시작하며,이 스크립트 중 하나의 역할은 읽기 /etc/fstab
, 루트를 읽기 / 쓰기로 전환하고 다른 모든 파일 시스템을 마운트하는 것입니다.