官方发布的WSL2内核版本有可能会缺失某些工具或模块,如果我们想使用这些工具或功能,可以下载对应的源码,编译,然后自行升级WSL2的Linux内核。
微软在github上发布了WSL2内核的源码仓库,链接如下WSL2-Linux-Kernel.
一般我们选用Linux的发行版本(如Ubuntu)或者WSL2本身作为编译环境,对于硬件的要求,至少需要8G内存和x86_64系列的CPU,官方操作步骤如下:
1. 安装编译所需组件
$ sudo apt install build-essential flex bison dwarves libssl-dev libelf-dev cpio
2.从源码仓库下载微软发布的内核版本,然后解压。这里可以下载到还未集成到WSL2发行版本里的最新的内核源码。
3. 修改WSL2内核配置,添加或修改内核组件
$ make menuconfig KCONFIG_CONFIG=Microsoft/config-wsl
在这一步可以选择众多的内核选项可以配置,界面分多级菜单,可以通过“/”来进行关键字搜索。
4. 配置好自己需要的定制内核后,编译,-j参数用于多线程编译,自动获取cpu内核参数来配置
$ make KCONFIG_CONFIG=Microsoft/config-wsl bzImage -j $(grep "cpu cores" /proc/cpuinfo | wc -l)
编译完成后内核文件bzImage,在%编译目录%/arch/x86/boot/内可以找到。
5. 将编译好的内核文件复制到对应目录并修改Windows用户目录下的.wslconfig文件,如果没有就创建一个。
关于.wslconfig的详细配置,可参考Advanced settings configuration in WSL
这里只给出必要的修改:
# Settings apply across all Linux distros running on WSL 2
[wsl2]
# Specify a custom Linux kernel to use
kernel=C:\\Your\\WSL2\\Kernel\\Path\\bzImage
6. 关闭WSL2并重新打开,使用uname -a检查内核版本和编译时间,看看是否生效。