编辑已编译的内核模块以获得更多兼

时间:2016-12-08 10:19:34

标签: linux module linux-kernel

我想编辑已编译的内核模块文件(module.ko)以插入类似"MODULE_INFO(vermagic, "3.10.9-blabla");"的内容,因为此模块文件未加载insmod而我收到错误"failed (Exec format error)" ,该模块是为2.6.35-smp版本制作的,我是linux的新手。

2 个答案:

答案 0 :(得分:1)

无法直接编辑已编译的模块。 无论您需要做什么更改,都必须编辑源文件,然后再次编译。

从版本2.6.35到3.10,很多事情发生了变化;很可能该模块根本不兼容,它不起作用。因此,即使您可以更改二进制文件中的vermagic,它也无法正常工作,因为它不兼容。

在您的情况下,正如Hector所说,您必须针对不同的Linux版本重新编译该模块。此过程还将突出显示您应该修复的所有不兼容性。

如果您没有源,因为它不是开源模块:向供应商抱怨:)

答案 1 :(得分:1)

虽然您现在无法编辑已编译的模块,但下次使用CONFIG_MODVERSIONS is not set构建内核,以进行驱动程序开发。它将使您能够对驱动程序进行任意数量的增量更改,并使用CONFIG_MODVERSIONS将其加载到新构建的内核中。

CONFIG_MODVERSIONS=y是一个让人们的生活更轻松的想法。如果您的内核使用CONFIG_MODVERSIONS is not set进行编译,则可以启用它 只能加载专门为其编译的模块 那个内核版本。然而,如果您的内核使用driver构建,则会使CONFIG_MODVERSIONS is not set加载到.config的任何内核。您可以在linux-kernel目录的{{1}}文件中修改此字段。