我一直在玩 QEMU/KVM 上运行 Archlinux 的虚拟机
几天来一切都很好,然后我向虚拟机添加了一个新磁盘以增加其容量。
我不确定到底发生了什么,但现在当我尝试启动虚拟机时,grub 出现错误
error: no signature
我不知道从哪里开始。如果您能帮助我解决问题,我将不胜感激。
更新 这个问题可能是 QEMU/KVM 错误还是其他什么问题?因为,我可以导航到我的自己的 grub 菜单并正常启动如果我使用live-usb。
- 使用安装USB
- 当出现启动菜单时,我选择了
UEFI Firmware Settings
- 选择
Boot Manager
- 选择
Grub
- 这让我到了我的自己的 grub 菜单
- 系统启动正常
答案1
搜索 GRUB 源代码后,错误文本“无签名”仅与错误一起出现GRUB_ERR_BAD_PART_TABLE
,即 GRUB 在应该从中启动的磁盘上没有看到有效的分区表。这里不涉及安全启动。
我猜想,按照 VM 固件的检测顺序,您添加到 VM 的新磁盘最终位于您最初启动的磁盘之前,而现在 GRUB(或者可能是系统固件?)正在查找错误的磁盘。
由于您通过使用 UEFI 固件启动管理器菜单成功启动了 VM,因此故障排除的下一步可能应该是efibootmgr -v
在 VM 中运行,查看该BootCurrent
值是什么以及BootXXXX
它引用的是哪个启动变量。
BootCurrent
该值与变量中的第一个值相同吗BootOrder
?
如果是,这可能是虚拟机固件错误或意外情况(自我修复系统???)
如果不是,这两个启动选项有什么区别?换句话说,如果BootCurrent是XXXX,而BootOrder的第一个值是YYYY,那么
BootXXXX
和BootYYYY
引导变量有什么区别?
如果BootXXXX
指示的变量似乎有效,您只需将其作为第一项BootCurrent
即可解决问题:XXXX
BootOrder
efibootmgr -o XXXX,<other BootOrder values, if any>