![Linux 3.x init ramdisk 嵌入 bzImage 中?](https://linux22.com/image/55725/Linux%203.x%20init%20ramdisk%20%E5%B5%8C%E5%85%A5%20bzImage%20%E4%B8%AD%EF%BC%9F.png)
初始 ramdisk 是否嵌入到bzImage
?
如何加载rootfs.cpio
ramdisk 并切换root
?
答案1
引导加载程序(例如 lilo 或 GRUB)加载 cpio initramfs(除非作为 blob 嵌入到内核中)或 initramd,并在引导时将其传递给内核。
initrd
通常使用引导加载程序配置文件中的指令指定。
root=/dev/ram0
如果您使用 initrd,您通常会在内核命令行上指定根文件系统设备(append
例如,使用 lilo 指令指定)。
解压/挂载 initramfs/initrd 后,内核将执行/linuxrc
(如果存在),这通常是一个挂载真实根文件系统并使用pivot_root
(旧)或switch_root
(新)切换到它的脚本。
命令init
行参数可以设置为另一个可执行文件/脚本来执行,而不是linuxrc
.尝试init=/bin/sh
在下次启动时传递到内核。
答案2
最初的 ramdisk 传统上不会嵌入到 中bzImage
,尽管它可以嵌入。相反,它存储在第二个文件中并使用init
指令指定。
您的文件用于切换根目录的方法rootfs.cpio
取决于生成该文件的任何内容,但传统上,pivot_root /new_root
或switch_root /new_root
用于切换到新根目录。