Unable to upgrade to wsl 2 [duplicate]

I have Windows Subsystem for Linux, but I don't know which version I have, and many things won't work in version 1. How do I check my version?


  1. At a Windows 10 command prompt, run ver. Is the next-to-last numeric group version 18917 or higher? If so, it is possible you have WSL 2 but not yet verified. Go on to step A or B.
    If you do not see Windows version 18917 or higher, you have version 1.
    This illustrates the result when the OS is Build 16299:

    Version 16299

    A. Open Windows PowerShell or cmd and enter the command wsl -l -v. If version 2 is installed properly, you will see the version number. If you don't see a version number, or if you see an error message (Thank you, Cornea Valentin) you have version 1 (you may also see a version number '1' which could indicate that you're running v1 - see here). Uninstall it then reinstall it as per https://scotch.io/bar-talk/trying-the-new-wsl-2-its-fast-windows-subsystem-for-linux

    B. From the WSL shell prompt, run uname or uname -r. If the kernel version >= 4.19, it's WSL Version 2.

Why is this relevant?

WSL 1 was based on Microsoft's Linux-compatible kernel interface, a compatibility translation layer with no Linux kernel code.

WSL 2 was redesigned with a Linux kernel running in a lightweight VM environment, and innovators have found many more things they can do with WSL 2.

Windows 10 Version 2004 (build 19041.153 & later) enhances WSL2 further; see https://devblogs.microsoft.com/commandline/wsl2-will-be-generally-available-in-windows-10-version-2004/ and https://winaero.com/blog/wsl2-will-ship-with-windows-10-version-2004-with-kernel-updates-via-windows-update/ .


  1. Open PowerShell
  2. Check the version with wsl -l -v
  3. If at version 1, then update the version with wsl --set-version Ubuntu-20.04 2

Note: Changing the version of a running OS will terminate it. The name of the OS need not be Ubuntu-20.04 for you. Please select the actual name listed in wsl -l -v

If you are not able to update to version 2, then you may not be on the WSL 2 Kernel. This can be downloaded from Microsoft.


In the WSL version I was running, I just typed uname -r to which I got the result

5.4.72-microsoft-standard-WSL2

So, I can say that its WSL2, so you can try running uname -r and check.