WSL如何升级最新版本的Linux内核,只要一步!
介绍一个不用编译源码的方式:用 ubuntu-mainline-kernel 脚本升级内核。

工作原理:
(1)下载ubuntu-mainline-kernel脚本
wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh
(2)安装脚本。
sudo install ubuntu-mainline-kernel.sh /usr/local/bin/
(3)下载安装 6.16.9 内核:
sudo ubuntu-mainline-kernel.sh -i 6.16.9
安装完成后,内核映像文件(vmlinuz)在 /boot 目录。
/boot/vmlinuz-6.16.9-061609-generic
(4)WSL2 只能加载位于 Windows 文件系统的内核映像文件。所以,创建内核存储目录:C:\Users\<你的用户名>\.wsl-kernels\。
然后,在 WSL2 用 cp 命令把 /boo/ 的内核文件复制到刚才创建的 Windows 路径。
sudo cp /boot/vmlinuz-6.16.9-061609-generic /mnt/c/Users/$WINDOWS_USER/.wsl-kernels/bzImage-6.16.9
(5)在Windows的C:\Users\<你的用户名>\创建.wslconfig 的文件。输入如下内容:
[wsl2]
# 指定自定义内核的路径
kernel=C:\\Users\\<你的用户名>\\.wsl-kernels\\bzImage-6.16.9
(6)重启WSL2。然后你会发现出现如下错误:
由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。
错误代码: Wsl/Service/CreateInstance/CreateVm/WSAENOTCONN
Press any key to continue...
这是因为 WSL2 的 内核镜像根本没被 Hyper-V 加载,导致 VM 没起来、套接字没连上。
最根本的原因是直接从 ubuntu-mainline-kernel.sh 下载的 vmlinuz 是不带 WSL2 补丁的、而且是 zImage,WSL2 识别不了。
ubuntu-mainline-kernel.sh升级内核只适合Ubuntu机器,不适合 WSL2。
所以,必须编译一个带微软 WSL2 补丁的 bzImage 才可以。还是老老实实编译源代码吧!!
先回退回到官方内核:删除 C:\\Users\\<你的用户名>\\.wslconfig 或注释掉 kernel= 这一行。
重启 WSL2,然后删除下载的 6.16.9 内核镜像。
sudo ubuntu-mainline-kernel.sh -u
要想安装微软官方 WSL2-Linux-Kernel 仓库没有的内核版本,只能手动下载主线 Linux 内核源码,进行配置和编译,然后配置 WSL2 使用编译的内核镜像。
(1)准备编译环境:
sudo apt update
sudo apt install -y build-essential flex bison libssl-dev libelf-dev bc python3 pahole cpio
(2)获取微软 WSL 内核配置:
# 克隆微软的 WSL2 内核仓库,只要最新的配置
git clone --depth=1 https://github.com/microsoft/WSL2-Linux-Kernel.git microsoft-wsl-kernel
# 复制配置到当前目录,重命名为 .config
cp microsoft-wsl-kernel/Microsoft/config-wsl .config
(3)克隆主线 Linux 6.16.9 源码:
# 克隆主线 Linux 内核仓库
git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.16.9
cd linux-6.16.9
# 切换到 6.16.9 标签
git checkout v6.16.9
# 把 WSL 配置移动到当前源码目录
mv ../.config .
(4)因为用的是主线内核源码和旧版本的配置,要更新配置去匹配 6.16.9 的新特性。
# 更新配置
make oldconfig
# 按住回车键选择默认值即可。
(5)编译内核。用所有可用的 CPU 核心进行编译加快速度。
make -j$(nproc)
编译成功的内核镜像文件在 arch/x86/boot/bzImage。
(6)安装内核镜像:
cp arch/x86/boot/bzImage /mnt/c/Users/<你的用户名>/.wslconfig/wsl-bzImage-6.16.9
(7)配置 WSL2 使用新内核。在 Windows 的C:\Users\<你的用户名>\.wslconfig 的文件输入如下内容:
[wsl2]
# 指定自定义内核的路径
kernel=C:\\Users\\<你的用户名>\\.wsl-kernels\\wsl-bzImage-6.16.9
(8)重启WSL2,验证内核版本:
uname -r
输出:
6.16.9-x86-core
升级完成!!!
贴一下我的环境:
~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.1 LTS
Release: 24.04
Codename: noble

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)