【发布时间】:2014-12-12 23:26:24
【问题描述】:
我有一个适用于 vanila linux 内核的补丁,其中包括新文件以及原始内核 SourceTree 文件的更改。
我想让这个补丁成为可加载内核模块,这样我就可以避免任何基本内核的重建。
由于这个补丁对org内核源的头文件以及.c和数据文件都有变化,所以我怀疑这是否可以成为内核模块?
请询问您想澄清问题的更多详细信息。
谢谢, 萨潘
【问题讨论】:
标签: module linux-kernel patch
我有一个适用于 vanila linux 内核的补丁,其中包括新文件以及原始内核 SourceTree 文件的更改。
我想让这个补丁成为可加载内核模块,这样我就可以避免任何基本内核的重建。
由于这个补丁对org内核源的头文件以及.c和数据文件都有变化,所以我怀疑这是否可以成为内核模块?
请询问您想澄清问题的更多详细信息。
谢谢, 萨潘
【问题讨论】:
标签: module linux-kernel patch
简单的答案是否定的。
一个更细致入微的答案:是的,理论上可以做一些你所设想的事情。然而,它非常复杂——每一个细节都必须完全正确——而不是你希望以特别的方式做的事情。例如,每个增加大小的数据结构都可能导致需要重新分配和重新定位大量内存区域,然后需要调整指向这些数据之一的每个指针,并且可能会进一步级联依赖调整。根本无法追踪所有这些细节。
但请参阅https://www.ksplice.com/,它实际上是在运行时修补内核。我不知道很多关于 ksplice 的细节,但我相当肯定,由于我上面概述的问题等等,只有在严格限制确切变化的情况下才能做到这一点。
【讨论】: