跳转到内容

虚拟化开关:检查 VT-x、IOMMU、SLAT 与嵌套支持

核验于 2 分钟阅读

确认固件与 CPU 到底为 Hyper-V、WSL2、VBS 和嵌套虚拟化提供了什么,以及那些静默失败的检查。

测试环境Pro (26H2) / Server · 版本号 26300.9457 / 26100.33650 · x64
E2
版本号
26300.9457 / 26100.33650
版本
Pro (26H2) / Server
架构
x64
支持
E1 + 一次实验观察
证据
E2实验室复现, 直通虚拟机实测
核验日期
2026-10-29
页面类型
任务

四样不同的东西都被叫“虚拟化”,失败方式各不相同:

特性 谁需要 在哪开
VT-x / AMD-V(CPU) Hyper-V、WSL2、VBS、VMware 固件设置
SLAT(EPT/NPT) Hyper-V 硬件特性,不是开关
IOMMU(VT-d/AMD-Vi) 设备直通、DMA 保护 固件设置
嵌套 虚拟机里跑虚拟机 hypervisor,且需 CPU 暴露

只开 Windows 功能不开固件开关,得到的报错不会告诉你“是固件”。

终端窗口
Get-CimInstance Win32_Processor | Select-Object Name,VirtualizationFirmwareEnabled,VMMonitorModeExtensions
systeminfo | Select-String 'Hyper-V'
Get-ComputerInfo -Property HyperVRequirement* | Format-List

CPU 支持虚拟化但显示 VirtualizationFirmwareEnabled : False,就是固件开关没开——这是“Hyper-V 起不来”最常见的原因。

终端窗口
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All |
Select-Object FeatureName,State
Get-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform |
Select-Object FeatureName,State
Get-WindowsOptionalFeature -Online -FeatureName HypervisorPlatform |
Select-Object FeatureName,State
  • VirtualMachinePlatform 是 WSL2 需要的。
  • HypervisorPlatform 是第三方 hypervisor 用的。
  • Hyper-V 与第三方 hypervisor 争用同一批 CPU 特性;同时跑可能被迫走更慢的 API 路径。

嵌套虚拟化时,来宾只拿到宿主愿意暴露的部分。在 Proxmox 上,CPU 型号很关键:

  • qemu64(通用默认)不暴露 VMX/SVM。
  • --cpu host 把宿主 CPU 特性(含嵌套虚拟化标志)透传。

实验观察(E2,M-V): 在本站 PVE 实验环境(VM 361,Windows 11 26H2)中,使用默认 qemu64 CPU 型号启用 WSL2 报 HCS_E_HYPERV_NOT_INSTALLED;切到 --cpu host 并重启后 WSL2 正常启动。同一份实验记录还显示,以 SYSTEM 身份运行 wsl 会报 WSL_E_LOCAL_SYSTEM_NOT_SUPPORTED——要用交互式用户运行。

这是一台宿主上的一次观察,不是关于所有 hypervisor 的通则;但它展示了你会遇到的失败模式。

设备直通需要固件开启 IOMMU、hypervisor 开启直通、且设备独占一个 IOMMU 组。

  • 消费级主板上这个选项常叫 VT-d、AMD-Vi 或 IOMMU。
  • 开启后设备枚举可能变化;之后要重新核对网卡名。
  • 把显卡直通给 Windows 来宾有单独的注意事项。
现象 真实原因
HCS_E_HYPERV_NOT_INSTALLED 固件虚拟化关闭,或嵌套未暴露
WSL2 能启动但很慢 与别的 hypervisor 争用,或 VBS 开启
Hyper-V 装了但虚拟机起不来 缺 SLAT(很老的 CPU)或固件设置
虚拟机里的虚拟机启动崩溃 CPU 型号不含嵌套标志
设备直通失败 IOMMU 未开,或设备共享 IOMMU 组
终端窗口
Get-CimInstance Win32_Processor | Select-Object VirtualizationFirmwareEnabled
Get-ComputerInfo -Property HyperVRequirementVirtualizationFirmwareEnabled,HyperVRequirementSecondLevelAddressTranslation
wsl --status

不要停在“功能装上了”。启动真实负载(一个 WSL 发行版、一台 Hyper-V 虚拟机)确认能跑——安装成功不等于 hypervisor 可用。

E2 仅限上面的嵌套虚拟化观察(单台 PVE 宿主、VM 361);其余为 E1 的功能与要求语义。没有做裸机固件矩阵测试。

来源