我已经为自己构建了一个 Arch Linux 变体的启动映像,用于写入 USB 记忆棒。它使用具有默认值的 grub,并且在从 USB 启动物理机箱时工作正常。(不过这个问题应该与 Arch 无关)
现在我尝试在 VirtualBox 中使用相同的图像(如果有必要的话,在 Mac 上)。首先我将其转换(仍然在 Linux/Arch 上):
VBoxManage convertfromraw foo.img foo.vmdk --format VMDK
然后我将其 scp 到 Mac,并通过 GUI,选择“Linux”/“其他 Linux(64 位)”,并选择 .vmdk 文件作为根磁盘。
Grub 出现,向我显示了正确的选项,然后屏幕空白(正如它应该的那样),思考了一会儿,然后我得到了一些版本的“无法找到根磁盘”:
错误:未找到设备“UUID=3d6ee...”。跳过 fsck。 错误:无法找到根设备“UUID=3d6ee...”。 您正被置于恢复 shell 中。
在恢复 shell 中:
# blkid
(没有什么)
但是,如果我选择 grub 启动选项“fallback initramfs”,它就可以正常启动。如果我然后说:
# blkid /dev/sda1:UUID="3d6ee..." TYPE="ext4" PARTUUID="771...-01" /dev/sda2:UUID="98234..." TYPE="ext4" PARTUUID="771...-02"
这似乎告诉我它找不到的 UUID 确实存在。
我在设置 grub 时尝试在 /etc/default/grub 中设置 GRUB_DISABLE_LINUX_UUID=true,但是出现以下消息:
错误:未找到设备“/dev/mapper/loop1p1”。跳过 fsck。 错误:无法找到根设备“/dev/mapper/loop1p1”。
(我想这个没什么可挑剔的...)
那么为什么后备的 initframfs 能找到它,而默认的却找不到。更糟糕的是,为什么 blkid 什么都不显示?
(我已将这个问题发布到 Arch Linux 和 VirtualBox 支持板上,但目前尚无回复。)
答案1
尝试编辑您的/etc/mkinitcpio.conf
(在后备模式下)以block
在之前使用钩子autodetect
并重新生成图像mkinitcpio -p linux
(另请参阅我的更详细的答案自己的问题关于这个话题,我有一个非常类似的问题)