我们正在使用一些单板计算机 (SBC)。我们使用 Yocto(使用 U-boot 作为引导加载程序)生成 Linux 嵌入式映像,并将其手动部署到 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 并使用它制作内核。欢迎提出任何建议。谢谢。
答案1
因此,我找到了如何做到这一点:
tftpboot 0x12000000 zImage
tftpboot ${fdt_addr} ${fdt_file}
tftpboot 0x19000000 core-image-minimal-boot.cpio.gz.u-boot
bootz 0x12000000 0x19000000 ${fdt_addr}
要创建.cpio.gz.u-boot
,我必须编辑conf/local.conf
:
IMAGE_CLASSES += "image_types_uboot"
IMAGE_FSTYPES = "cpio.gz.u-boot"