57

Today, I decided to upgrade from WSL 1 to WSL 2. On WSL 1, I had no issues getting both Kali Linux or Ubuntu to function on WSL 1. When upgrading to WSL 2, both Kali and Ubuntu failed to upgrade to version 2. I read that uninstalling and reinstalling them could fix this issue. However, upon reinstalling both of them, my system now fails to detect any installed distro, despite the distro's being installed. Launching both Kali or Ubuntu gives the same error.

Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80370102
Error: 0x80370102 The virtual machine could not be started because a required feature is not installed.

When researching this error, and from reading the official WSL 2 install guide from Microsoft, the error always seems to be because the system doesn't have virtualization enabled in the BIOS. This is really confusing as I have checked over 4 different times if I missed any virtualization setting in my BIOS, and have verified it is all enabled. I also have confirmed I have the NX feature enabled as well. Even HWiNFO detects I have virtualization enabled:

Screenshot of HWiNFO's results

I have also made sure that the Virtual Machine Platform, Windows Subsystem for Linux and the Windows Hypervisor Platform features are all enabled. Not only this, but I can also create and run any number of VMs from VirtualBox without any errors or issues whatsoever.

Other troubleshooting steps I have gone through was resetting the WSL service, reset my machine (multiple times), update the WSL kernel, verify my Win version is in 19041 or above, and waited 20 minutes after boot to see if I was just being impatient.

System information:

  • Running Windows 10 version 10.0.19041.388 (also known as SDK version 2004)
  • Ryzen 3900x CPU
  • 32GB DDR4 RAM
  • Asus Tuf Gaming X570-Plus motherboard w/ BIOS version 1407
karel
  • 122,292
  • 133
  • 301
  • 332
Blu
  • 671

8 Answers8

58

FIRST you need to make sure you have enabled CPU virtualization in your BIOS. These instructions will depend on your hardware.

For AMD CPUs, you will look for a feature called: "AMD (AMD Secure Virtual Machine, AMD SVM)"

For Intel CPUs, you will look for a feature called: "Intel (Intel Virtualization Technology, Intel VT-x)"

Here are the instructions for setting SVM on my computer. Note: this is for a MSI motherboard.

  1. Go to advanced settings.

  2. Go into the overclocking section.

  3. Go into the CPU Features section

  4. Toggle the CPU feature "SVM Mode" which enables CPU virtualization.

SECOND you are going to have to enable the Hyper-V Windows feature.

Here are my instructions (Note feel free to duckduckgo/google this separately):

  1. Search for "Windows Features" in your taskbar.

  2. Then look for "Hyper-V". Then enable it.

At this point you should be done and no longer get this error.

Kevin Bowen
  • 20,055
  • 57
  • 82
  • 84
26

I fixed this problem by running the code below on the host and rebooting the system.

bcdedit /set hypervisorlaunchtype auto

You may also need to enable Nested Virtualization for the VM. Run this PowerShell script also from the host.

$VM = "Windows 11 dev environment"

Shut down VM

Get-VM $VM | Stop-VM

Set VM Memory to Static, Hyper-V inside the VM will not be able to adjust memory dynamically

Set-VMMemory -VMName $VM -DynamicMemoryEnabled $false

Set VM Processor

Set-VMProcessor -VMName $VM -ExposeVirtualizationExtensions $true

Enable MAC address spoofing. This allows the use of NAT switches

and in the case of containerization, transparent networking

Get-VMNetworkAdapter -VMName $VM | Set-VMNetworkAdapter -MacAddressSpoofing on

#Start VM Get-VM $VM | Start-VM

source: https://youtu.be/SQAY4kDShhg

orad
  • 105
11

It worked for me after I:

  • Disabled the "Virtual Machine Platform" feature
  • Restarted Windows
  • Re-enabled the "Virtual Machine Platform" feature
  • Restarted Windows once more

This is from the May 2020 release notes:

We are aware of an issue where using the DISM (Deployment Image Servicing and Management) tool to repair corruption on systems running the May 2020 Update does not always report the correct status. This will be fixed in an upcoming servicing release.

It seems that Dism has trouble determining whether a feature is really enabled, so you may need to try several times until it works.

I found the solution on GitHub, and some of the information in this answer was taken from there. It was challenging for me to find a solution, so I'm adding this information here for others who may be struggling with the same issue.

NotTheDr01ds
  • 22,082
alexpkhm
  • 111
7

I had the same error and with the virtualization enabled too. After uncheck Windows Subsystem for Linux, Windows Hypervisor Platform and Virtual Machine Platform, restarting the pc and enable them again the error disapeared and I could install WSL 2.

3

I had been trying for months to get WSL 2 working. Upgrading my existing "Ubuntu" installation from WSL 1 never worked.

  1. Finally, I uninstalled my existing "Ubuntu" (as in not "Ubuntu 20.04") installation, which I'd installed from the Microsoft store.
  2. I installed the Ubuntu 20.04 app from the Microsoft store.
  3. I confirmed that all 4 of the Hyper-V requirements said Yes.
  4. I confirmed that my (ASRock) BIOS had "Intel Virtualization Technology" = Enabled and "No-Execute Memory Protection" = Enabled.
  5. In Windows > Control Panel > Programs > "Turn Windows features on or off", I confirmed that I'd already checked (enabled) "Hyper-V" and "Windows Hypervisor Platform" and "Windows Subsystem for Linux".
  6. The key for me was to uncheck "Virtual Machine Platform", which I tried because of this answer. Because of that answer, I was planning to re-enable it after restarting (which I'd already tried unsuccessfully months ago), but luckily I felt inspired to try opening the Ubuntu 20.04 app, and it worked! ("Virtual Machine Platform" remains disabled.)
  7. UPDATE: Oops, I prematurely declared success. The next problem I had was that I couldn't connect to the internet from within WSL 2 Ubuntu 20.04. So then I did need to re-enable "Virtual Machine Platform". And then more steps were necessary: sudo rm /etc/resolv.conf && sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf' && sudo chattr +i /etc/resolv.conf (from https://github.com/microsoft/WSL/issues/4844#issuecomment-765248581) was hugely helpful (because https://github.com/microsoft/WSL/issues/5336#issuecomment-653881695 didn't quite work, and that file and kept getting overwritten).

Bryan's answer was similar but required uninstalling / unchecking even more.

Ryan
  • 623
1

you have to enable virtualisation in BIOS. There is no other way. I spent 2 hours with MS adviser on it. We done everything and ended with no success. I saw somewhere later that BIOS setting advice. It works! Virtualisation is disabled there. Once enabled Ubuntu works.

Marie
  • 11
1

Today, while I reinstated Windows 11, I ran into that issue, which was ode because it was working right before.

With only Windows Subsystem for Linux features activated, no need Hyper-V...

I resolved it by doing an update: wsl --update

JOduMonT
  • 397
0

Oh! I found it. In "add / remove functionnalities", you have Hyper-V and something else about virtualization. That one was missing. I only have the french translation of this func. so giving it to you won't probably help. Look for the entire list and double-check. Actually hyper-v is not required. Debian up and running.

mchko
  • 1