码迷,mamicode.com
首页 > 其他好文 > 详细

加载模块报错:version magic '2.6.32-504.el6.i686 SMP mod_unload 686 ' should

时间:2015-04-11 13:22:51      阅读:923      评论:0      收藏:0      [点我收藏+]

标签:linux驱动   模块编程   

        在之前我也遇到这个问题,后来我解决了,但是当时没有记录下来,现在又遇到了,害我整了半天,所以现在记录下,供以后参考;

        我开始的加载模块的时候报这样的错误:

hello: module_layout: kernel tainted.
Disabling lock debugging due to kernel taint
hello: version magic '2.6.32-504.el6.i686 SMP mod_unload 686 ' should be '2.6.32-504.el6.i686 SMP mod_unload modversions 686 '
        前面两行错误是内核污染,一般是验证时没通过,或者没有干脆就没有写MODULE_LICENSE()验证。我开始写的是MODULE_LICENSE("Dual BSD/GPL");  验证通不过,后来我改成:MODULE_LICENSE("GPL");  就可以了(其实感觉开始那个验证也是可以的,后来我又实验了下)。

 

        至于第二个错误是,你内核树版本和你运行的内核版本不一致导致的。可以参考下这位仁兄的:http://blog.sina.com.cn/s/blog_752fa65f0100p6wc.html;以及这位仁兄的:http://blog.sina.com.cn/s/blog_6e5e78bf010105jj.html

我这里就分享下我的解决方法和步骤(其实和那位仁兄提到的一样);

        第一步、看看你运行内核的版本:ls /usr/src/kernels/2.6.32-504.12.2.el6.i686/  ;这里面存放的是你内核相应版本的源代码,这是我个人理解的。因为开始/usr/src/kernel/目录下什么都没有,我是通过命令:yum install kernel-headers kernel-devel gcc获取到的。可以通过rpm -qa | grep ‘kernel‘ 命令来查看下这些内核相关包;也可以用uname -r 命令来查看下你内核版本的信息;但是很奇怪的是我用uname -r 得到的版本信息和/usr/src/kernel/下面的不一样,这个希望知道的兄弟告诉下。(可能是uname -r显示的是运行版本号,而不是内核详细版本号);

        下面是 rpm -qa | grep ‘kernel‘ 命令显示的:

kernel-2.6.32-504.el6.i686
kernel-headers-2.6.32-504.12.2.el6.i686
kernel-firmware-2.6.32-504.el6.noarch
dracut-kernel-004-356.el6.noarch
kernel-devel-2.6.32-504.12.2.el6.i686


        第二步、查看下你内核源码树, ls /lib/modules/2.6.32-504.el6.i686/ -l  ;下面只贴两个软连接的文件

lrwxrwxrwx.  1 root root     25 Apr 11 09:52 build -> /home/kernel/linux-2.6.32
lrwxrwxrwx.  1 root root     25 Apr 11 09:52 source -> /home/kernel/linux-2.6.32
        我做的源码树的内核为:linux-2.6.32;


        第三步、在Makefile文件中修改下配置,修改完如下:

obj-m:=hello.o

#KERDIR=/lib/modules/$(shell uname -r)/build
KERDIR=/usr/src/kernels/2.6.32-504.12.2.el6.i686

CURDIR=$(shell pwd)

all:
         make -C $(KERDIR) M=$(CURDIR) modules

clean:
        make -C $(KERDIR) M=$(CURDIR) clean

        现在基本上是可以了;其他解决办法可以看看上面给的那位仁兄的链接;

   

         如有错误,请大家指正,共同成长嘛。谢谢!!


加载模块报错:version magic '2.6.32-504.el6.i686 SMP mod_unload 686 ' should

标签:linux驱动   模块编程   

原文地址:http://blog.csdn.net/yuzhihui_no1/article/details/44993359

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!