当前位置: 技术问答>linux和unix
我内核版本跟内核模块一致,但仍然insmod:error inserting 'hello.ko',-1 Invalid module format
来源: 互联网 发布时间:2017-05-28
本文导语: 本帖最后由 NewThinker_wei 于 2012-10-05 13:18:38 编辑 如图: 版本号都是2.6.34.13 但仍然无法insmod。 下面是源码: hello.c /*====================================================================== A simple kernel module: "hello world" ...
版本号都是2.6.34.13
但仍然无法insmod。
下面是源码:
hello.c
/*======================================================================
A simple kernel module: "hello world"
The initial developer of the original code is Baohua Song
. All Rights Reserved.
======================================================================*/
#include
#include
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_INFO " Hello World entern");
return 0;
}
static void hello_exit(void)
{
printk(KERN_INFO " Hello World exitn ");
}
module_init(hello_init);
module_exit(hello_exit);
/*
MODULE_AUTHOR("Song Baohua");
MODULE_DESCRIPTION("A simple Hello World Module");
MODULE_ALIAS("a simplest module");
*/
//Makefile
#KERNELDIR = /usr/src/kernels/2.6.18-164.el5-i686
#PWD := ($shell pwd)
#INSTALLDIR = $(PWD)
#CC=gcc
obj-m := hello.o
还有我用的是红帽企业版5.4,原始内核是2.6.18,用这个内核启动的话,运行insmod -C /usr/src/kernels/2.6.18-164.el5-i686 后再insmod可以正常加载。
后来我下载了2.6.34.13的源码(源码目录 /usr/src/linux-2.6.34.13),以前编译过一次。但用这个内核启动时,运行insmod -C /usr/src/linux-2.6.34.13后用insmod就会出现上图中的情况。网上说出现这种问题一般是内核版本号跟要加载的内核模块版本号不一致,但我这里貌似是一致的吧?怎么回事?
|
这个……
我三个内核,都试了,只需改下内核源码路径就OK了!!!(我新编译的那个2.6.34也比我之前的版本高)
这是我的Makefile
这是内核源码的目录结构
[Og@localhost ~]$ ls /lib/modules/
2.6.32-279.9.1.el6.x86_64 2.6.32-279.el6.x86_64 2.6.34.12
[Og@localhost ~]$ ls /lib/modules/2.6.34.12/
build modules.ccwmap modules.isapnpmap modules.symbols
kernel modules.dep modules.ofmap modules.symbols.bin
modules.alias modules.dep.bin modules.order modules.usbmap
modules.alias.bin modules.ieee1394map modules.pcimap source
modules.builtin modules.inputmap modules.seriomap
[Og@localhost ~]$ ls /lib/modules/2.6.34.12/build
arch firmware kernel Module.symvers sound
block fs lib net System.map
COPYING include MAINTAINERS README tools
CREDITS init Makefile REPORTING-BUGS usr
crypto initrd-2.6.34.12 mm samples virt
Documentation ipc modules.builtin scripts vmlinux
drivers Kbuild modules.order security vmlinux.o
[Og@localhost ~]$
你还是看一下你的编译完的内核源码路径吧!
出现这个错误一般是没找到内核源码
我三个内核,都试了,只需改下内核源码路径就OK了!!!(我新编译的那个2.6.34也比我之前的版本高)
这是我的Makefile
ifneq ($(KERNELRELEASE),)
obj-m :=hello.o
else
KDIR:= /lib/modules/2.6.34.12/build
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif
这是内核源码的目录结构
[Og@localhost ~]$ ls /lib/modules/
2.6.32-279.9.1.el6.x86_64 2.6.32-279.el6.x86_64 2.6.34.12
[Og@localhost ~]$ ls /lib/modules/2.6.34.12/
build modules.ccwmap modules.isapnpmap modules.symbols
kernel modules.dep modules.ofmap modules.symbols.bin
modules.alias modules.dep.bin modules.order modules.usbmap
modules.alias.bin modules.ieee1394map modules.pcimap source
modules.builtin modules.inputmap modules.seriomap
[Og@localhost ~]$ ls /lib/modules/2.6.34.12/build
arch firmware kernel Module.symvers sound
block fs lib net System.map
COPYING include MAINTAINERS README tools
CREDITS init Makefile REPORTING-BUGS usr
crypto initrd-2.6.34.12 mm samples virt
Documentation ipc modules.builtin scripts vmlinux
drivers Kbuild modules.order security vmlinux.o
[Og@localhost ~]$
你还是看一下你的编译完的内核源码路径吧!
出现这个错误一般是没找到内核源码
|
dmesg看看还有其他的信息不