One of the key advances in the latest version of Windows 10 (2004) is WSL2 (Windows Subsystem for Linux v2) – and whilst a version bump, it offers so much more. This allows us to run with near-native performance linux binaries (ELF64).
Before we get into the steps outlined to install WSL2, I also recommend installing Windows Terminal, and winget. Although not required, it does make it simpler to use and a better (dev) experience – especially when setting up a new workstation.
For WSL2 to work, you need to make sure you are on Windows 10 2004 Build 19041 or higher. If you don’t have this, run Windows update and see if that updates your OS. If that doesn’t offer a update, you could also try the Windows update assistant.
To get WSL2, whilst not complicated one needs to do the following steps, in this order – running the commands in an elevated prompt.
- Enable the Windows Subsystem for Linux optional feature.
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- Enable the Virtual machine platform optional feature.
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- Reboot
- Run Windows update (and reboot again if there are updates)
- Set WSL2 as your default option.
wsl --set-default-version 2

- Install your Linux distro of choice. You can do this via Store, or via winget, such as Ubuntu using the following command.
winget install -e --id Canonical.Ubuntu
![PS C: Bahree> winget install —e ——id Canonical. Ubuntu
Found Ubuntu [Canonical . Ubuntu]
This application is licensed to you by its owner .
Microsoft is not responsible for, nor does it grant any Licenses to,
Successfully verified installer hash
Starting package install...
100%
Successfully installed .
third—party packages .](https://i0.wp.com/oldblog.desigeek.com/wp-content/uploads/2020/08/image-1.png?resize=660%2C121&ssl=1)
Note, when trying to set WSL2 as the default option above (Step 5) and you get a error 0x1bc, that most likely means you need to run Windows update and reboot.

And here is my running Ubuntu and updating it.

![amitaambahree-laptap:
$ sudo apt updaze sudo apt upgrade
lamlcgamoanree-±apcop:•-•
[sudo] password for amit:
1 http://security.ubuntu . com/ubuntu focal-security InRe1ease [187 ka]
et:2 http://archive.ubuntu . com/ubuntu focal InRe1ease [265 ka]
http://security.ubuntu . com/ubuntu focal -security/main amd64 Packages [147 ka]
http://archive.ubuntu . com/ubuntu focal -updates InRe1ease [111 ka]
http://archive.ubuntu . com/ubuntu focal -backports InRe1ease [98.3 ka]
http://security.ubuntu . com/ubuntu focal-security/main Translation-en [51.8 ka]
http://security.ubuntu . com/ubuntu focal-security/main amd64 c-n-f Metadata [3432 B]
http://security.ubuntu . com/ubuntu focal -security/restricted amd64 Packages [28.9 ka]
http://security.ubuntu . com/ubuntu focal-security/restricted Translation-en [7664 B]
http://security.ubuntu . com/ubuntu focal-security/restricted amd64 c-n-f Metadata [324 B]
http://security.ubuntu . com/ubuntu focal-security/universe amd64 Packages [42.8 ka]
http://security.ubuntu . com/ubuntu focal-security/universe Translation-en [22.6 ka]
http://security.ubuntu.com/ubuntu focal-security/universe amd64 c-n-f Metadata [1768 B]
http://security.ubuntu . com/ubuntu focal-security/multiverse amd64 Packages [1172 B]
http://archive.ubuntu . com/ubuntu focal/main amd64 Packages [978 ka]
http://security.ubuntu . com/ubuntu focal-security/multiverse Translation-en [548 B]
http://security.ubuntu.com/ubuntu focal-security/multiverse amd64 c-n-f Metadata [116 B]
Get :
Get : 3
Get .
Get .
et.
Set : 8
Get .
• 18
• 11
Get .
• 12
• 13
iGet : 14
Get .
et.
• 16
Get .
• 17
et.
• 18
et.
• 19
Get .
28
Get .
• 21
et.
• 22
et.
• 23
Get .
• 24
Get .
• 25
Get .
• 26
et.
• 27
et.
• 28 'Ittp•
http:/'archive.ubuntu . com/ubuntu
http:/'archive.ubuntu . com/ubuntu
http:/'archive.ubuntu . com/ubuntu
http:/'archive.ubuntu . com/ubuntu
http:/'archive.ubuntu . com/ubuntu
http:/'archive.ubuntu . com/ubuntu
http:/'archive.ubuntu . com/ubuntu
http:/'archive.ubuntu . com/ubuntu
http:/'archive.ubuntu . com/ubuntu
http:/'archive.ubuntu . com/ubuntu
. / 'archive. ubuntu . com/ubuntu
focal/main Translation -en [SB6 ka]
focal/main amd64 c-n-f Metadata [29. S ka]
focal/universe amd64 Packages [8628 ka]
focal/universe Translation-en [5124 ka]
focal/universe amd64 c-n-f Metadata [265 ka]
focal/multiverse amd64 Packages [144 ka]
focal/multiverse Translation-en [184 ka]
focal/multiverse amd64 c-n-f Metadata [9136 B]
focal -updates/main amd64 Packages [312 ka]
focal -updates/main Translation-en [116 ka]
focal-u dates/main amd64 c -n-f Metadata 7756 B](https://i0.wp.com/oldblog.desigeek.com/wp-content/uploads/2020/08/image-5.png?resize=660%2C344&ssl=1)
So, what’s the big deal? This is where it gets quite interesting and one simple example is the windows interoperability with Linux – allowing one to run linux commands from within a command prompt.

For the error code 0x1bc, I believe that the true issue is that the kernel needs to be updated. Windows Update didn’t seem to provide the package to me, but you can manually download it from here: https://docs.microsoft.com/en-us/windows/wsl/wsl2-kernel
Awesome- thanks for sharing Jack.
Same here, you have to run wsl2-kernel update to get rid of the Error code 0x1bc !!