A few days ago I was doing some testing with Hyper-V. As I can easily create a Windows Server using vSphere (6.5 in my case), I decided create my Hyper-V host on a VM.
In order to get this to work I created a VM running Windows Server 2019 and then I needed to do some customization to it.
VM CPU Settings
When creating the VM, change the CPU/MMU Virtualization settings to Hardware CPU and MMU.
After the VM is created, make sure it's Powered Off, and navigate to its folder under the Storage menu on vSphere.
Download the <VM Name>.vmx file to your PC and open it with a Text Editor.
In the end of the file, add those lines:
hypervisor.cpuid.v0 = "FALSE"
vhv.enable = "TRUE"
Save the VMX file and upload it back to the VMs folder. In my case, instead of overwriting the file in the datastore, I renamed it to <VM Name>.vmx.old.
Power on the VM, install Windows and VMware Tools if you haven't done so, and then go to Server Manager.
Click Add roles and features and follow the wizard to install Hyper-V.
Restart the Server as requested, then launch Hyper-V Manager.
As a quick test, create a new VM with the default values (click New > Virtual Machine and then follow the wizard). From my testing, you would get an error message when trying to Power On this VM if something is wrong with the Hyper-V VM.
After creating my test VM, I noticed that I could not ping anywhere in the network apart from itself and the Hyper-V Host. I checked the Virtual Switch Manager on Hyper-V and also the Networking settings on the VM, and all seemed to be configured as expected. The way I got it to work was by going to the ESXi Console and enabling Promiscuous mode and Forged transmits in the vSwitch that was connected to the Hyper-V Server VM.
This configuration was done on my testing environment and I cannot guarantee this is fit for production environments.
The postings on this site are my own and do not represent VMware’s positions, strategies or opinions.