VMware Workstation不支持CPU虚拟化的解决方案
1 问题提出
在部署诸如EVE-NG实验平台某些场景下,我们需要在Vmware Workstation的虚拟机设置中打开虚拟化嵌套功能
为此我们需要启用虚拟机设置中的“虚拟化Inter VT-x/EPT 或者AMD-V/RVI(V)”选项
启用上述功能后,当我们在打开虚拟机操作系统电源后软件会提示错误信息,提示:“此平台不支持虚拟化的 Intel VT-x/EP”
为了解决上述问题,除了硬件方面需要在BIOS启用CPU的虚拟化功能外,很多人会卡在软件层面的设置上
如果去DeepSeek或者百度去查,全网有很多解决方案,实际证明都无法真正的解决问题,网上提出的方法包括
1、搜索并打开“启用或关闭windows功能”,在其中找到并删除“Virtual Machine Platform”组件“
2、禁用Hyper-V相关的服务
3、关闭电脑的内核隔离功能
4、关闭VBS
本文全方位的针对问题进行分析并提出完整性的解决办法
2 问题分析
本文开篇提出的需求很多场景是用于虚拟化嵌套
虚拟化嵌套是指在虚拟机(VM)内部再运行一个Hypervisor,从而在VM中创建新的虚拟机,即“虚拟机中的虚拟机”
虚拟化嵌套往往有几个重要的使用场景
1、在虚拟机中运行Hypervisor(如VMware嵌套ESXi、KVM嵌套QEMU),方便开发虚拟化软件
2、在虚拟机中上搭建完整的诸如EVE-NG虚拟化实验环境
而实现虚拟化嵌套的基础技术就是CPU虚拟化功能
Intel VT-x/EPT 和 AMD-V/RVI是两种主流的 硬件辅助虚拟化技术,它们通过 CPU 和内存管理单元的扩展,显著提升虚拟化性能和安全隔离能力
因此需要在硬件和软件两个层面上启用CPU虚拟化功能,而Win11操作系统的“基于虚拟化的安全性”功能会将嵌套虚拟化禁用以及与WSL2不兼容是造成VMware Workstation不支持CPU虚拟化的两点原因
Win11操作系统默认在硬件满足要求的情况下会自动开启“基于虚拟化的安全性(VBS)”功能,这项功能要求独占硬件虚拟化资源,会将嵌套虚拟化禁用,导致VMware Workstation平台不支持虚拟化的 Intel VT-x/EP
解决问题的关键在于关闭“虚拟化的安全性(VBS)”此项功能
另外值得一提的是,WSL2和VMware Workstation的CPU虚拟化相互也存在不兼容的情况
3 解决步骤
以下将从硬件和软件两个层面去分析和解决问题
3.1 硬件层面
要启用CPU虚拟化功能,需要在BIOS中启用CPU的虚拟化技术,从而在硬件层面启用CPU虚拟化功能
通常会在高级设置或者 CPU 设置等相关功能区中找到,可能会包含诸如”Virtualization Technology”、“Intel VT-x”、”AMD-V(SVM)”等类似的字样。将相关选项设置为【启用】或【Enabled】
一般情况下,CPU的虚拟化技术在BIOS设置中默认开启
启用后,我们在操作系统中通过打开任务管理器去验证是否开启了硬件层面的CPU虚拟化
3.3 软件层面
3.3.1 结论
先说结论,通过反复试验得出以下结论
其中“基于虚拟化的安全性”、“内核隔离中内存完整性”必须关闭
Virtual Machine Platform组件必须删除
而其他系统功能并不一定需要关闭或者启用
序号 | 系统功能 | 操作要求 |
---|---|---|
1 | 基于虚拟化的安全性 | 必须关闭 |
2 | 内核隔离 | 必须关闭 |
3 | Virtual Machine Platform组件 | 必须删除 |
4 | HV 主机服务 、Hyper-V主机计算服务 | 无需关闭 |
3.3.2 关闭内核隔离
在操作系统的“设置”中,选择“隐私和安全性”中的“Windows安全中心”,进一步选择“设备安全性”
点击”内核隔离详细信息“,将”内存完整性“功能关闭
【内核隔离】关闭后,重启计算机
3.3.3 关闭基于虚拟化的安全性
Win11操作系统默认在硬件满足要求的情况下会自动开启“基于虚拟化的安全性”功能
基于虚拟化的安全性(Virtualization-Based Security, VBS)是微软在 Windows 10/11 和 Windows Server 2016+ 中引入的安全架构,它依赖 硬件虚拟化技术(Intel VT-x/EPT 或 AMD-V/RVI) 来创建隔离的执行环境,以增强系统对抗高级威胁的能力
我们可以通过快捷键“win+R”打开“运行”界面,在打开输入框中输入“msinfo32”查看系统信息
可以显示win11操作系统的“基于虚拟化安全性”功能默认是“正在运行”状态
如何去关闭这个功能,网上提出了采用组策略或者命令行的方式,其实都不能实际解决问题,VBS功能任然顽固存在
这里用到的是一个微软官网专门关闭基于虚拟化的安全性的工具去关闭
工具名称为Device Guard and Credential Guard hardware readiness tool
关键步骤如下:
1、以管理员方式运行Windows PowerShell
1 | Set-ExecutionPolicy RemoteSigned -Scope CurrentUser |
如果提示以下错误,是因为未采用管理员的方式运行Windows PowerShell
命令执行后,系统提示
1 | 执行策略更改 |
选择Y
,以启用Windows PowerShel的脚本功能
接下来,我们开始启用脚本
1 | ./DG_Readiness_Tool_v3.6.ps1 -Disable |
如果提示无法加载文件 D:\dgreadiness_v3.6\DG_Readiness_Tool_v3.6.ps1,因为在此系统上禁止运行脚本
错误,
是因为Windows PowerShell默认禁用脚本,需要执行Set-ExecutionPolicy RemoteSigned
命令
关闭VBS后,使用以下命令进行验证
1 | ./DG_Readiness_Tool_v3.6.ps1 -Ready |
系统提示``HVCI和
Credential-Guard`已经被禁用
1 | Credential-Guard is not running. |
VBS 提供底层虚拟化隔离环境,提供了多项功能
1、其中Credential Guard是VBS的上层应用,专门用于保护凭证
2、HVCI功能与Credential Guard平行,HVCI用于保护内核代码完整性
此时重启电脑,重启后的操作也非常关键
第一个系统提示是让用户确认禁用Credential-Guard
选择win键盘或者F3键进行确认后,系统提示成功禁用
第二个系统提示是让用户确认禁用Virtualization Based Security
选择win键盘或者F3键进行确认后,系统提示成功禁用
上述操作完成后自动进入操作系统
注:由于Credential Guard
被关闭,原来操作系统的指纹等相关凭证将无法继续使用,用户将使用PIN码进入操作系统的登录
此时再通过msinfo32
命令去查看系统信息,“基于虚拟化的安全性”已经显示未启用
3.3.4 删除Virtual Machine Platform组件
Virtual Machine Platform (VMP) 是 Windows 11 中的一个核心组件,主要用于支持虚拟化技术
它的主要功能是为系统级的虚拟化提供底层支持
在操作系统控制面板中选择程序
,选择启用或关闭Windows功能
选项中,将Virtual Machine Platform
组件进行删除
重启后完成设置
实际上适用于Linux的Windows子系统
是依赖于Virtual Machine Platform
组件,本身并不和VMware Workstation的CPU虚拟化产生冲突
3.3.5 关于windows平台下虚拟化组件的联系和区别
Hyper-V是完整的虚拟化平台,可以运行多个独立操作系统(如 Windows、Linux VM),但是必须是企业版用户
实际上企业版就提供了类似VMware Workstation的Hyper-V管理器,可以创建多个VM虚拟机
VMP是 Hyper-V 的子集,仅提供必要的虚拟化支持(如 WSL 2、Sandbox),不提供完整的虚拟机管理功能
VMware Workstation不支持CPU虚拟化就是和VMP产生了冲突
WSL 2 是基于 VMP/Hyper-V 的轻量级 Linux 运行环境,不是完整虚拟机