Linux 3.x init ramdisk 嵌入 bzImage 中?

Linux 3.x init ramdisk 嵌入 bzImage 中?

初始 ramdisk 是否嵌入到bzImage?
如何加载rootfs.cpioramdisk 并切换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_rootswitch_root /new_root用于切换到新根目录。

相关内容