彻底解决 VMware “Virtualized Intel VT-x/EPT is not supported“:Windows 11 VBS/UEFI 硬件锁终极攻防指南
2026/9/10 22:56:45 网站建设 项目流程

VMware 嵌套虚拟化终极指南:彻底关闭 VBS,释放 VT-x 硬件权限

📌 问题背景

在 VMware Workstation 中搭建 Windows/Linux 虚拟机时,如果你需要在虚拟机内部进一步运行WSL2Docker Desktop,就必须开启虚拟机的“嵌套虚拟化”(即在虚拟机设置中勾选虚拟化 Intel VT-x/EPT 或 AMD-V/RVI)。

然而,许多人在开启该选项启动虚拟机时,会频繁遭遇以下报错:

“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态。”

“模块‘HV’启动失败。未能启动虚拟机。”

即使在 Windows 中关闭了 Hyper-V、WSL 和虚拟机平台,甚至运行了bcdedit /set hypervisorlaunchtype off,重启后依然报错。检查msinfo32(系统信息)会发现:“基于虚拟化的安全性 (VBS)”依然显示为“正在运行”。


🔍 原理深入解析:为什么常规方法全部失效?

1. 什么是 VBS(基于虚拟化的安全性)?

VBS 是 Windows 10/11 引入的一项安全平台,它利用 CPU 的硬件虚拟化技术(Intel VT-x / AMD-V)在操作系统底层创建一个隔离的安全区域(称为虚拟信任级别 1,VTL 1)。这个区域运行着一个安全内核,专门负责运行一些高安全性的功能,例如:

  • 内存完整性(HVCI):也就是我们常说的“内核隔离”,它会严格检查内核驱动和控制流,防止恶意代码篡改。

  • Credential Guard(凭据保护):将登录凭证等敏感数据锁在 VTL 1 中,防止 Mimikatz 等工具窃取。

2. VBS 与嵌套虚拟化的互斥关系

  • VBS 启用时,Windows 底层的 Hyper-V 虚拟机监控器(Hypervisor)会抢先占用 CPU 的 VT-x / AMD-V 硬件虚拟化资源,并禁止其他软件直接访问这些指令。

  • VMware Workstation 在开启“嵌套虚拟化”时,也需要直接操控VT-x 指令,以便在虚拟机内部再创建虚拟机(例如运行 WSL2)。

  • 由于 VT-x 已经被 VBS 的 Hypervisor 独占,VMware 无法获取控制权,于是报错。

关键点:即使你在“启用或关闭 Windows 功能”中去掉了 Hyper-V 和虚拟机平台,VBS 依然可能通过UEFI 固件锁保持激活状态,这就是为什么常规软件开关无效的根本原因。

3. 内存完整性(HVCI)是 VBS 的一部分,但关闭它不等于关闭 VBS

  • 内存完整性(内核隔离)是 VBS 平台上的一个重要功能,但它只是 VBS 的一部分。

  • 如果你只关闭内存完整性(通过 Windows 安全中心),VBS仍然可能保持运行,因为 Credential Guard 或其他安全组件可能还在使用 VTL 1 环境。

  • 因此,若要彻底释放 VT-x 给 VMware,必须完全禁用 VBS,而不仅仅是关闭内存完整性。


🛠️ 方案一:通过 Windows 安全中心关闭内存完整性(软方法,可能不够彻底)

如果你只是想尝试一下,或者你的电脑并不依赖 Credential Guard,可以先试试这个简单方法:

  1. 打开Windows 安全中心

  2. 点击设备安全性

  3. 在“内核隔离”下,点击内核隔离详细信息

  4. 内存完整性开关关闭

  5. 重启电脑

重启后,再次运行msinfo32,检查 VBS 状态。如果显示“未启用”,那么恭喜你,VMware 嵌套虚拟化应该就能用了。
但很多情况下,VBS 依然会显示“正在运行”,这是因为 UEFI 固件中仍然锁定了 VBS 启动项,此时就需要下面的终极方案。


🧨 终极方案:通过 EFI 注入擦除 UEFI 锁(一次性解决)

既然系统内的命令管用不了,我们就需要使用微软官方提供的SecConfig.efi底层工具,在操作系统加载前直接对 UEFI NVRAM 进行擦除,从而彻底禁用 VBS。

步骤一:以管理员身份运行 PowerShell

在宿主机(物理电脑)上,按下Win + X,选择“终端(管理员)”“PowerShell (管理员)”

步骤二:执行 EFI 引导注入脚本

完整复制并运行以下 PowerShell 脚本:

powershell

# ========================================================================= # 微软官方 UEFI 安全变量擦除脚本 # 作用:挂载 EFI 分区,注入 SecConfig.efi 一次性引导工具 # ========================================================================= Write-Host "1. 正在挂载系统 EFI 引导分区..." -ForegroundColor Cyan mountvol X: /s $secConfigPath = "$env:SystemRoot\System32\SecConfig.efi" if (Test-Path $secConfigPath) { Write-Host "2. 正在复制 SecConfig.efi 工具到 EFI 分区..." -ForegroundColor Cyan Copy-Item $secConfigPath "X:\EFI\Microsoft\Boot\SecConfig.efi" -Force # 清理可能存在的残留引导条目 bcdedit /delete "{0cb3b571-2f2e-4343-a879-d86a476d7215}" /f 2>$null Write-Host "3. 正在创建并配置一次性启动项..." -ForegroundColor Cyan bcdedit /create "{0cb3b571-2f2e-4343-a879-d86a476d7215}" /d "VBS_Unlock_Tool" /application osloader bcdedit /set "{0cb3b571-2f2e-4343-a879-d86a476d7215}" path "\EFI\Microsoft\Boot\SecConfig.efi" bcdedit /set "{0cb3b571-2f2e-4343-a879-d86a476d7215}" loadoptions "DISABLE-LSA-ISO,DISABLE-VBS" bcdedit /set "{0cb3b571-2f2e-4343-a879-d86a476d7215}" device partition=X: # 设置为下一次开机的优先启动项 bcdedit /set "{bootmgr}" bootsequence "{0cb3b571-2f2e-4343-a879-d86a476d7215}" Write-Host "==========================================" -ForegroundColor Green Write-Host "一次性引导项配置成功!" -ForegroundColor Green } else { Write-Host "未在系统中找到 SecConfig.efi 文件!" -ForegroundColor Red } Write-Host "4. 正在卸载临时引导分区..." -ForegroundColor Cyan mountvol X: /d

步骤三:重启电脑并在黑屏提示处按键(关键!)

  1. 执行完脚本后,立即重启电脑。

  2. 在开机过程中,你会看到一个蓝色或黑色的提示屏幕,上面显示类似“按任意键继续……”或“Press any key to continue...”的字样。

  3. 必须马上按任意键(比如空格键),否则系统会跳过该工具,正常启动进入 Windows。

  4. 按下按键后,工具会自动运行,清除 UEFI 中的 VBS 锁定变量,然后自动重启进入 Windows。

步骤四:验证 VBS 已彻底禁用

进入 Windows 后,再次运行msinfo32,查看“基于虚拟化的安全性”一栏,应显示为“未启用”

✅ 此时,VT-x 已经释放给 VMware,嵌套虚拟化可以正常工作了。


🚀 启用嵌套虚拟化(VMware 设置 + 虚拟机内部配置)

当 VBS 彻底禁用后,就可以放心地开启 VMware 的嵌套虚拟化功能了。

1. 在 VMware Workstation 中勾选嵌套虚拟化

  • 关闭目标虚拟机(必须处于关机状态)。

  • 选中虚拟机,右键 →设置

  • 切换到处理器选项卡。

  • 勾选“虚拟化 Intel VT-x/EPT 或 AMD-V/RVI”(有的版本叫“向客户机操作系统公开硬件辅助虚拟化”)。

  • 点击确定

2. 启动虚拟机并安装支持嵌套虚拟化的系统

  • 启动该虚拟机(例如 Windows 10/11 或 Linux)。

  • 在虚拟机内部,确认虚拟化已生效:

    • Windows 客户机:在任务管理器 → 性能 → CPU 中查看“虚拟化: 已启用”。

    • Linux 客户机:执行lscpu | grep Virtualization,若输出VT-xAMD-V则表示支持。

3. 在虚拟机内部安装 WSL2 / Docker Desktop

  • 开启虚拟机的 Windows 功能:Hyper-V虚拟机平台Windows 子系统 Linux(如果客户机是 Windows)。

  • 安装 WSL2 或 Docker Desktop,此时它们可以正常运行,因为虚拟化硬件已经成功穿透到虚拟机内。


✅ 验证嵌套虚拟化成功

  • 在虚拟机内部运行wsl --status确认 WSL2 内核正在运行。

  • 或运行 Docker 容器,一切正常。

至此,你已经实现了“在 VMware 虚拟机中再运行虚拟机”的嵌套虚拟化目标。


📚 总结

方法效果适用场景
仅关闭内存完整性(安全中心)可能无效,因为 VBS 可能仍被 UEFI 锁定轻量尝试,对 VBS 依赖不深的老设备
使用 SecConfig.efi 彻底禁用 VBS100% 释放 VT-x,兼容所有版本所有遇到嵌套虚拟化报错的情况

最终建议

  • 如果你的工作主要涉及虚拟化实验、容器开发,强烈建议使用终极方案彻底关闭 VBS。

  • 如果对安全性有极高要求(企业机密环境),则可能需要在“安全”和“功能”之间权衡,或者改用 Hyper-V 原生虚拟化(与 VBS 兼容)。


希望这篇更新后的指南能一次性解决你的烦恼。如果操作中遇到任何问题,欢迎在评论区留言讨论! 😊

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询