How to Nested Hyper-V Virtualization

My need was to create a Hyper-V VM with Windows 10 where I can install Visual Studio and all my development tools without touch my production machine.

One limitation on that configuration was running “Windows Mobile/Phone” emulator because Hyper-V can’t be nested on an Hyper-V VM.

Fortunately, starting from build 10565 (I’m running on build 10586.71, version 1511) is now possible, so I gave it a try.

First start with “limitation” that we have once nested virtualization is enabled in a virtual machine:

  • Dynamic memory must be OFF. This will prevent the VM from booting.
  • Runtime memory resize will fail.
  • Applying checkpoints to a running VM will fail.
  • Live migration will fail.
  • Save/restore will fail

And now the “requirement”:

  • A processor with Intel VT-x.
  • At least 4 GB RAM available for the virtualized Hyper-V host.
  • Only Hyper-V can nested, other Hypervisors will not work.

How to set it up:

There is a Microsoft powershell script that do the work for you:

Invoke-WebRequest https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/master/hyperv-tools/Nested/Enable-NestedVm.ps1 -OutFile ~/Enable-NestedVm.ps1
~/Enable-NestedVm.ps1 -VmName "VmName"

 

Otherwise you can do it manually:

  • Enable Virtualization Extension for the vCPU (required)
    Set-VMProcessor -VMName "VMName" -ExposeVirtualizationExtensions $true
    
  • Disable Dynamic Memory (required)
    Set-VMMemory -VMName "VMName" -DynamicMemoryEnabled $false
    
  • Enable MAC spoofing (optional)
    Once nested virtualization is enabled in a VM, MAC spoofing must be enabled for networking to work in its guests.

     Set-VMNetworkAdapter -VMName "VName" -MacAddressSpoofing on 
  • Set VM Memory to 4Gb (optional)
    Without 4GB or more, you may not be able to start VMs.

     Set-VMMemory -VMName "VMName" -StartupBytes 4294967296 

 

Enjoy running VM inside a VM :-)

 

Via: https://msdn.microsoft.com/virtualization/hyperv_on_windows/user_guide/nesting

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s