initramfs의 목표는 루트 파티션을 부팅하고 chroot하는 것이라고 생각합니다. 그러나 항상 root={smth} 플래그가 있는 경우 distro 개발자가 initramfs를 사용해야 하는 이유를 이해할 수 없습니다.
답변1
initramfs의 목표는 루트 파티션을 부팅하고 chroot하는 것이라고 생각합니다.
정확히는 아닙니다. 제가 기억하는 리눅스 역사에 따르면, initramfs(initrd)의 전신이 마운트되어 /linuxrc
실행된 후,출구(바라보다오래된 루트 변경 메커니즘). 그러면 커널이 루트 설치를 처리합니다. 나중에 루트를 설치하고 루트로 전환하는 작업이 initramfs로 옮겨졌고 /init
종료되지 않았습니다.
이는 initramfs가 단순한 마운트 및 chroot 이상의 기능을 수행할 수 있음을 보여줍니다.
Linus Torvalds는 initramfs의 두 가지 이유를 설명합니다.:
"사람들이 커널 코드를 수정하거나 다른 부팅 순서를 사용하지 않고도 초기 시스템을 더 쉽게 맞춤 설정할 수 있습니다."
"사용자 공간에는 보호 기능, '무한 스택' 및 일반적으로 더 나은 인프라(예: 디버그하기 더 쉬움)가 있기 때문에 사용자 공간에서 많은 일을 더 쉽게 수행할 수 있습니다."
그러나 항상 root={smth} 플래그가 있는 경우 distro 개발자가 initramfs를 사용해야 하는 이유를 이해할 수 없습니다.
나는 initramfs를 단일 컴파일러로 취급합니다. 물론 기술적으로는 스크립트와 바이너리를 포함하는 파일 시스템이지만대개(많은) 구성이 포함되어 있지 않습니다. 일부 매개변수는 하드코딩하는 것보다 사용자가 런타임에 수정할 수 있도록 남겨 두는 것이 더 좋습니다.
이를 통해 시스템의 일부를 다시 컴파일할 필요 없이 부트로더(예: grub)에서 시스템 시작을 수정할 수 있습니다. Grub에서는 e메뉴 항목을 누르는 것만큼 쉽습니다.
Initramfs 는 /proc/cmdline
./root