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 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 -r. If the kernel version => 4.19, it's WSL Version 2.
Why is this relevant?
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.
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.