私たちはいくつかのシングルボードコンピューター(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をダウンロードして、それを使用してカーネルを作成する方法はわかりません。それを行う方法の提案は大歓迎です。ありがとう。
だから、私はこれを行う方法を見つけました:
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"