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