← Back to context

Comment by 0xcde4c3db

8 years ago

I found out the hard way that Hyper-V prevents other virtualization software from running, notably including the x86 Android emulator.

My guess is virtualization software is mutually exclusive. On Linux, I can't run VirtualBox and KVM at the same time: if I want to run one, I have to unload the kernel modules belonging to the other.

  • Actually, it’s virtualization hardware that is exclusive.

    Microsoft pulled an old trick out of their sleeve and implemented a feature, Device Guard, that requires virtualization. And of course it blocks other uses of the virtualization hardware, except, surprise surprise, their own virtualization solution.

    D-, does not play well with others.

    If your company requires Device Guard you can only use software based virtualization or Hyper-V.

Yes. Other virtualization solutions in Windows (virtualbox) run in it userland, hyper-v actually boots up below your windows system and makes your desktop os a virtual machine. Other VM run side by side your desktop os. The limitation being going turtles all the way down isn't supported by CPUs. Making the waters even more complicated is that some software moved from virtual box to hyper-v (docker for windows)

  • This is not true, the NT kernel itself is the hypervisor.

    • both of you are correct:

      on init, the Hyper-V driver hijacks the running Windows instance, schedules it as the 'root partition', and runs it like just another VM.

      unlike 'child partitions', the root partition still has non-virtualized drivers, which run unimpeded by privileged instruction traps.

      when a child partition (guest VM) is started, it's scheduled as a peer to the root. its Virtual Processors (VPs) run alongside the root partition's VPs.

      when the child partition traps into the hypervisor, or uses one of the enlightened drivers, the hypervisor dispatches a bus request to the root partition, which handles the IRQ using a Virtual Service Provider implemented by the host Windows kernel.

      so the hypervisor is kind of a bridge between the host Windows and the child VMs, but the host Windows actually runs as a sort of privileged VM itself, just one with full hardware access and scheduling priority.

      * I work for MS, but not on any of these things.

      1 reply →

    • Hyper-V uses a type 1 hypervisor, which sits below the NT kernel. You might be thinking about the Windows Subsystem for Linux, which does sit on top of the NT kernel.

      Disclosure: work at Microsoft on the Hyper-V team.