WSL2编译和安装内核以支持驱动编译

在编译驱动的时候,需要内核头文件和modules文件。

WSL2的内核是修改过的,无法使用 ubuntu上游的内核,因此,我们需要手动编译并安装一个版本。

主要步骤

首先应当更新WSL2的内核至最新,以保持和github上的最新代码一致。

# 1. 下载内核代码

git clone --depth=1 https://github.com/microsoft/WSL2-Linux-Kernel

# 2. 编译和安装
# 默认情况下,从git编译出的代码带有+号,可以通过软链接的方式规避,也可以通过环境变量取消

cd WSL2-Linux-Kernel
LOCALVERSION= make KCONFIG_CONFIG=Microsoft/config-wsl -j8
sudo LOCALVERSION= make KCONFIG_CONFIG=Microsoft/config-wsl modules_install -j8

# 3. 安装headers (如果ubuntu内核版本比较新,该步骤不是必须的)
sudo make headers_install ARCH=x86_64 INSTALL_HDR_PATH=/usr

安装完成后,会在/lib/modules/目录下生成和当前内核版本一致的文件夹:

驱动编译

如下所示:

➜  hello make
make -C /lib/modules/5.10.74.3-microsoft-standard-WSL2/build M=/home/dw/src/drivers/study/hello modules
make[1]: Entering directory '/home/dw/src/kernel/WSL2-Linux-Kernel'
  CC [M]  /home/dw/src/drivers/study/hello/hello.o
  MODPOST /home/dw/src/drivers/study/hello/Module.symvers
  CC [M]  /home/dw/src/drivers/study/hello/hello.mod.o
  LD [M]  /home/dw/src/drivers/study/hello/hello.ko
make[1]: Leaving directory '/home/dw/src/kernel/WSL2-Linux-Kernel'
➜  hello sudo insmod ./hello.ko
➜  hello dmesg
[19254.803777] Hello World enter
➜  hello
posted @ 2022-01-06 16:34  Hartmon  阅读(5525)  评论(1编辑  收藏  举报