尽管我宁愿将它杀死,但我需要将古老的虚拟机(2.4 内核)从 VMWare 迁移到 KVM。
不幸的是我无法让迁移的虚拟机读取根文件系统:
kmod: failed to exec /bin/modprobe -s -k block-major-8, errno = 2
VFS Cannot open root device "sda2" or 08:02
Please append a correct "root=" boot option
Kernel panic: VFS: unable to mount root fs on 08:02
initrd 文件具有正确的内核模块,并且 linuxrc 文件明确为这些模块运行 insmod。模拟的 MegaRAID SAS 8708EM2 和 LSI-53c895a 都出现了同样的行为。将磁盘映射为 SATA 时内核甚至不会加载。
我可以使用可启动 CD-ROM 挂载并 fsck VM 上的磁盘映像,并且文件系统和分区表似乎没有问题。
将磁盘映射为 IDE 会出现不同的错误(但仍然无法启动):
Mounting root filesystem
mount: error 6 mounting ext3
pivotroot: pivot+root(/sysroot,/sysroo/initrd) failed: 2
umount /initrd/proc failed: 2
Freeing unused kernel memory: 128k freed
Kernel panic: No init found. Try passing init= option to kernel.
答案1
找到问题了。SCSI 设备驱动程序加载失败前scsi_mod 模块已加载。通过更改 initrd 映像中 linuxrc 文件中的顺序来修复此问题。