您的位置:首页 > 其它

insmod Invalid module format

2011-02-11 17:45 627 查看
Fedora 9系统,内核版本是2.6.25.14。

1.从www.kernel.org下载Linux 2.6.25.14源代码并解压,存放路径是/usr/src/linux-2.6.25.14。

2.驱动程序是hello.c。在当前目录下执行命令make编译得到hello.ko。Makefile如下:

obj-m := hello.o

KDIR := /usr/src/linux-2.6.25.14/

PWD := $(shell pwd)

all:

[注意这里是Tab]$(MAKE) -C $(KDIR) M=$(PWD)

clean:

[注意这里是Tab]rm -f *.o *.ko *.mod.* Module.* *.order

3.执行命令insmod ./hello.ko插入模块,失败,错误信息是insmod: error inserting './hello.ko': -1 Invalid module format。

4.执行命令cat /var/log/message | tail,打印信息version magic '2.6.25.14 mod_unload 686' should be '2.6.25-14.fc9.i686 SMP mod_unload 686 4KSTACKS'。

5.执行命令uname -r,可以看到Fedora 9的版本信息是2.6.25-14.fc9.i686。进入/usr/src/linux-2.6.25.14,编辑Makefile,将EXTRAVERSION = .14修改为EXTRAVERSION = -14.fc9.i686。

6. 执行命令cp /boot/config-2.6.25-14.fc9.i686 ./.config,覆盖原有配置文件。

7. 进入/usr/src/linux-2.6.25.14,执行make menuconfig配置内核,执行make编译内核。

8. 最后,再次编译驱动程序hello.c得到hello.ko。执行insmod ./hello.ko,即可正确insert模块。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: