1

我有一台小型树莓派计算机,我第一次尝试创建内核模块。我已经下载了源代码,并设法编译了我的测试模块,但是当我尝试加载它时,我得到了这个错误:

insmod: error inserting 'hello.ko': -1 Invalid module format

当我查看 dmesg 时,我看到了这个错误:

hello: version magic '3.1.9+ mod_unload modversions ARMv6 p2v8 ' should be '3.1.9+ mod_unload modversions ARMv6 '

谁能指出我正确的方向,我不确定它告诉我什么?

干杯卢克

4

1 回答 1

0

听起来您下载的内核源代码与您的 Pi 上安装的内核不匹配。

你是从哪里下载的?

要为您的内核获取正确的源代码,请在命令行中键入以下内容:

sudo apt-get install linux-source 

这应该为您的内核下载正确的内核源代码(它是一个元包)。您现在应该会在下面看到一个/lib/modules/与您的内核版本匹配的目录(键入时打印出的版本uname -r

重新编译并链接你的代码——通过在你的 Makefile 中有这样一行来确保你选择了正确的内核源代码:

all:
    make -C /lib/modules/$(shell uname -r)/build M=${PWD} modules

您新编译的 .ko 模块现在应该与您的内核匹配,并且可以毫无怨言地插入。

祝你好运!

于 2012-10-11T18:53:55.960 回答