wsl2-内核编译和替换
在wsl 中输入uname -r发现内核版本竟然是5.15.146.1-microsoft-standard-WSL2还停留在5.15.y这能忍?我决定自行编译6.6的内核并替换原版。虽然现在最新版是6.9-rc3但6.6版本是高贵的LTS版本!
下载Linux源代码
打开kernel.org
就可以看到linux打包后的源代码文件了,选择一个下载。
下载微软的内核config文件
由于wsl的内核都是经过定制的,我们编译好的内核想要在wsl中使用,需要在编译的时候使用微软wsl-kernel
项目提供的config文件。6.1.y的config文件可以在这里找到wsl-kernel
编译
我们将使用wsl子系统进行编译,我这里使用的是全新安装的ubuntu2204版本先安装编译工具
1 | sudo apt install build-essential flex bison dwarves libssl-dev libelf-dev bc |
然后我们先将下载好的源代码拷贝进来,或者也可以直接在子系统内下载
6.6版本
1 | cd ~ |
6.1.y版本
1 | cd ~ |
编译的开始可能会有一些内核编译选项让我们选择,我们一路回车用默认设置即可。
替换默认内核
通常情况下编译完成的内核会在arch/x86/boot下有个名为bzImage的文件。这就是我们的成果。我们将其复制出来,例如
1 | mv ./bzImage /mnt/c/ |
这就将它复制到了c盘下,然后我们打开.wslconfig文件,对其作如下修改,注意路劲中的\要用\\替换。
1 | [wsl2] |
然后用wsl --shutdown将子系统关闭后再启动就能用上自己编译的新内核了!
经过修改的内核
网络上有很多大神对linux做了很多优化,我们可以选择这些内核将wsl的内核替换。例如Xanmod
我们可以在github上找到为wsl2适配好的版本。例如我们选择新鲜出炉的最新版本
,下载编译好的bzImage文件,放到我们想要的位置,再修改.wslconfig,重启wsl就能看到使用的内核已经变了。

结语
经过实践,可以发现wsl2替换内核还是很方便的。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Blog!
评论






