如何在不编译内核的情况下编译Linux内核模块?

如何在不编译内核的情况下编译Linux内核模块?

我想在构建时将 initramfs 嵌入到我的内核中,但为了创建 rootfs 映像,我需要访问我即将构建的内核的许多模块。

解决这个明显的先有鸡还是先有蛋的问题的正确方法是什么?先构建模块,然后构建 initramfs,最后构建内核?

我似乎找不到关于这个特定工作流程的太多文档。我正在考虑的一个选择(因为这是一个具有已知硬件配置的嵌入式设备)是放弃任何启动时所需代码的模块。

更新

我想应该提出一个更好的问题。以下是一些附加信息:

它在 Raspberry Pi 上运行,它有自己的闭源引导加载程序,可以通过引导分区中的几个文本文件进行配置。

这个问题的主要推动力是简化近期更新(能够在单个包中提供内核/initramfs,而无需摆弄不支持计算 addr 偏移量逻辑的引导加载程序配置),以方便将来迁移到安全引导链(最有可能通过插入的 uboot 加载程序;更多文件,更多签名,更多痛苦),并保持我们的操作系统构建过程简单(当前不使用离散引导加载程序)。

我看得越多,我就越倾向于只花一天时间将 uboot 集成到我们的构建管道中,而不是回头。看起来整个 Linux 启动过程过于复杂——尤其是对于固定的硬件规格系统——而我正在尝试寻找通过非概括化来简化的方法。

相关内容