当开启 WSL(特别是 WSL 2)后无法使用 VMware(如 Workstation 或 Player),这通常是由于 Hyper-V 虚拟化平台冲突造成的。WSL 2 依赖 Windows 的 Hyper-V 虚拟化技术,而 VMware Workstation/Player 15.5 及更早版本本身使用的虚拟机监控器(VMM)与 Hyper-V 不兼容,无法同时运行。
以下是几种主要的解决方案,请根据你的需求和 VMware 版本选择:
🛠 解决方案 1: 升级 VMware(推荐且最根本的解决方式)
- 原因: VMware Workstation/Player 16.x 及更高版本开始支持在启用了 Hyper-V 或 WSL 2 的 Windows 系统上运行(称为 “Hyper-V 兼容模式” 或 “Windows Hypervisor Platform” (WHP))。
- 操作:
- 检查你当前的 VMware Workstation 或 Player 版本(
帮助
>关于 VMware Workstation/Player
)。 - 如果版本低于 16.0,请访问 VMware 官网下载并安装最新版本(目前最新稳定版是 17.x)。
- 安装完成后,重启电脑。
- 检查你当前的 VMware Workstation 或 Player 版本(
- 优点: 一劳永逸地解决问题,WSL 2 和 VMware 虚拟机可以同时正常运行,性能影响相对较小。
- 缺点: 需要购买或升级许可证(Workstation Pro 是商业软件,Player 免费但功能有限)。
🔧 解决方案 2: 将 WSL 默认版本设置为 WSL 1
- 原因: WSL 1 不依赖 Hyper-V,它使用的是一个翻译层,因此不会与旧版 VMware 冲突。
- 操作:
- 打开 PowerShell 或命令提示符(管理员身份)。
- 设置 WSL 默认版本为 1:
wsl --set-default-version 1
- 重启电脑。
- 验证默认版本:
查看wsl --status
Default Version
是否显示为1
。 - 对于已安装的 Linux 发行版,如果你之前使用的是 WSL 2,需要将其转换回 WSL 1:
转换可能需要几分钟。wsl --list --verbose # 查看发行版名称及其当前版本 wsl --set-version <发行版名称> 1 # 将 <发行版名称> 替换为你的发行版名,如 Ubuntu-20.04
- 优点: 免费,无需升级 VMware。
- 缺点:
- WSL 1 在文件系统性能(尤其是跨 Windows/Linux 文件操作)、完整的系统调用兼容性和 Docker 集成方面远不如 WSL 2。
- 对于需要接近原生 Linux 性能或使用 Docker Desktop for WSL 2 的用户来说,这不是理想选择。
⚙ 解决方案 3: 完全禁用 Hyper-V 和 WSL 虚拟化平台(不推荐用于长期使用 WSL)
- 原因: 彻底关闭 Hyper-V 相关组件,让旧版 VMware 独占硬件虚拟化。
- 操作 (方法 A - 通过 Windows 功能):
- 按
Win + R
,输入optionalfeatures.exe
回车,打开"启用或关闭 Windows 功能"。 - 找到并取消勾选以下选项:
Hyper-V
Windows 虚拟机监控程序平台
(Windows Hypervisor Platform)虚拟机平台
(Virtual Machine Platform - 这是 WSL 2 的核心依赖)Windows Subsystem for Linux
(WSL 本身,可选,禁用这个会完全移除 WSL 能力)
- 点击"确定",系统会进行更改,完成后按要求重启电脑。
- 按
- 操作 (方法 B - 通过命令提示符管理员):
- 以管理员身份打开命令提示符。
- 禁用 Hyper-V 和相关组件:
bcdedit /set hypervisorlaunchtype off
- 重启电脑。
- (可选但推荐) 同时使用方法 A 禁用
虚拟机平台
和Windows 虚拟机监控程序平台
功能。
- 启用恢复: 如果之后需要重新使用 WSL 2 或 Hyper-V,执行:
然后重新启用上述 Windows 功能,并重启。bcdedit /set hypervisorlaunchtype auto
- 优点: 能让旧版 VMware 工作。
- 缺点:
- WSL 2 将完全无法使用。 WSL 1 可能还能用(如果你不禁用它本身)。
- 任何依赖 Hyper-V、Windows Hypervisor Platform 或 Virtual Machine Platform 的功能都将失效(例如某些版本的 Android 模拟器、Windows Sandbox、Credential Guard/Device Guard 的部分安全功能等)。
- 每次切换都需要重启电脑,非常麻烦。
- 不推荐 需要同时使用 WSL 2 和旧版 VMware 的用户。
📌 总结建议
- 首选方案 1 (升级 VMware): 如果你经常需要同时使用 WSL 2 和 VMware,强烈建议升级到 VMware Workstation/Player 16.x 或更高版本。这是最流畅、最无冲突的解决方案。
- 次选方案 2 (改用 WSL 1): 如果你的 VMware 版本无法升级,且你对 WSL 的性能、文件系统操作或 Docker 集成要求不高,可以降级 WSL 到版本 1。
- 最后考虑方案 3 (完全禁用 Hyper-V): 仅在极少需要临时运行旧版 VMware 且可以完全放弃 WSL 2 和其他 Hyper-V 相关功能的场景下使用。切换过程繁琐且限制多。
⚠ 重要提示
- 重启是关键: 无论采用哪种方案,在更改 WSL 版本、安装/升级 VMware 或启用/禁用 Windows 功能后,务必重启电脑 才能使更改生效。
- 检查 BIOS/UEFI 设置: 确保你的 CPU 硬件虚拟化支持(Intel VT-x 或 AMD-V)在 BIOS/UEFI 设置中是启用状态。这是所有虚拟化技术(包括 Hyper-V 和 VMware)正常运行的基础。
- 系统还原点: 在进行重大更改(如禁用 Windows 功能、修改启动配置)之前,建议创建一个系统还原点,以防万一出现问题可以回滚。