如何离线从GitHub更新WSL2内核版本以适配Docker Desktop?
离线更新WSL2内核至5.15.146.1-2的方案(适配Docker Desktop要求)
前置快速替换方法(针对已编译出vmlinux的情况)
如果你已经在WSL2 Ubuntu中编译得到vmlinux文件,可直接替换Windows本地内核:
- 定位WSL2内核默认路径:
C:\Windows\System32\lxss\tools,其中kernel为当前使用的内核文件 - 备份原文件:重命名
kernel为kernel.bak - 将编译好的
vmlinux复制到该路径,并重命名为kernel - 执行命令
wsl --shutdown重启WSL,内核更新立即生效
方案一:局域网内定期构建WSL2内核更新源
1. 搭建局域网文件服务器
在局域网内选一台有互联网权限的机器,搭建静态文件服务器(可用Nginx、Apache,或Python简易服务:python -m http.server 8000),确保无网络的Windows主机可访问该服务器。
2. 定期构建并同步内核文件
在联网机器上按周期执行以下操作:
- 克隆WSL2内核源码:
git clone https://github.com/microsoft/WSL2-Linux-Kernel.git - 切换到目标版本:
git checkout linux-msft-wsl-5.15.146.1-2 - 安装编译依赖:
sudo apt install build-essential flex bison libssl-dev libelf-dev dwarves - 加载微软官方WSL配置:
cp Microsoft/config-wsl .config - 编译内核:
make -j$(nproc)(nproc为CPU核心数,加快编译速度) - 将生成的
vmlinux文件重命名为kernel,上传到局域网服务器的指定目录(如/wsl-updates/5.15.146.1-2/)
3. 无网络主机更新流程
- 在目标Windows主机上,从局域网服务器下载
kernel文件 - 替换到
C:\Windows\System32\lxss\tools路径(先备份原文件) - 执行
wsl --shutdown重启WSL完成更新
方案二:构建Windows离线更新包(MSI格式)
1. 准备构建环境
在一台联网的Windows机器上安装:
- Visual Studio 2022(需勾选「Desktop development with C++」工作负载及「Windows SDK」)
- Git
- Python 3.x
2. 编译并打包MSI
- 克隆WSL2内核源码:
git clone https://github.com/microsoft/WSL2-Linux-Kernel.git - 切换到目标版本:
git checkout linux-msft-wsl-5.15.146.1-2 - 打开Visual Studio开发者命令提示符,切换到源码目录
- 执行官方构建脚本:
build-wsl2-kernel.cmd(脚本会自动完成编译并生成MSI包) - 若脚本未生成MSI,可手动用WiX Toolset制作:参考官方WSL更新MSI的结构,将编译好的
vmlinux替换为安装包内的kernel文件,重新打包成MSI
3. 离线安装
- 将生成的MSI文件复制到无网络Windows主机
- 双击运行MSI,按提示完成安装(安装程序会自动替换WSL2内核文件)
- 执行
wsl --shutdown重启WSL生效
内容的提问来源于stack exchange,提问作者Frank He
相关产品推荐
相关产品推荐

