虚拟化开关:检查 VT-x、IOMMU、SLAT 与嵌套支持
确认固件与 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 功能不开固件开关,得到的报错不会告诉你“是固件”。
检查操作系统看到了什么
Section titled “检查操作系统看到了什么”Get-CimInstance Win32_Processor | Select-Object Name,VirtualizationFirmwareEnabled,VMMonitorModeExtensions
systeminfo | Select-String 'Hyper-V'
Get-ComputerInfo -Property HyperVRequirement* | Format-ListCPU 支持虚拟化但显示 VirtualizationFirmwareEnabled : False,就是固件开关没开——这是“Hyper-V 起不来”最常见的原因。
检查 Windows 功能
Section titled “检查 Windows 功能”Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All | Select-Object FeatureName,StateGet-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform | Select-Object FeatureName,StateGet-WindowsOptionalFeature -Online -FeatureName HypervisorPlatform | Select-Object FeatureName,StateVirtualMachinePlatform是 WSL2 需要的。HypervisorPlatform是第三方 hypervisor 用的。- Hyper-V 与第三方 hypervisor 争用同一批 CPU 特性;同时跑可能被迫走更慢的 API 路径。
来宾看到什么,取决于宿主
Section titled “来宾看到什么,取决于宿主”嵌套虚拟化时,来宾只拿到宿主愿意暴露的部分。在 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 与直通
Section titled “IOMMU 与直通”设备直通需要固件开启 IOMMU、hypervisor 开启直通、且设备独占一个 IOMMU 组。
- 消费级主板上这个选项常叫
VT-d、AMD-Vi或IOMMU。 - 开启后设备枚举可能变化;之后要重新核对网卡名。
- 把显卡直通给 Windows 来宾有单独的注意事项。
看起来像别的问题的失败模式
Section titled “看起来像别的问题的失败模式”| 现象 | 真实原因 |
|---|---|
HCS_E_HYPERV_NOT_INSTALLED |
固件虚拟化关闭,或嵌套未暴露 |
| WSL2 能启动但很慢 | 与别的 hypervisor 争用,或 VBS 开启 |
| Hyper-V 装了但虚拟机起不来 | 缺 SLAT(很老的 CPU)或固件设置 |
| 虚拟机里的虚拟机启动崩溃 | CPU 型号不含嵌套标志 |
| 设备直通失败 | IOMMU 未开,或设备共享 IOMMU 组 |
端到端验证修复
Section titled “端到端验证修复”Get-CimInstance Win32_Processor | Select-Object VirtualizationFirmwareEnabledGet-ComputerInfo -Property HyperVRequirementVirtualizationFirmwareEnabled,HyperVRequirementSecondLevelAddressTranslationwsl --status不要停在“功能装上了”。启动真实负载(一个 WSL 发行版、一台 Hyper-V 虚拟机)确认能跑——安装成功不等于 hypervisor 可用。
E2 仅限上面的嵌套虚拟化观察(单台 PVE 宿主、VM 361);其余为 E1 的功能与要求语义。没有做裸机固件矩阵测试。