由于编译过程中需要很多库,因此需要提前进行配置。如果编译过程中遇到的报错均在下文的报错信息中记录。准备安装的库的命令为:
sudo apt-get install libncurses5-dev libncursesw5-dev
sudo apt-get install bison flex
sudo apt-get install libelf-dev libssl-dev
在https://www.kernel.org下载想要编译的Linux内核,为适应下述配置文件,笔者下载的是5.7.9版本。
将压缩包移至~
目录后,对文件进行解压,具体为:
xz -d linux-5.7.9.tar.xz
tar -xf linux-5.7.9.tar
由于是Linux内核针对WSL 2的编译替换过程,因此直接对内核进行编译将不能适应WSL 2的体系,导致不能正常启动,该直接编译内核的方法在文末也进行了记录。因此去下载相关配置文件,由于官方文件较老旧,因此去GitHub下载较新版本的,地址链接,该配置文件适应5.7.x内核。
将该文件命名为config-wsl
。在linux-5.7.9
文件夹下创建新的文件夹Microsoft
,并将config-wsl
移入文件夹Microsoft
中。
上述过程如下图:
可以对该config-wsl
文件进行一定的修改,比如更改内核版本名后缀为-microsoft-wsl-lyg-port
,已完成个性化标记信息,如下图。但需要注意的是,该后缀不能过长,否则可能导致内核无法正常启动;同时该后缀中不能含有(
、)
、{
、}
,否则编译将会报错。
在linux-5.7.9
文件夹下使用命令如下进行编译,大约5~10mins完成编译。
sudo make KCONFIG_CONFIG=Microsoft/config-wsl -j4
如下图:
首先查看原有内核信息,为:
接下来进行内核的替换。由“编译结果图”可知编译后的内核文件被存放在了~/linux-5.7.9/arch/x86/boot/bzImage
中,因此将该文件复制到E://
盘,如下:
关闭WSL(需要使用Power Shell用命令wsl --shutdown
,否则不能完成替换)。将该文件重命名为kernel
后复制到WSL所在路径C:\Windows\System32\lxss\tools
中,替换掉原有内核,如下:
最后,重新启动WSL,并查看内核版本信息和创建时间,如下:
WSL成功运行并输出新版本信息,成功替换。
make menuconfig过程中需要libncurses5-dev和libncursesw5-dev库的支持
sudo apt-get install libncurses5-dev libncursesw5-dev
/bin/sh: 1: flex: not found
scripts/Makefile.host:9: recipe for target ‘scripts/kconfig/lexer.lex.c’ failed
sudo apt-get install bison
sudo apt-get install flex
“CANNOT GENERATE ORC METADATA FOR CONFIG_UNWINDER_ORC=Y, PLEASE INSTALL LIBELF-DEV, LIBELF-DEVEL OR ELFUTILS-LIBELF-DEVEL”. STOP.
sudo apt install libelf-dev
sudo apt install libssl-dev
scripts/kconfig/Makefile:71: recipe for target ‘syncconfig’ failed
make[2]: *** [syncconfig] Error 1
Makefile:588: recipe for target ‘syncconfig’ failed
make[1]: *** [syncconfig] Error 2
Makefile:695: recipe for target ‘include/config/auto.conf.cmd’ failed
make: *** [include/config/auto.conf.cmd] Error 2
直接提升权限使用sudo
即可,具体为:
sudo make KCONFIG_CONFIG=Microsoft/config-wsl
下载Linux内核,解压后进入目录中执行命令make menuconfig
,如下:
随后进入图形化界面,配置信息直接按照默认设置即可,故直接退出即可,如下:
接着对内核进行编译,依次使用命令如下:
sudo make -j4
sudo make modules_install
sudo make install
至此,完成内核编译。编译时间大约5mins。
https://blog.csdn.net/qq_40856284/article/details/106535962
https://blog.csdn.net/ibless/article/details/82349507
https://github.com/xieyubo/WSL2-Linux-Kernel/blob/wsl-xyb-port-5.7.y/Microsoft/config-wsl
https://www.kernel.org/