Eu quero incorporar um initramfs em meu kernel no tempo de construção, mas para criar a imagem rootfs eu preciso acessar vários módulos para o kernel que estou prestes a construir.
Qual é a maneira correta de resolver esse problema aparente de ovo / galinha de construir os módulos, depois o initramfs e finalmente o kernel propriamente dito?
Não consigo encontrar muita documentação sobre esse fluxo de trabalho específico. Uma opção que estou considerando (já que este é um dispositivo embarcado com uma configuração de hardware conhecida) é simplesmente abrir mão dos módulos para qualquer código requerido pela inicialização.
Eu acho que uma pergunta melhor está em ordem. Veja algumas informações adicionais:
Isso está sendo executado no Raspberry Pi, que possui seu próprio gerenciador de inicialização de código fechado, que pode ser configurado através de alguns arquivos de texto na partição de inicialização.
O principal impulso desta questão é facilitar as atualizações no curto prazo (poder enviar apenas o kernel / initramfs em um único pacote sem mexer nas configurações do gerenciador de inicialização que não suportam lógica para calcular deslocamentos do addr), para facilitar futuros migração para uma cadeia de inicialização segura (provavelmente por meio de um carregador de inicialização do UFTot interposto; mais arquivos, mais assinaturas, mais problemas) e para manter nosso processo de construção do SO simples (atualmente não usa um gerenciador de inicialização distinto). Quanto mais eu olho para isso, mais eu estou inclinado a gastar apenas um dia e fazer com que o uboot seja integrado ao nosso canal de desenvolvimento e não olhe para trás. Parece que todo o processo de inicialização do Linux é excessivamente complexo - especialmente para um sistema fixo de especificação de hardware - e estou tentando encontrar maneiras de simplificar através da degeneralização.