¿Cómo puedo evitar una dependencia circular al construir a partir de un módulo de árbol y un kernel con initramfs?

¿Cómo puedo evitar una dependencia circular al construir a partir de un módulo de árbol y un kernel con initramfs?

Estoy compilando un kernel y tengo módulos de kernel fuera del árbol proporcionados por un proveedor de dispositivos. Originalmente se construyó el kernel, luego el módulo funcionó bien.

Ahora estoy intentando habilitar initramfs en el kernel. El módulo del kernel debe incluirse en la imagen de initramfs. Esto provoca una dependencia circular:

  • El kernel depende del archivo de imagen initramfs (establecido en CONFIG_INITRAMFS_SOURCE)
  • El archivo de imagen initramfs depende del módulo del kernel fuera del árbol
  • El módulo del kernel fuera del árbol depende del kernel que se esté construyendo

La mejor solución que tengo es:

  1. cree un archivo vacío para la imagen rootfs de initramfs
  2. construir el núcleo
  3. Construye el módulo
  4. Construya la imagen real de initramfs
  5. Reconstruir el kernel

Sin embargo, esto interrumpe el makeseguimiento de dependencias y provoca muchas reconstrucciones innecesarias durante el ciclo de desarrollo normal. ¿Existe un objetivo de compilación del kernel que cree las herramientas que necesita un módulo fuera del árbol sin construir el kernel completo?

información relacionada