喜大普奔!Hyper-V 和 VMWare 终于可以无缝共存、同时运行了!
早期,Hyper-V 和 VMWare Workstation/Player 不能共存。如果在启用了 Hyper-V 的 Windows 中强行运行 VMWare Workstation/Player,它会提示“VMWare Workstation/Player and Hyper-V 不兼容,请在运行 VMWare Workstation/Player 之前移除 Hyper-V 角色。”(VMWare Workstation/Player and Hyper-V are not compatible. Remove the Hyper-V role from the system before running VMWare Workstation/Player)
Hyper-V 是一个type 1 hypervisor [2] ,当在 Windows 中启用 Hyper-V 时,Windows 系统在硬件底层与 Windows 应用层之间插入了一层 Hyper-V,而原来的 Windows 应用层则变成了一个运行在 Hyper-V 上的虚拟机。
而 VMWare Workstation/Player 使用一种被称为 虚拟机监视器(Virtual Machine Monitor,VMM) [3] 的机制,直接访问 CPU 内建的虚拟化功能,因此,它们本身不能在虚拟机环境中运行,换句话说,不支持嵌套虚拟化(nested virtualization)。
当 Windows 启用 Hyper-V 时,原来的 Windows 变成了虚拟机环境,偏偏 VMWare Workstation/Player 不能在虚拟机环境中运行,因此,运行VMWare Workstation/Player 时会报错。
传统的解决方法是在选择多系统的启动菜单中新增一个选项,让 Windows 在启动时 不加载 Hyper-V [4] 。
主要步骤如下:
Windows 引入的一些新功能,例如 WSL 2、 基于虚拟化的安全功能(Virtualization Based Security, VBS,包括Windows Sandbox、Credential Guard、 Application Guard 等) 依赖 Hyper-V 环境 [5] ,如果 Windows 系统不加载 Hyper-V, 这些功能也无法使用。
古人有诗云,世间安得双全法,不负如来不负卿。有没有什么双全法可以兼得鱼与熊掌,让 VMWare Workstation/Player 与 Hyper-V 真正共存呢?
从 VMWare Workstation/Player 15.5.5 版本开始,VMWare 公司重构了 VMM机制, 将 VMM 机制调整为在用户级别运行 [6] ,不再直接访问硬件,而是通过利用微软的 Windows Hypervisor Platform (WHP) 的 API 来运行。从而彻底解决了 VMWare Workstation/Player 与 Hyper-V 的冲突问题。
至此,大功告成。
Hyper-V(左)和VMWare Player(右)同时运行
2023-08-01 广告