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