Estamos trabalhando com alguns computadores de placa única (SBC). Nós geramos imagens embutidas no linux com o Yocto (usando U-boot como bootloader), e nós o implantamos manualmente em cartões SD. Isso funciona bem por enquanto, quando estamos em fase de teste e não temos muitos SBCs. Mas depois, será definitivamente muito lento.
Temos um servidor central para a rede dos SBCs. Atualmente, este é um servidor DHCP simples, afetando os endereços IP, dependendo dos endereços MAC dos cartões. Primeiro, pensamos em criar um servidor PXE, mas parece que o carregador de ROM de boot interno de alguns SBCs (Freescale i.MX6 sabresd por exemplo) não suporta o processo de inicialização PXE.
Portanto, gostaríamos de carregar apenas o u-boot nas placas e, em seguida, usar um script (um boot.scr) para fazer o download de tudo o que é necessário (zImage, dtb e rootfs) para inicializar. Não queremos usar o NFS (nenhum thin client, queremos que todos os downloads necessários sejam feitos nos cartões). Atualmente, podemos baixar o kernel e o arquivo dtb usando isto:
U-Boot > dhcp ${image}; tftpboot ${fdt_addr} ${fdt_file} ; fdt addr ${fdt_addr}
U-Boot > bootz ${loadaddr} - ${fdt_addr}
É claro que, como não há rootfs, a inicialização do kernel termina com um pânico no kernel. Mas não sabemos como baixar os rootfs e fazer o kernel usá-lo. Qualquer sugestão de como fazer isso é bem-vinda. Obrigado.