我很难在 KVM 主机上运行的 Win10 Pro 客户机中实现嵌套虚拟化。启用 Windows Hypervisorhypervisorlaunchtype auto
会导致引导循环/引导到自动修复。
主持人:
CentOS Linux release 8.2.2004 (Core)
Intel(R) Xeon(R) E-2176G CPU @ 3.70GHz
# cat /sys/module/kvm_intel/parameters/nested
1
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d
来宾:
Microsoft Windows [Version 10.0.19041.508]
我尝试了多种配置,将我的 Windows 从 BIOS 迁移到 UEFI,尝试了干净的 Windows 安装,禁用/重新启动/启用/重新启动了 Hypervisor 功能等等。还没有任何工作。
我目前的配置:
<os>
<type arch='x86_64' machine='pc-q35-rhel7.6.0'>hvm</type>
<loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader>
<nvram>/var/lib/libvirt/qemu/nvram/win10_VARS.fd</nvram>
</os>
<features>
<acpi/>
<apic eoi='on'/>
<hyperv>
<relaxed state='on'/>
<vapic state='on'/>
<spinlocks state='on' retries='8191'/>
</hyperv>
<kvm>
<hidden state='on'/>
</kvm>
<vmport state='off'/>
<smm state='on'/>
</features>
<cpu mode='host-passthrough' check='partial'>
<topology sockets='1' cores='4' threads='2'/>
<feature policy='require' name='ds'/>
<feature policy='require' name='acpi'/>
<feature policy='require' name='ss'/>
<feature policy='require' name='ht'/>
<feature policy='require' name='tm'/>
<feature policy='require' name='pbe'/>
<feature policy='require' name='dtes64'/>
<feature policy='require' name='monitor'/>
<feature policy='require' name='ds_cpl'/>
<feature policy='require' name='vmx'/>
<feature policy='require' name='smx'/>
<feature policy='require' name='est'/>
<feature policy='require' name='tm2'/>
<feature policy='require' name='xtpr'/>
<feature policy='require' name='pdcm'/>
<feature policy='require' name='osxsave'/>
<feature policy='require' name='tsc_adjust'/>
<feature policy='require' name='clflushopt'/>
<feature policy='require' name='intel-pt'/>
<feature policy='require' name='md-clear'/>
<feature policy='require' name='stibp'/>
<feature policy='require' name='ssbd'/>
<feature policy='require' name='xsaves'/>
<feature policy='require' name='pdpe1gb'/>
<feature policy='require' name='invtsc'/>
<feature policy='disable' name='hypervisor'/>
</cpu>
注意最后一点feature
hypervisor
:如果disable
Windows 启动并报告 Hyper-V 工作(systeminfo
报告 Hyper-V 要求可用,TaskManager 显示启用虚拟化等),但 Hyper-V 无法启动任何 VM,系统日志报告管理程序未运行. 将该功能设置为require
将我带入引导循环/引导到自动修复。
而且由于在这种情况下搜索此选项有点困难:
- 该
hypervisor
功能的具体作用是什么?它记录在哪里?
在我看来,Windows 虚拟机管理程序在启用该功能和禁用该功能的情况下在启动时崩溃,只是无法启动并继续启动过程。
我现在不知道我还能尝试什么,并且相信我已经检查了几乎所有关于该主题的搜索结果。但也许我错过了什么,所以请
- 任何人都可以报告这样的成功设置吗?如果是这样,共享来宾配置会很棒!
- 我应该尝试其他任何想法来完成这项工作吗?
谢谢!
PS:虚拟化本身运行得很好而且速度很快,所以我很确定硬件方面的一切都很好,但也许我也应该检查一些事情?!