In the early days, Hyper-V and VMWare Workstation/Player did not co-exist. If you force VMWare Workstation/Player to run on Windows with Hyper-V enabled, it will prompt “VMWare Workstation/Player is incompatible with Hyper-V, Remove the Hyper-V role before running VMWare Workstation/Player.” (VMWare Workstation/Player and Hyper-V are not compatible. Remove the Hyper-V role from the system before running VMWare Workstation/Player)

An incompatible message is displayed on VMWare Workstation

(Image source: VMWare official website [1])

1. Cause analysis

Hyper-v is a Type 1 hypervisor[2]. When hyper-V is enabled in Windows, the Windows system inserts a layer of Hyper-V between the underlying hardware layer and the Windows application layer. The original Windows application layer becomes a virtual machine running on Hyper-V.

VMWare Workstation/Player, on the other hand, uses a mechanism called Virtual Machine Monitor (VMM) [3] to directly access the CPU’s built-in virtualization capabilities, so they themselves cannot run in a Virtual Machine environment. In other words, Nested virtualization is not supported.

When Hyper-V is enabled on Windows, the original Windows environment becomes a virtual machine environment, but VMWare Workstation/Player cannot run in a virtual machine environment. An error will be reported when running VMWare Workstation/Player.

2. The traditional solution

The traditional solution is to add an option to the boot menu for selecting multiple systems so that Windows does not load Hyper-V at startup [4].

The main steps are as follows:

The solution:

Open the command prompt as an administrator and run the following two commands:

bcdedit /copy {default} /d "name"
bcdedit /set {ID-Number} HyperVisorLaunchType OFF
Copy the code

Explanation of the command:

The name parameter in the first command can be customized.

If the first command succeeds, there will be a long string of IDS. Copy that. The second command will use the id-number argument, which will be copied to the middle of the “{}” symbol.

For example, I carry out an order:

bcdedit /copy {default} /d "Windows Server 2012 Without Hyper-V"
bcdedit /set {ce54aea7-ad33-11e9-9022-f8edf66e1542} HyperVisorLaunchType OFF
Copy the code

After the execution is successful, you can use msconfig to verify whether the boot item was created successfully and change the boot menu timeout time to a larger number.

Then restart your system and select “Windows Server 2012 Without Hyper-V” on the boot option screen to run VMWare.

This is easier than having two systems, and the two boot into the same system, except that one can only run VMWare and the other can only run Hyper-V.

3. New difficulties

New features in Windows, such as WSL 2, Virtualization Based Security, VBS, (including Windows Sandbox, Credential Guard, Application Guard, etc.) depends on the Hyper-V environment [5], and these features cannot be used if the Windows system does not load Hyper-V.

The ancients have a poem, the world in both, not to be not qing. Is there a way for VMWare Workstation/Player and Hyper-V to truly coexist?

4. VMWare and Microsoft

Since VMWare Workstation/Player 15.5.5, VMWare has reconfigured the VMM mechanism to run at the user level [6] instead of directly accessing the hardware. Instead, it runs through the apis of Microsoft’s Windows Hypervisor Platform (WHP). This completely solves the problem of conflict between VMWare Workstation/Player and Hyper-V.

5. How to make VMWare and Hyper-V co-exist?

  1. Upgrade the Windows version to Windows 10 20H1 or later.

  2. Upgrade VMWare Workstation/Player to 15.5.5 or later. This section uses VMWare Player as an example.Pay attention toDuring the installation, select Automatically Install Windows Hypervisor Platform (WHP) in the step shown in the figure.

  3. Run VMWare Workstation/Player and create or import a VM.

  4. Open the vm Settings option, go to “Processor”,Remove the hooks in front of the three options as shownAnd click OK.Otherwise, when running the vm, VMWare Workstation/Player will prompt “Error on startup: VMWarePlayer does not support nested virtualization on this host. Failed to start the MonitorMode module. Failed to start the VM. VMware Workstation does not support desktop virtualization on this host. Module ‘MonitorMode’ power on failed. Failed to Start the virtual machine.)

At this point, the job is done.

Hyper-v (left) and VMWare (right) are running simultaneously

The resources

[1]

VMware Workstation Zealot: https://blogs.vmware.com/workstation/2019/08/workstation-hyper-v-harmony.html


[2]

Hyper-v is not compatible with vmware, is it technology? Business reasons? : https://www.zhihu.com/question/21260608


[3]

VMware Workstation 15.5 Now Supports Host Hyper-V Mode: https://blogs.vmware.com/workstation/2020/05/vmware-workstation-now-supports-hyper-v-mode.html


[4]

Under Windows vmware and the Hyper – v method: https://www.cnblogs.com/zqifa/p/11327539.html


[5]

VMware Workstation and Hyper-V: https://techcommunity.microsoft.com/t5/virtualization/vmware-workstation-and-hyper-v/ba-p/1419928


[6]

VMware Workstation 15.5 Now Supports Host Hyper-V Mode: https://blogs.vmware.com/workstation/2020/05/vmware-workstation-now-supports-hyper-v-mode.html

This article was typeset using MDNICE