Como posso evitar uma dependência circular ao construir o módulo da árvore e o kernel com o initramfs?

Como posso evitar uma dependência circular ao construir o módulo da árvore e o kernel com o initramfs?

Estou compilando um kernel e tenho módulos de kernel fora da árvore fornecidos por um fornecedor de dispositivos. Originalmente o kernel foi construído, depois o módulo funcionou bem.

Agora estou tentando habilitar o initramfs no kernel. O módulo do kernel precisa ser incluído na imagem initramfs. Isso causa uma dependência circular:

  • O kernel depende do arquivo de imagem initramfs (definido em CONFIG_INITRAMFS_SOURCE)
  • O arquivo de imagem initramfs depende do módulo do kernel fora da árvore
  • O módulo do kernel fora da árvore depende do kernel que está sendo construído

A melhor solução alternativa que tenho é:

  1. crie um arquivo vazio para a imagem rootfs do initramfs
  2. Construa o kernel
  3. Construa o módulo
  4. Construa a imagem real do initramfs
  5. Reconstrua o kernel

No entanto, isso interrompe o makerastreamento de dependências e causa muitas reconstruções desnecessárias durante o ciclo normal de desenvolvimento. Existe um alvo de construção do kernel que irá construir as ferramentas necessárias para um módulo fora da árvore sem realmente construir o kernel inteiro?

informação relacionada