Windows、UEFI、TPM、Linux内核虚拟机
我们使用Linux KVM和Virt-Manager管理工具广泛,我们的VM几乎都是基于BIOS的基础直到这一点。获取一个Windows 10 Guesty运行时,它应该更新到11所需的一切都是有点挑战,所以我们现在将通过基础知识。
首先,在默认情况下,virt-manager创建的新客户机是基于bios的—一旦创建,就不能更改它们。在制作任何运行Windows 11的新虚拟机时,必须检查安装前自定义配置
“完成”对话框上的框。选中此框允许您在初始化新VM之前访问客户机硬件配置。这是必须必须在初始化后固件变得不可变的。
在“概述”部分,固件默认设置为BIOS的底部下拉菜单,但下面有三个UEFI选项。在我们的测试中,OVMF_CODE.fd
和ovmf_code.secboot.fd.fd.
这两个工作,但OVMF_CODE.ms.fd
没有,至少Windows 10没有。当我们尝试使用OVMF_CODE.ms.fd
固件,Windows 10安装良好,但它认为我们的VirtIO驱动程序的签名是无效的,所以它拒绝在第一次实际启动时加载它们。
吹走VM,再试一次OVMF_CODE.fd
UEFI固件运行良好,即使没有重新安装Windows 10。简单地创建一个新的VM与适当的固件,并将其虚拟磁盘指向已经安装的Windows 10 UEFI映像,就像一个魅力。
我们遭受的下一篇文章是由于显示分辨率 - 从UEFI启动KVM访客将显示分辨率固定为单个设置,然后窗口将拒绝更改。要解决问题,您需要按esc
在UEFI引导序列期间。您可以在下面设置首选显示分辨率OVMF设置
.它的默认分辨率是640x480,我们将我们的分辨率改为1280x720(也就是720p)。我们的更改没有在这次引导中生效——我们需要在Windows注意到更改之前重新引导客户。
在完成所有这些工作之后,只剩下TPM支持了,而且解决起来要简单得多。单击“添加硬件”,在硬件类型列表中选择“TPM”,即可随时为现有虚拟机添加TPM硬件。这里有三个选择:模型、后端和版本。
透传TPM
如果主机系统具有可用的TPM(并且启用,如果是上述FTPM),则可以使用“Passthrough设备”作为后端。这将第三种选择从“版本”到“设备路径”,默认为TPM0。但是,该模型仍然是一个重要的选择,因为它需要匹配您的系统的硬件TPM。在我们测试的Ryzen 7 3700x系统上,这
工作,但默认CBR.
模型失败,有一个关于固定缓冲区长度不匹配的错误。
Ubuntu用户将在这里拍摄另一个步骤 - Apparmor将打破VM的尝试访问传递TPM,因此需要进行NERFED。编辑文件/etc/apparmor.d/abstractions/qemu.
并找到允许访问的部分/ dev / net / tun
- 立即在该行上方,添加一个新行/ dev / tpm0 rw,
所以现在的部分如下所示:
/usr/sbin/libvirtd, /dev/tpm0 rw, /dev/net/tun rw, /dev/kvm rw, /dev/ptmx rw, @{PROC}/*/status r,
保存文件,然后重新初始化AppArmorsystemctl重新启动apparmor.
你就要开始比赛了。TPM直通现在可以在虚拟机中正常工作了没有需要禁用阿显卡的重要安全屏障。
仿效TPM.
如果您没有或不想在VM的主机设备上使用硬件或固件TPM支持,则可以安装一个模拟器。我们使用了swtpm
项目,需要将额外的存储库添加到我们的Ubuntu 20.04系统中:
root @ banshee:〜#apt-add-repository ppa:smoser / swtpm root @ banshee:〜#apt安装swtpm swtpm-tools
我们省略了一座诊断信息,在这些步骤中滚动,但他们做了诀窍。请注意我们需要swtpm-tools
除了swtpm
本身。
添加了适当的包之后,您就可以进行选择模拟设备
随着你的TPM后期德国经理
你就准备好了。在模拟模式下,我们在Windows 10中使用CBR或TIS模型TPM都没有问题,所有这些都可以很好地检测到完全支持TPM 2.0设备tpm.msc
在我们的UEFI Windows 10客户端。
最后,请注意通过硬件TPM所需更新libvirtd
但运行一款模拟版却没有。访问swtpm
与股票Apamor档案有效。
清单图像微软
你必须登录或者创建一个帐户评论。