【问题标题】:Build kernel module for existing binary kernel为现有的二进制内核构建内核模块
【发布时间】:2012-10-25 20:14:23
【问题描述】:

如何构建一个内核模块来加载到现有的二进制内核中?

似乎加载依赖于存储在模块中的BuildID,但是需要什么来匹配这些呢?我希望二进制内核是一些 git 修订的结果,使用默认的 .config(复制自 arch/.../configs)。我如何决定需要哪个修订版和.config 来构建现有内核可以接受的模块?

似乎匹配 uname -a 所示的 ARCH 和 KERNELRELEASE 属性是不够的。

【问题讨论】:

    标签: linux-kernel kernel-module


    【解决方案1】:

    您将需要您正在运行的当前内核的源代码。这些通常是单独打包的(你没有提到你的发行版)。但是,一旦完成,您应该能够按照说明针对该内核构建外部模块:Documentation/kbuild/modules.txt

    【讨论】:

    • 但我的问题只是因为找到了一个自编译内核,其源版本不清楚。
    • 所以问题主要是关于定义这些 BuildID 值的内容,以使所有需要匹配的东西到位。
    • @dronus:啊,如果您处理自编译内核,则两个配置设置有很大帮助:CONFIG_LOCALVERSION_AUTO 和 IKCONFIG_PROC。第一个确保完整的 SCM 版本字符串附加到 uname 报告的内核版本,第二个从 /proc 提供 .config 的副本。有了这两件事,您应该能够为您正在运行的任何版本重新创建源代码树。
    • 谢谢! IKCONFIG_PROC 真的很酷。但是,它必须在编译时设置,因此它不能用于匹配现有的二进制内核,而 IKCONFIG_PROC 未设置。
    • @dronus:遗憾的是,这是事后诸葛亮的教训之一。祝你好运追捕它是什么......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 2018-11-27
    • 2017-02-17
    • 2011-05-22
    • 2021-10-20
    • 1970-01-01
    • 2017-03-09
    相关资源
    最近更新 更多