现在的位置: 首页 > 综合 > 正文

insmod Invalid module format

2017年01月13日 ⁄ 综合 ⁄ 共 827字 ⁄ 字号 评论关闭

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模块。

抱歉!评论已关闭.