web-dev-qa-db-ja.com

kernel + rootfsをダウンロードし、u-bootで起動します

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

1
Shan-x

だから、私はこれを行う方法を見つけました:

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"
2
Shan-x