【问题标题】:How to load a modified kernel module which is already exist in precompiled kernel如何加载预编译内核中已经存在的修改内核模块
【发布时间】:2013-06-04 15:52:58
【问题描述】:

这样做的一种方法是再次构建内核源代码,使需要修改的原始模块可加载。因此可以删除原始模块并插入修改后的模块。但这是一个耗时的过程。
我想知道是否有其他方法可以加载修改后的模块。

我在 MD 驱动程序中做了一些修改,并尝试将其加载到预编译的内核上。 insmod 失败,出现以下错误消息:

md_mod:导出重复符号 bitmap_close_sync(由内核拥有)
insmod:插入“md-mod.ko”时出错:-1 模块格式无效

如果可以,请提供反馈。任何帮助,将不胜感激。谢谢!

【问题讨论】:

    标签: linux linux-kernel linux-device-driver kernel-module kbuild


    【解决方案1】:

    出现此错误是因为 bitmap_close_sync 符号已由内核导出,您再次尝试在 md_mod 模块中重新导出相同的符号。尽量不要导出符号,编译并尝试插入模块(模块应该针对插入它的内核版本进行编译)。通过stackoverflow链接What will happen if two kernel module export same symbol。希望它能回答你的问题:-)。

    【讨论】:

    • 这不是我想要的……但我喜欢不导出符号的想法……谢谢。
    • 无论如何我的问题都解决了,因为 md 模块默认是可加载的……但是在启动时加载……所以我误认为它们是内置于内核映像的。
    猜你喜欢
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    相关资源
    最近更新 更多