我正在尝试使用我已编译并安装的小型根文件系统的内核版本(linux-2.6.32.68 - 未修补)来启动机器。
我使用以下命令创建了一个小型 ext2 文件系统:
dd if=/dev/zero of=rootfs.img bs=1k count=8000
mkfs.ext2 -i 1024 -F rootfs.img
我已按照以下指南进行了填充:http://blog.braslavsky.org/2010/01/embedded-linux-from-scratch-in-90.html 因此它具有必要的 busybox 二进制文件和要运行的初始化脚本。
当使用 QEMU 模拟真实机器时,这一切都工作正常,即内核加载并安装 rootfs,例如:
qemu-system-x86_64 -m 64 -hda ./rootfs.img -kernel linux-2.6.32.68/arch/x86/boot/bzImage -append "root=/dev/sda init=/sbin/init"
但是,我尝试将内核二进制文件 (bzImage) 和 rootfs (rootfs.img) 添加到运行 fedora 22 的虚拟机,以便我可以使用它来启动它。我已将内核添加到 /boot 并根据需要重命名它。然后我运行 grub update 或类似于重新生成 /boot/grub2/grub.cfg 的命令,它成功地获取了我的新内核。一切看起来都很顺利,我现在得到了虚拟机的引导加载程序菜单。
我尝试手动编辑 grub.cfg 文件来挂载我的文件系统,例如 root=/rootfs.img。
然而,当尝试启动内核时,它会加载但停止,抱怨它无法挂载特定的 VFS 并引发内核恐慌。
有任何想法吗?我是否错误地指定了根文件系统?我什至尝试将 rootfs 转换为 ext3,但没有什么区别。
我的方法注定会失败吗?