jonghne 发表于 2005-3-7 09:15:18

升级内核的问题

看linux设备驱动程序一书,第一个例子,
hello world

//hello.c

#define MODULE
#include <linux/module.h>
int init_module(void)
{ printk("<1>Hello world\n");return 0;}
void cleanup_module(void)
{ printk("<1>Goodbye cruel world\n");}

我的系统用的是redhat 9,
gcc -c hello.c
没有任何问题,但是下面却出现这样的问题,是怎么一会事呀,
# insmod ./hello.o
./hello.o: kernel-module version mismatch
./hello.o was compiled for kernel version 2.4.28
while this kernel is version 2.4.20-8.

按照书上说的我在程序里加了 #define __NO_VERSION__,都没有用,我是装了redhat9后自己重新编译使用2。4。28的内核,请教是不是头文件问题,怎么把头文件路径指向这个新内核的?还有<<linux设备驱动程序>>里的例子或函数接口是不是都过时了,我看好多都用不了,像kerneld.h这个文件根本就没有;current这个变量也没有(看sched.h里)。谢谢!

jonghne 发表于 2005-3-7 10:17:51

# gcc -I/usr/src/linux-2.4/include -D __KERNEL__ -c modt.c
# insmod modt.o
Warning: loading modt.o will taint the kernel: no license
See http://www.tux.org/lkml/#export-tainted for information about tainted
modules
Module modt loaded, with warnings
# gcc -I/usr/src/linux-2.4/include -c modt.c
# insmod modt.o
insmod: a module named modt already exists
# rmmod modt.o
rmmod: module modt.o is not loaded

llc 发表于 2005-3-7 10:24:23

搜索本版或编程版,以前的帖子有答案,应该在精华区里

jonghne 发表于 2005-3-7 15:16:46

我查看/proc/modules文件,显示 modt 812 0(unused)
可是这又删不掉,我修改程序编译的新模块也insmod不了,没法试,请教怎么办,谢谢!!

llc 发表于 2005-3-7 16:12:29

卸载模块用rmmod modt试试
不用全名,只用前缀

关于

./hello.o was compiled for kernel version 2.4.28
while this kernel is version 2.4.20-8.

查找一下编程版的精华区,记得以前有答案
页: [1]
查看完整版本: 升级内核的问题