操作系统:Windows 11,WSL2(Ubuntu 22.04)
在 WSL2 内部,命令uname -r
返回:5.15.90.1-microsoft-standard-WSL2
首先,我从 Github 下载了正确版本的 Linux 内核:WSL2-Linux 内核然后我编译并安装了它,并使用以下命令从 /lib/modules 创建到 /usr/src 的软链接:
sudo ln -s /lib/modules/5.15.90.1-microsoft-standard-WSL2 /usr/src/5.15.90.1-microsoft-standard-WSL2
我使用 C: 编写了一个自定义内核模块hello.c
,其 Makefile 如下:
obj-m := hello.o
all:make -C /usr/src/`uname -r` M=$PWD modules
clean:make -C /usr/src/`uname -r` M=$PWD clean
在的同一路径下hello.c
,我使用此命令来构建hello.ko
文件:
make -C /usr/src/`uname -r`/build M=$PWD
然后hello.ko
文件就成功生成了。但是当我运行命令时,insmod hello.ko
它抛出了如下错误:
insmod: ERROR: could not insert module hello.ko: Invalid module format
如何修复?