wsl2编译升级linux内核
nxdong October 21, 2022 [wsl2, linux] #wsl2如果想在wsl里使用还未正式发布的内核,可以通过手动编译替换的方式升级内核。
下载WSL2-Linux-Kernel
项目的代码
在网站 kernel-release-notes 中查看wsl内核的发布日志,查找想要升级的版本号。
项目git地址: https://github.com/microsoft/WSL2-Linux-Kernel
可以通过git clone
的方式下载代码。也可以在右侧的Release里下载指定版本的代码。
这里假设已经将代码clone到指定目录,或者下载解压到指定目录。并且已经cd进项目目录。
根据项目的文档安装编译环境,进行编译:
#Install the build dependencies:
#Build the kernel using the WSL2 kernel configuration:
这里可能有交互式的问题,需要按需选择。
编译成功后,会出现Kernel: arch/x86/boot/bzImage is ready (#1)
的日志。
内核已经编译成功,编译完成的内核文件为 bzImage
。
将这个文件复制到主机上。
提前在主机上创建一个E:\wsl2linuxkernel
文件夹,在wsl的linux中执行cp arch/x86/boot/bzImage /mnt/e/wsl2linuxkernel
命令,将编译好的内核复制到主机上。
这里的文件夹名字不一定叫这个,但是要前后一致。
修改wsl的配置
在windows的用户目录(在文件管理器的地址栏输入%UserProfile%
后按回车)下,创建一个.wslconfig
文件。
并将这个文件的内容修改为:
[]
=e:\\wsl2linuxkernel\\bzImage
这里kernel的值即为新的内核的路径。
重启wsl系统
这里可以直接重启计算机。
也可以通过命令重启,使用管理员权限打开命令行,运行:
#停止LxssManager服务
#启动LxssManager服务
验证内核版本
重新启动之后,可以在linux子系统中通过命令查看内核版本:
可以发现,现在的内核版本已经是我们新编译的版本啦。
此时可以通过cat /proc/kallsyms
查看新内核的系统调用啦。