使用 initramfs 从树模块和内核构建时如何避免循环依赖?

使用 initramfs 从树模块和内核构建时如何避免循环依赖?

我正在交叉编译内核,并拥有设备供应商提供的树外内核模块。最初构建了内核,然后模块运行良好。

现在我正在尝试在内核中启用 initramfs。内核模块需要包含在 initramfs 映像中。这会导致循环依赖:

  • 内核依赖于initramfs镜像文件(在 中设置CONFIG_INITRAMFS_SOURCE
  • initramfs 映像文件依赖于树外内核模块
  • 树外内核模块取决于正在构建的内核

我最好的解决方法是:

  1. 为 initramfs rootfs 映像创建一个空文件
  2. 构建内核
  3. 构建模块
  4. 构建真正的 initramfs 映像
  5. 重新构建内核

然而,这会破坏make依赖项跟踪,并在正常开发周期中导致大量不必要的重建。是否有一个内核构建目标可以构建树外模块所需的工具,而无需实际构建整个内核?

相关内容