【问题标题】:Can I convert a patch for linux kernel into a Loadable Kernel Module?我可以将 linux 内核的补丁转换为可加载内核模块吗?
【发布时间】:2014-12-12 23:26:24
【问题描述】:

我有一个适用于 vanila linux 内核的补丁,其中包括新文件以及原始内核 SourceTree 文件的更改。

我想让这个补丁成为可加载内核模块,这样我就可以避免任何基本内核的重建。

由于这个补丁对org内核源的头文件以及.c和数据文件都有变化,所以我怀疑这是否可以成为内核模块?

请询问您想澄清问题的更多详细信息。

谢谢, 萨潘

【问题讨论】:

    标签: module linux-kernel patch


    【解决方案1】:

    简单的答案是否定的。

    一个更细致入微的答案:是的,理论上可以做一些你所设想的事情。然而,它非常复杂——每一个细节都必须完全正确——而不是你希望以特别的方式做的事情。例如,每个增加大小的数据结构都可能导致需要重新分配和重新定位大量内存区域,然后需要调整指向这些数据之一的每个指针,并且可能会进一步级联依赖调整。根本无法追踪所有这些细节。

    但请参阅https://www.ksplice.com/,它实际上是在运行时修补内核。我不知道很多关于 ksplice 的细节,但我相当肯定,由于我上面概述的问题等等,只有在严格限制确切变化的情况下才能做到这一点。

    【讨论】:

    • 您应该在第一句话之后停止,即 OP 不能通过 source 代码的补丁“避免任何基本内核的重建”。 .
    • 其实我也有想过,需要打补丁的KLM在Kernel source tree中有变化,但还是想确认一下。还有一点我想分享的是,补丁引入了一个新结构,并在 init_task.h 下对其进行了初始化。据我所知,init_task.h 有助于创建 2MB 左右的初始任务表。我们不能在运行时由 KLM 更改它。如果我错了,请纠正我。感谢您的回复。
    猜你喜欢
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多