我正在尝试只启动 linux 本身。主要是为了学习体验。我有一个小硬盘只有一个 ext4 分区看起来像这样:
/bin/bash
/dev/console
/boot/vmlinuz
/boot/grub/grub.cfg
/boot/grub/i386-pc/*.mod
bash
版本 3.0 是静态链接的,vmlinuz
版本是 3.16.2,grub
版本是 2.00rc1。grub.cfg
看起来像这样:
insmod linux
insmod search
insmod ext2
insmod part_msdos
set timeout=5
menuentry 'Linux' {
set the_root_uuid=a0225737-71c9-4d60-81e2-275dc078c3c1
search --fs-uuid $the_root_uuid --set=root
linux /boot/vmlinuz root=$root ro init=/bin/bash
}
启动时我得到以下信息:
kernel panic: VFS could not open device root (hd0,msdos1), or unknown block(0,0) error -6
我缺少什么?
答案1
您的内核不包含访问根文件系统所需的驱动程序(例如 ahci sata 模块,也可能包括 ext4 模块)。
您要么需要提供加载适当模块的 initrd/initramfs,要么需要编译一个静态包含必要驱动程序(而不是作为模块)的内核。
由于您的 rootfs 无论如何都不包含加载模块的工具,因此我建议您构建一个非模块化内核。