Microsoft WSL2 is amazing. But the kernel of the official release version is out of date. Fortunately, you can build a new customized kernel and use it.
Now, issue is comming. Under the new kernel, you will notice VS Code can't
work well. If you type
code under WSL, you will see some garbage outpus. This is because VS code uses a
naive way to detect the WSL kernel version. It requires the kernel version string follow this pattern:
x.xx.xx-microsoft-standard. At mean while, its version comparing algorithm is too naive to get the right
result. For example, if current kernel version is
4.19 and the new kernel version is
5.1. VS code will
think the new kernel is older than the current kernel because
51 is smaller than
Wish VS Code can fix this issue in its newer release. But for now, we need do some hacking work. The easiest way is generating the same kernel version string as official WSL.
/usr/bin folder, rename
uname.real. Then create a new
uname file with the following
#!/bin/bash echo $(/usr/bin/uname.real $@ | sed -E s/[0-9]+.[0-9]+.[0-9]+-microsoft-wsl-xyb-port\\+/4.19.84-microsoft-standard/)
-microsoft-wsl-xyb-port is the version pattern of my customized kernel.
You can replace it with the pattern used by your kernel.
uname -r, make sure you will see the following line:
Now, you can reinstall vscode-server:
- Under WSL, run
rm -rf ~/.vscode-server
- Under Windows, run
wsl --shutdownand goto
Re-launch WSL, go to any folder you want to open in VS Code, type
code .. VS code should work as normal now.