我尝试按照官方文档将我的 KVM 客户机 Windows 10 升级到 Windows 11,但出现了一些问题:
- CPU 不受支持,我尝试使用 Skylake、Broadwell 等,但没有成功
- Windows 11 需要具有 UEFI 安全启动功能的计算机。我的虚拟机是 BIOS
- Windows 11 需要 TPM 2.0
第 3 点非常简单,但第 1)和第 2)点则比较难
答案1
我使用 ubuntu 22.04 上的 KVM 和来自 Ubuntu 存储库的最新 KVM。我的 KVM 客户端是带有最新更新和 q35 芯片组的 Windows 10。除非另有说明,否则所有更改都是在 VM 关闭的情况下完成的。
升级到Windows 11时我遇到的问题是:
- 不支持 CPU
- 需要安全启动
- Windows 11 需要 TPM 版本 2.0 或更高版本
第三点是我首先要解决的问题,它很简单,你只需要使用 GUI 将 TPM 硬件添加到你的 KVM 客户机。查找 TPM 并设置版本 2。
对于第 1 点,这取决于您的实际硬件,在我撰写本文时(2022 年 9 月),任何 64 位处理器都不适合安装 Windows 11。如果您的主机运行的是第 9 代英特尔或更新版本,解决方案是选择直通 CPU。
第 2 点更具挑战性。解决该问题的步骤如下:
- 从 BIOS 更改为 UEFI
- 为 KVM 设置安全启动。
- 如果发生 Apparmor 问题,需要解决
1)将 BIOS 更改为 UEFI
使用客户 KVM Windows 10 版本 21H1 或更新版本以管理员身份打开 cmd(命令行)并从 Windows/system32 输入mbr2gpt /validate /allowFullOS
。 如果输出成功,则输入mbr2gpt /convert /allowFullOS
。 如果您看到末尾以 MBR2GPT 开头的错误消息,请忽略它们(更精确的说明和故障排除,请参阅此页面:https://geekflare.com/change-bios-mode-from-legacy-to-uefi/)
如果一切顺利,请关闭虚拟机并继续
2)设置 KVM 安全启动
在 ubuntu 22.04 中,如果您已经安装了 KVM,则无需这样做,但请检查目录 /usr/share/OVMF/。如果它存在并且有许多扩展名为 .fd 的文件,则所有内容都在那里;否则,请键入sudo apt install ovmf
。
从终端类型virsh edit <Domain Name>
并查找<smm state='on'/>
里面的条目特征标签。如果不存在,请键入。
现在寻找入口标签操作系统并使它像这样:
<os>
<type arch='x86_64' machine='pc-q35-3.1'>hvm</type>
<loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
<nvram template='/usr/share/OVMF/OVMF_CODE.secboot.fd'>/usr/share/OVMF/OVMF_CODE.secboot.fd</nvram>
<boot dev='hd'/>
<bootmenu enable='yes'/> //Can be 'no' if you want
</os>
由于虚拟机之前是BIOS,因此删除<boot order='1'/>
里面的条目磁盘里面设备标签。现在保存(ctrl+o)并退出(ctrl+x)。如果一切顺利,它会返回类似“域域名XML 配置已编辑。”。在 Ubuntu 中进行此配置的部分信息来自https://specs.openstack.org/openstack/nova-specs/specs/train/approved/allow-secure-boot-for-qemu-kvm-guests.html
此时,如果一切顺利,Windows 10 客户机就可以开始升级到 Windows 11。但是,如果 apparmor 有问题,这就是我所做的工作,因为我尝试了其他解决方案,例如重新安装 apparmor,但它不起作用。
3)如果发生 Apparmor 问题,需要解决
虚拟机启动时,Apparmor 出现错误,未找到 libvirt 硬盘 UUID 文件。解决方法是使用 virsh 或 GUI 使用 UEFI 和安全启动创建一个新的虚拟机,添加所有必需的硬件(TPM 2.0 和直通 CPU)以及不可启动的虚拟机上的其他所有硬件,但要使用的硬盘与不可启动的虚拟机使用的硬盘相同。如果您想出解决这个问题的方法,请帮助我。上次我解决 apparmor 问题是重新配置它,我不记得具体步骤了。
使用 Windows 10 启动您的 VM 并按照官方步骤操作。希望这会有用。