# Nested virtualization problems: KVM, Hyper-V, WSL 2 and emulators

> Fix VMs and emulators that will not start inside a VDS: missing /dev/kvm, Hyper-V that will not install, WSL error 0x80370102, conflicts and slow guests.

Difficulty: Intermediate

Nested virtualization gives your server the processor features hypervisors need. When something still refuses to start, the message usually names the missing piece. Start with Step 1, which rules out the most common cause in a minute.

## Step 1: Check the server type and the extensions

Nested virtualization is part of **VDS** plans and **nested dedicated servers**. VPS plans do not offer it, so hypervisors, WSL 2, Docker Desktop and Android emulators that need hardware acceleration cannot run on them.

**Linux**

```bash
grep -Ec '(vmx|svm)' /proc/cpuinfo
ls -l /dev/kvm
lsmod | grep kvm
```

A count above `0`, a `/dev/kvm` device and loaded `kvm_intel` or `kvm_amd` modules mean KVM can be used.
**Windows**

```powershell
Get-ComputerInfo -Property HyperV*
systeminfo | findstr /i "Hyper-V"
```

Before Hyper-V is installed, the Hyper-V requirements should report virtualization as enabled in firmware. Once a hypervisor runs, Windows reports that a hypervisor has been detected.

If the extensions are missing on a VDS, restart the server once. If they are still missing, open a ticket with this output.

## Linux: `/dev/kvm` is missing or not accessible

**`kvm-ok` prints `KVM acceleration can NOT be used`.** With a count of `0` above, the extensions are not visible (see Step 1). With a count above `0`, load the module for your processor:

```bash
sudo modprobe kvm_intel
sudo modprobe kvm_amd
```

Only one of the two loads, depending on the processor. Check `ls -l /dev/kvm` afterwards.

**`Could not access KVM kernel module: Permission denied`.** Your user may not use `/dev/kvm`. Add it to the group that owns the device (usually `kvm`) and log in again:

```bash
sudo usermod -aG kvm $USER
```

## Windows: Hyper-V will not install

**Server Manager or `Install-WindowsFeature` reports that the processor does not have the required virtualization capabilities.** Hyper-V cannot see the extensions. Check Step 1 and open a ticket if the server is a VDS.

**Hyper-V is installed, but VMs do not start: "The virtual machine could not be started because the hypervisor is not running".** The hypervisor is not set to start with Windows. Check and fix the boot setting in an elevated prompt, then restart:

```powershell
bcdedit /enum | findstr -i hypervisorlaunchtype
bcdedit /set hypervisorlaunchtype Auto
```

## Windows: WSL 2 error 0x80370102

**`Error: 0x80370102 The virtual machine could not be started because a required feature is not installed.`** Microsoft's fix list for this error applies to servers too:

1. Make sure the server is a VDS and the extensions are visible (Step 1).
2. Make sure the **Virtual Machine Platform** component is installed, then restart.
3. Check `hypervisorlaunchtype` as shown above and set it to `Auto`.
4. Update or turn off third-party hypervisors such as older VMware or VirtualBox versions.

## Hypervisor conflicts on Windows

Hyper-V, WSL 2 and some emulators use the Windows hypervisor. Older versions of other hypervisors cannot run while it is active, and some Android emulators ship separate builds for systems with Hyper-V. Either keep everything on the Windows hypervisor (current VMware and VirtualBox versions support running alongside Hyper-V) or turn Hyper-V-based features off and restart.

## Docker Desktop on Windows Server

Docker Desktop is not supported on server versions of Windows. On a Windows Server VDS, run Docker Engine inside WSL 2 ([WSL 2 on Windows Server](/guides/wsl2-on-windows-server)); on a Windows desktop image, Docker Desktop uses WSL 2 or Hyper-V as usual.

## Android emulators report that virtualization is off

Android emulators need hardware acceleration. On a VPS they cannot get it. On a VDS or nested dedicated server, check Step 1 and the emulator's own requirements; see [Android emulator troubleshooting](/guides/android-emulator-troubleshooting).

## Nested guests are slow

- Give guests **fixed** memory and no more vCPUs than they need; never more than the VDS has.
- Use paravirtual devices: virtio disks and network cards in KVM and Proxmox VE, Generation 2 VMs in Hyper-V.
- Keep disk-heavy work such as databases on the VDS itself, not inside nested guests.
- Production workloads that need the whole machine belong on a [dedicated server](/guides/dedicated-servers).

## Next steps

- Back to the overview: [VDS and nested virtualization](/guides/vds-nested-virtualization).
- Build guests: [KVM with libvirt](/guides/kvm-virtual-machines-libvirt) or [Hyper-V on a Windows VDS](/guides/hyper-v-on-windows-vds).

## Frequently asked questions

### Why does my VPS not run virtual machines?

At HyperDC, only VDS plans and nested dedicated servers pass the processor's virtualization extensions to your system. On a VPS, including Apple Silicon macOS VPS, software that starts its own virtual machines cannot use hardware acceleration.

### My plan is a VDS but the extensions are missing. What now?

Restart the server once, because a plan change takes effect after a restart. If they are still missing, open a ticket with the output of the check commands in this guide.

### Why is my nested VM slow?

Every layer of virtualization adds overhead, most for disk and network I/O. Give guests fixed memory and modest vCPU counts, use paravirtual (virtio) devices and keep heavy databases outside nested guests.

### Can I run VirtualBox or VMware Workstation on a Windows VDS?

Only versions that support running alongside Hyper-V, if Hyper-V or WSL 2 is enabled. Otherwise use one hypervisor at a time.

---

Source: <https://hyperdc.com/guides/products/nested-virtualization-problems>\
Updated: 2026-10-15
