
VMware 嵌套虚拟化终极指南彻底关闭 VBS释放 VT-x 硬件权限 问题背景在 VMware Workstation 中搭建 Windows/Linux 虚拟机时如果你需要在虚拟机内部进一步运行WSL2或Docker 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在操作系统底层创建一个隔离的安全区域称为虚拟信任级别 1VTL 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可以先试试这个简单方法打开Windows 安全中心。点击设备安全性。在“内核隔离”下点击内核隔离详细信息。将内存完整性开关关闭。重启电脑。重启后再次运行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 partitionX: # 设置为下一次开机的优先启动项 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步骤三重启电脑并在黑屏提示处按键关键执行完脚本后立即重启电脑。在开机过程中你会看到一个蓝色或黑色的提示屏幕上面显示类似“按任意键继续……”或“Press any key to continue...”的字样。必须马上按任意键比如空格键否则系统会跳过该工具正常启动进入 Windows。按下按键后工具会自动运行清除 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-x或AMD-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 兼容。希望这篇更新后的指南能一次性解决你的烦恼。如果操作中遇到任何问题欢迎在评论区留言讨论