今天编译了一个简单的模块。我把模块代码加入到内核树(version 2.6.26)里面编译,过程还很顺利,但是总是在加载时发生错误,提示:
insmod: error inserting 'hello.ko': -1 Invalid module format
查看dmesg发现关键的一行:
hello: version magic '2.6.26 SMP mod_unload 586 ' should be '2.6.26 SMP mod_unload 686 4KSTACKS '
于是用modinfo查看模块:
filename: hello.ko
license: GPL
description: hello example
author: Linyi
depends:
vermagic: 2.6.26 SMP mod_unload 586
原来是编译时类型错误
重新编译模块
make menuconfig
设置处理器类型:
设置内核堆栈参数
之后再重新编译模块
make modules
再次查看模块的信息:
filename: hello.ko
license: GPL
description: hello example
author: Linyi
depends:
vermagic: 2.6.26 SMP mod_unload 686 4KSTACKS
之后insmod就终于成功了。