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?
-
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: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-linuxB. From the WSL shell prompt, run
uname
oruname -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/ .
- Open PowerShell
- Check the version with
wsl -l -v
- 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.