d*******r 发帖数: 3299 | 1 问题是这样的,我要在一个Linux-based小系统(就一switch)上开发些新功能,
我要compile出针对那小系统的kernel的.ko文件,再load上去。
它的kernel version 是: 2.6.24-1-486, 它的硬盘上找不到
目录 /lib/modules/2.6.24-1-486/build,
也没有找到有2.6.24-1-486 kernel的linux header files.
遗留的文档提到用 testing/unstable 的 Debian with 2.6.24 kernel就可以用来build loadable .ko,我试验了不少2.6.24的kernel, 都不行,编译出来的.ko文件load不上去,都通不过校验:
# insmod xxx_mod_1.ko
insmod: error inserting 'xxx_mod_1.ko': -1 Invalid module format
# dmesg|tail
xxx_mod: disagrees about version of symbol struct_module
xxx_m | p*****s 发帖数: 344 | 2 你这是个人爱好还是正经的活?如果你的系统用的是该写过的kernel,光有一个label
恐怕能load上
去也不稳定。你这等于在hack。
找个工具先看看你的kernel还有些什么可读字符。
build
loadable .ko,我试验了不少2.6.24的kernel, 都不行,编译出来的.ko文件load不上去
,都通不
过校验:
【在 d*******r 的大作中提到】 : 问题是这样的,我要在一个Linux-based小系统(就一switch)上开发些新功能, : 我要compile出针对那小系统的kernel的.ko文件,再load上去。 : 它的kernel version 是: 2.6.24-1-486, 它的硬盘上找不到 : 目录 /lib/modules/2.6.24-1-486/build, : 也没有找到有2.6.24-1-486 kernel的linux header files. : 遗留的文档提到用 testing/unstable 的 Debian with 2.6.24 kernel就可以用来build loadable .ko,我试验了不少2.6.24的kernel, 都不行,编译出来的.ko文件load不上去,都通不过校验: : # insmod xxx_mod_1.ko : insmod: error inserting 'xxx_mod_1.ko': -1 Invalid module format : # dmesg|tail : xxx_mod: disagrees about version of symbol struct_module
| d*******r 发帖数: 3299 | 3 正经活,但是不打紧那种,因为kernel的东西我也是新手
这个kernel肯定是改过的,不过应该只加载了一些作者自己的.ko模块,
我觉得能不hack它,又让我自己build的.ko模块能跑起来就最好了,
不稳定也好,只是学校lab里作试验用的toy system | p*****s 发帖数: 344 | 4 如果只是toy system 又确信没怎么改过,那就hack一下最快。
把认为最接近的source的version改得跟它一样就行了。
还有一个更简单的方法,insmod -f | d*******r 发帖数: 3299 | 5 试了insmod -f,也不行,还是报 disagrees about version of symbol struct_
module
后来试了下这个: http://packages.debian.org/etch/linux-headers-2.6.24-etchnhalf.1-486
终于搞定了!还是谢谢pstnims帮忙出主意 :) |
|