Module 我可以将linux内核的补丁转换为可加载的内核模块吗?

Module 我可以将linux内核的补丁转换为可加载的内核模块吗?,module,linux-kernel,patch,Module,Linux Kernel,Patch,我有一个针对vanila linux内核的补丁,其中包括新文件以及对原始内核SourceTree文件的更改 我想让这个补丁成为一个可加载的内核模块,这样我就可以避免任何基本内核的重建 由于这个补丁的头文件以及org内核源代码的.c和数据文件都有变化,我怀疑这是否可以成为一个内核模块 请询问您想要澄清问题的更多细节 谢谢, 萨潘简单的答案是否定的 一个更微妙的答案是:是的,从理论上讲,做一些你想象中的事情是可能的。然而,它非常复杂——每一个细节都必须完全正确——而不是你希望以一种特别的方式去做的事

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

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

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

请询问您想要澄清问题的更多细节

谢谢,
萨潘

简单的答案是否定的

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


但是请看,这实际上是在运行时修补内核。我不知道关于ksplice的很多细节,但我相当确定,由于我上面概述的问题,以及其他原因,只有在非常严格的限制下才能实现这一点

你应该在第一句话之后停止,即OP不能用源代码补丁“避免任何基本内核的重建”。事实上,我也曾经有过这样的想法,即需要制作的补丁KLM在内核源代码树中有更改,但仍然只是想确认一下。我想和大家分享的另一件事是,补丁引入了一个新的结构,并在init_task.h下对其进行了初始化。据我所知,init_task.h有助于创建2MB左右的初始任务表。我们不能在运行时通过KLM更改它。如果我错了,请纠正我。谢谢你的回复。