如何在没有“virt-manager”的情况下从 KVM 虚拟机启动 UEFI 映像?(例如 OpenMediaVault/Cockpit 上的 Home Assistant)

如何在没有“virt-manager”的情况下从 KVM 虚拟机启动 UEFI 映像?(例如 OpenMediaVault/Cockpit 上的 Home Assistant)

背景

我想在 OpenMediaVault 5 上的虚拟机中运行 Home Assistant (HASS)。在 OMV 4 之前,这很容易,因为 OMV(以及底层 Debian)支持 VirtualBox,而 VB 显然在启动 UEFI 映像时没有任何问题。由于 OMV 5(以及底层 Debian 10)不再支持 VirtualBox,OMV 现在使用 KVM(libvirt)作为虚拟机(它支持座舱来管理它们)。不幸的是,这意味着在 OMV/Debian 10 上启动 UEFI 映像不再是一件容易的事,而且——你猜对了——KVM 的官方 Home Assistant 映像(QCOW2)需要 UEFI,尝试在 Cockpit 中导入和启动它会失败。我无法在 Cockpit 中找到任何允许我将启动模式设置为 UEFI 的按钮或命令。

挑战(更笼统地说)

所以我想要实现的是在无头系统上以 UEFI 模式启动 QCOW2 映像,即没有virt-manager。 (如果您使用的是台式机,我相信您不会遇到这个问题,而可以使用virt-manager而不是 Cockpit。)

你是怎么做到的?

答案1

免责声明:我对 UEFI 不是很熟悉,甚至不知道它到底起什么作用,所以如果这个答案可以改进,请进行相应的评论或编辑。

这对我有用:

apt-get install ovmf
cd /usr/share/ovmf/

检查文件OVMF.fd是否存在,因为这是libvirt启动映像所需的文件。(如果您的文件由于某种原因位于其他地方,请找到它并相应地更改下面的路径。)

假设您已经创建了一个名为 HASS 的虚拟机(使用导入图像按钮,并使用家庭助理安装页面现在,您可以在命令行上编辑该虚拟机(请确保在继续操作之前已关闭机器):

virsh edit HASS

找到该部分,我的看起来像这样:

   <os>
     <type arch='x86_64' machine='pc-q35-3.1'>hvm</type>
     <boot dev='hd'/>
   </os>

插入<loader readonly='yes' type='rom'>/usr/share/ovmf/OVMF.fd</loader>在类型标签之后:

   <os>
     <type arch='x86_64' machine='pc-q35-3.1'>hvm</type>
     <loader readonly='yes' type='rom'>/usr/share/ovmf/OVMF.fd</loader>
     <boot dev='hd'/>
   </os>

保存并退出,您就完成了。如果您现在启动 VM,它应该会启动 HASS 映像。

相关内容