Linux 编辑编译后的内核模块以提高兼容性

Linux 编辑编译后的内核模块以提高兼容性,linux,module,linux-kernel,Linux,Module,Linux Kernel,我想编辑编译后的内核模块文件(module.ko)以插入类似于“module_INFO(vermagic,“3.10.9-blablabla”);“的内容,因为此模块文件没有加载insmod,并且我得到了错误“失败(Exec格式错误)”,该模块是为2.6.35-smp版本制作的,我是linux新手。您不能直接编辑已编译的模块。 无论需要做什么更改,都必须编辑源文件,然后重新编译 从2.6.35版到3.10版,很多东西都改变了;很可能模块根本不兼容,无法工作。因此,即使您可以更改二进制文件中的ve

我想编辑编译后的内核模块文件(
module.ko
)以插入类似于
“module_INFO(vermagic,“3.10.9-blablabla”);“
的内容,因为此模块文件没有加载
insmod
,并且我得到了错误
“失败(Exec格式错误)”
,该模块是为
2.6.35-smp
版本制作的,我是linux新手。

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

从2.6.35版到3.10版,很多东西都改变了;很可能模块根本不兼容,无法工作。因此,即使您可以更改二进制文件中的
vermagic
,它也不会工作,因为它不兼容

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

如果您没有源代码,因为它不是开源模块:向供应商投诉:)

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

从2.6.35版到3.10版,很多东西都改变了;很可能模块根本不兼容,无法工作。因此,即使您可以更改二进制文件中的
vermagic
,它也不会工作,因为它不兼容

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


如果您没有源代码,因为它不是一个开源模块:向供应商投诉:)

尽管您现在无法编辑编译后的模块,但从下次开始,为了驱动程序开发,使用
CONFIG\u MODVERSIONS构建内核时未设置
。它将使您能够对驱动程序进行任意数量的增量更改,并在未设置
配置的情况下加载新构建的内核

CONFIG\u MODVERSIONS
是一个让人们的生活更轻松的概念。如果您的内核是使用
CONFIG\u MODVERSIONS=y
编译的,那么它将允许您 只能加载专门为其编译的模块
内核版本。然而,如果您的内核是用
CONFIG\u MODVERSIONS构建的,并且未设置
,则它将使您的
驱动程序
能够加载到未设置
CONFIG\u MODVERSIONS的任何内核上。您可以在
linux内核
目录的
.config
文件中修改此字段。

虽然您现在无法编辑编译的模块,但从下一次开始未设置
配置版本来构建内核,以便驱动程序开发。它将使您能够对驱动程序进行任意数量的增量更改,并在未设置
配置的情况下加载新构建的内核

CONFIG\u MODVERSIONS
是一个让人们的生活更轻松的概念。如果您的内核是使用
CONFIG\u MODVERSIONS=y
编译的,那么它将允许您 只能加载专门为其编译的模块
内核版本。然而,如果您的内核是用
CONFIG\u MODVERSIONS构建的,并且未设置
,则它将使您的
驱动程序
能够加载到未设置
CONFIG\u MODVERSIONS的任何内核上。您可以在
linux内核
目录的
.config
文件中修改此字段。

您好,每个内核模块都是为特定的内核版本构建的。这将确保稳定。您实际需要的是针对3.10.0-blabla内核构建您的模块。这将确保稳定。您实际需要的是针对3.10.0-blabla内核构建模块。