![배포판(예: Arch)이 initramfs와 root={smth}를 모두 사용하는 이유는 무엇입니까?](https://linux55.com/image/14907/%EB%B0%B0%ED%8F%AC%ED%8C%90(%EC%98%88%3A%20Arch)%EC%9D%B4%20initramfs%EC%99%80%20root%3D%7Bsmth%7D%EB%A5%BC%20%EB%AA%A8%EB%91%90%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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