You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2 Ubuntu下无法用Makefile编译内核模块求助

WSL2下编译Linux内核模块问题解决指南

问题根源

WSL2默认使用微软维护的定制Linux内核,而非Ubuntu发行版原生内核,你之前安装的linux-headers等依赖是针对Ubuntu原生内核的,和当前运行的WSL2内核不匹配,导致/lib/modules/5.15.79.1-microsoft-standard-WSL2/build目录不存在;另外lsmod无输出是因为WSL2默认内核未开启模块加载支持,或模块机制未正常初始化。

解决步骤

1. 安装匹配WSL2内核的头文件

方法一:通过APT直接安装(优先尝试)

  • 先更新WSL2内核:在Windows PowerShell中执行wsl --update,确保内核是最新版本,然后重启WSL(wsl --shutdown)。
  • 回到Ubuntu WSL终端,更新系统源并安装对应头文件:
    sudo apt update && sudo apt upgrade -y
    sudo apt install linux-headers-$(uname -r)
    
  • 安装完成后,检查/lib/modules/$(uname -r)/build是否存在,若存在即可正常编译。

方法二:手动构建内核头文件(APT安装失败时用)

  • 克隆微软WSL2内核仓库:
    git clone https://github.com/microsoft/WSL2-Linux-Kernel.git
    cd WSL2-Linux-Kernel
    
  • 切换到当前内核对应的版本:
    git checkout $(uname -r)
    
  • 导入当前内核配置:
    zcat /proc/config.gz > .config
    
  • 安装编译依赖:
    sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev
    
  • 构建并安装头文件:
    make headers_install INSTALL_HDR_PATH=/usr
    
  • 创建软链接指向内核源码目录:
    sudo ln -s $(pwd) /lib/modules/$(uname -r)/build
    

2. 调整Makefile适配WSL2

确保你的Makefile正确指向内核源码路径,示例如下:

obj-m += simple.o
# 自动获取内核头文件路径,若手动构建则替换为你的源码目录
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)

all:
	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

clean:
	$(MAKE) -C $(KERNELDIR) M=$(PWD) clean

3. 解决lsmod无输出及模块加载问题

WSL2默认内核关闭了模块加载支持,若要加载自定义模块,需编译自定义WSL2内核:

  • 在克隆的WSL2内核源码目录中,执行make menuconfig,开启以下配置:
    • General setup -> Enable loadable module support(确保CONFIG_MODULES=y)
    • 按需开启其他模块相关配置(如CONFIG_MODULE_UNLOAD=y等)
  • 编译内核:
    make -j$(nproc)
    
  • 在Windows用户目录(如C:\Users\你的用户名)创建.wslconfig文件,内容如下:
    [wsl2]
    kernel=C:\\path\\to\\WSL2-Linux-Kernel\\arch\\x86_64\\boot\\bzImage
    
  • 重启WSL:wsl --shutdown,重新打开Ubuntu后即可使用lsmod和加载自定义模块。

错误操作纠正

你之前安装的linux-tools-virtual、hwdata是针对Ubuntu原生内核的工具,对WSL2内核无作用,无需安装。

内容的提问来源于stack exchange,提问作者Eddiex045

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:56:50