我们正在使用一些单板计算机 (SBC)。我们使用 Yocto 生成 linux 嵌入式映像(使用 U-boot 作为引导加载程序),然后我们将其手动部署到 SD 卡上。当我们处于测试阶段并且没有很多 SBC 时,这目前运行良好。但是以后,肯定会太慢。
我们有一个用于 SBC 网络的中央服务器。目前,这是一个简单的 DHCP 服务器,根据卡的 MAC 地址影响 IP 地址。首先,我们考虑过制作一个 PXE 服务器,但似乎某些 SBC(例如 Freescale i.MX6 sabresd)的内部引导 ROM 加载程序不支持 PXE 引导过程。
所以我们只想在卡上加载 u-boot,然后使用脚本(boot.scr)下载所有需要的(zImage、dtb 和 rootfs)来启动。我们不想使用 NFS(没有瘦客户端,我们希望将所有必要的东西下载到卡上)。目前,我们可以使用以下方式下载内核和 dtb 文件:
U-Boot > dhcp ${image}; tftpboot ${fdt_addr} ${fdt_file} ; fdt addr ${fdt_addr}
U-Boot > bootz ${loadaddr} - ${fdt_addr}
当然,由于没有任何 rootfs,内核的引导以内核恐慌结束。但是我们不知道如何下载 rootfs 并使内核使用它。欢迎提出任何建议。谢谢。
所以,我找到了如何做到这一点:
要创建
.cpio.gz.u-boot
,我必须编辑conf/local.conf
: