如何获取WSL2 Ubuntu24.04对应的内核头文件?
WSL2 Ubuntu24.04 缺失特定内核头文件的解决方法
问题背景
在Windows 10的WSL2 Ubuntu24.04环境下,执行DKMS构建命令时出现错误:
$ sudo dkms build eatmydata/0.1 Error! Your kernel headers for kernel 5.15.133.1-microsoft-standard-WSL2 cannot be found at /lib/modules/5.15.133.1-microsoft-standard-WSL2/build or /lib/modules/5.15.133.1-microsoft-standard-WSL2/source. Please install the linux-headers-5.15.133.1-microsoft-standard-WSL2 package or use the --kernelsourcedir option to tell DKMS where it's located.
常规的sudo apt install linux-headers-$(uname -r)无法解决,因为当前Ubuntu24.04的apt源中没有对应5.15.133.1-microsoft-standard-WSL2版本的内核头文件包。
解决方法
方法1:升级WSL2内核至最新版本
Ubuntu24.04的apt源提供的是较新的内核头文件,升级WSL2内核后可匹配:
- 打开Windows管理员权限的PowerShell,执行:
wsl --update - 关闭并重启WSL:
wsl --shutdown - 重新启动Ubuntu,验证内核版本:
uname -r - 安装对应版本的内核头文件:
sudo apt install linux-headers-$(uname -r)
方法2:手动编译对应版本的WSL2内核头文件
如果需要保留当前5.15.133.1版本的内核,可手动编译头文件:
- 克隆微软WSL2内核仓库:
git clone https://github.com/microsoft/WSL2-Linux-Kernel.git - 切换到对应版本的标签:
cd WSL2-Linux-Kernel git checkout linux-msft-wsl-5.15.133.1 - 加载WSL2默认配置:
cp Microsoft/config-wsl .config - 编译并安装内核头文件到系统目录:
make headers_install INSTALL_HDR_PATH=/usr - 创建模块目录的软链接,让DKMS能找到头文件:
sudo mkdir -p /lib/modules/5.15.133.1-microsoft-standard-WSL2/build sudo ln -s /usr/include/linux /lib/modules/5.15.133.1-microsoft-standard-WSL2/build/include/linux
方法3:直接指定DKMS的内核源码路径
如果已经拥有对应版本的内核源码或头文件,可在DKMS命令中直接指定路径:
sudo dkms build eatmydata/0.1 --kernelsourcedir=/path/to/your/kernel/source
内容的提问来源于stack exchange,提问作者hanshenrik
相关产品推荐
相关产品推荐

