静态插入linux内核模块

发布于 2024-12-03 19:07:32 字数 149 浏览 0 评论 0原文

当从源代码构建 Linux 内核时,我们可以决定某个功能是静态构建到内核中还是打包到模块中以通过 .config 动态插入。

另一方面,如果我有任何第三方模块的源代码,例如打包的设备驱动程序,是否可以以编程方式将此代码静态集成到内核中?并且不从根文件系统加载内核模块?

When building the Linux kernel from sources one could decide if a certain functionality is statically built into the kernel or packed into a module for dynamic insertion by .config.

If on the other hand I have sources for any 3rd party module, like for example a packaged device driver, is it possible to programmatically integrate this code into the kernel statically instead? And not load the kernel module from the root filesystem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟织青萝梦 2024-12-10 19:07:32

当然,您只需要进行一些修改即可将外部模块移至内核源代码树中,稍微调整 Makefiles/Kconfig 以使代码内置,然后构建内核映像。例如,假设您将模块源移至drivers/blah。然后,您应该在 drivers/Makefile 的末尾添加一行

obj-y += blah/

,并且您应该确保 drivers/blah/Makefile 设置为构建您的模块,其中包含一些内容诸如此类

obj-y += mymodule.o
mymodule-objs := src.o other.o

,您的 Makefile 已设置,但需要构建您正在处理的特定模块。
注意:您必须使用 mymodule-objs 的输出文件名,而不是输入文件名!

Sure, you just need to do a bit of hacking to move the external module into the kernel source tree, tweak the Makefiles/Kconfig a bit so that the code is built-in, and then build your kernel image. For example, let's say you move the module source into drivers/blah. Then you should add a line to then end of drivers/Makefile like

obj-y += blah/

and you should make sure that drivers/blah/Makefile is set up to build your module in, with something like

obj-y += mymodule.o
mymodule-objs := src.o other.o

and so on, where your Makefile is set up however it needs to be to build the particular module you're working on.
Note: You have to use the output file name for mymodule-objs and not the input filename!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文