今天在装载某模块时,报Invalid module format的错误:
-bash-4.1# insmod vadpt.ko
insmod: error inserting 'vadpt.ko': -1 Invalid module format
dmesg信息如下:
-bash-4.1# dmesg
[ 868.737210] vadpt: version magic '2.6.39-kernel-debug SMP mod_unload CORE2 ' should be '2.6.39-kernel SMP mod_unload CORE2 '
编译环境是同事给的虚拟机,运行环境是X86。看来内核编译时和他给我的虚拟机环境还不一样。
不过至少内核版本是一样,应该是编译时的设置问题。
查了一下,version magic应该是在/usr/src/linux/include/linux/vermagic.h中定义的:
#define VERMAGIC_STRING \
UTS_RELEASE " " \
MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT \
MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS \
MODULE_ARCH_VERMAGIC
而UTS_RELEASE是在/usr/src/linux/include/generated/utsrelease.h中定义的:
Gentoo include # cat generated/utsrelease.h
#define UTS_RELEASE "2.6.39-kernel-debug"
把它改成
#define UTS_RELEASE "2.6.39-kernel"
之后重新编译内核模块,就可以正常装载了。
阅读(3871) | 评论(0) | 转发(0) |