Windows 10 的 WSL2 的很多特性,带来了比传统虚拟机与主机更佳的集成;同时 vscode 的支持跟进也很快,对于开发者而言,几乎免去了裸机装 Linux 的步骤。

问题

如果你按照官方文档安装了一个发行版,并下载了页面指示的 Linux kernel 更新,你会发现其实内核并不是微软官方的最新稳定版。

Install Windows Subsystem for Linux (WSL) on Windows 10

$ uname -a
Linux NUC 5.4.72-microsoft-standard-WSL2 #1 SMP Wed Oct 28 23:40:43 UTC 2020 x86_64 GNU/Linux
$ cat /etc/debian_version
10.8

而根据微软官方 GIT 的显示,这个安装至少比当前的版本落后了 3 个版本。个人以为,微软为了权衡稳定性,并不以一个激进的方式推送内核。

microsoft / WSL2-Linux-Kernel

微软说 WSL2 的更新会集成到 Windows Update, 但是其实并检测不到新版本。通过查阅资料和实践,大致有三种方法手动更新 WSL2 内核:

  1. kernel.org 下载最新的内核,配合微软的配置,从头编译安装最新的;
  2. WSL2 git 下载微软改好的内核,但是仍需要编译安装;
  3. 下载微软弄好但是没发给 Windows Update 的内核。

前 2 个选项,如果不是内核狂热分子,是没有意义去做的。我们选 3,因为它最不费力。

步骤

  1. 找到微软发布的内核更新安装文件 msi https://www.catalog.update.microsoft.com/Search.aspx?q=wsl
  2. 下载同 GIT 上最新版本一致的 wsl_update_x64.msi ;
  3. 彻底关闭当前的 WSL,更新内核 —— 以管理员身份运行 wsl –shutdown;运行第 2 步下载的文件,完成内核更新;
  4. 再次开启 WSL,检测内核版本 —— 以管理员身份运行 wsl, uname -a 。
~$ uname -a
Linux NUC 5.4.91-microsoft-standard-WSL2 #1 SMP Mon Jan 25 18:39:31 UTC 2021 x86_64 GNU/Linux

可看到本机的 WSL2 已经更新到(Windows Update 不推送的)最新稳定版。另外,不论你安装的是哪一个发行版,内核其实都是 5.4.x-microsoft-standard-WSL2, 虽然系统调用级别是原汁原味的 Linux Kernel,但跟每个发行版定制的内核还是有分别的。

建议