メインコンテンツまでスキップ

reComputer Super 向け Yocto イメージのビルドとフラッシュ

JetPack 7.2 collection copy

このコピーは、公式の OpenEmbedded/Yocto サポートが JetPack 7.2 の主要なプロダクション Linux 機能であるため含まれています。JetPack 7.2 イメージとして使用する前に、選択した Seeed Yocto ブランチ、NVIDIA BSP レイヤー、および生成されたフラッシュパッケージが、意図する Jetson Linux 39.2 ターゲットと一致していることを確認してください。

このガイドでは、Jetson Orin NX 16GB モジュールを搭載した reComputer Super J401 向けの Seeed Yocto イメージをビルドし、それを Jetson の NVMe ドライブにフラッシュします。

この例では seeed-image-jetson-development を使用します。このイメージは、CUDA Toolkit と nvcc、CUDA/cuDNN/TensorRT/VPI/OpenCV の開発ファイル、ビルドおよびデバッグツール、NVIDIA サンプル、テストパッケージを備えたターゲット側開発環境を提供します。

注記

これは OpenEmbedded/Yocto システムであり、NVIDIA SDK Manager によってインストールされる Ubuntu ルートファイルシステムではありません。パッケージ管理、ファイルシステムの内容、およびデスクトップ環境は JetPack Ubuntu とは異なります。

前提条件

次のものを準備します:

  • x86_64 Linux ホスト PC(できれば物理マシンの Ubuntu または Debian)
  • 少なくとも 16 GB の RAM(32 GB 以上を推奨)
  • 高速なローカル SSD と安定したインターネット接続
  • 対応する Jetson Orin NX または Orin Nano モジュールを搭載した reComputer Super
  • ホスト PC に直接接続された USB Type-C データケーブル
  • ホストパッケージのインストールとフラッシュ作業のための sudo 権限
警告

ホスト PC 上に 少なくとも 400 GB の空きディスク容量 を確保してください。Yocto のダウンロード、共有状態キャッシュ、一時ビルドファイル、ルートファイルシステム、および展開されたフラッシュパッケージは、数百ギガバイトを消費する可能性があります。ホストローカル SSD の使用を強く推奨します。

一般的に必要となるホストパッケージをインストールします:

sudo apt update
sudo apt install -y \
gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio \
python3 python3-pip python3-pexpect python3-git python3-jinja2 \
xz-utils debianutils iputils-ping libegl1-mesa libsdl1.2-dev \
pylint xterm zstd liblz4-tool file locales \
gdisk parted udev udisks2

BitBake がホストディストリビューションが非対応であると報告した場合、ホストの検証警告を無視せず、Yocto がサポートする Linux ホストを使用してください。

このガイドで使用するモジュール SKU

reComputer Super J401 は、次の P3767 モジュール SKU をサポートします:

--module-sku完全なモジュール番号Jetson モジュール
0000P3767-0000Jetson Orin NX 16GB
0001P3767-0001Jetson Orin NX 8GB
0003P3767-0003Jetson Orin Nano 8GB
0004P3767-0004Jetson Orin Nano 4GB

このガイドでは 0000 を使用します。キャリアボードとモジュール SKU の組み合わせごとに、必ず別々のビルドディレクトリを使用してください。

Seeed Yocto リポジトリをクローンする

クリーンなワークスペースを作成し、master ブランチをクローンします:

mkdir -p ~/work/jetson-yocto
cd ~/work/jetson-yocto

git clone \
--branch master \
--single-branch \
https://github.com/jjjadand/seeed-tegra-demo-distro.git \
tegra-demo-distro

cd tegra-demo-distro

メインリポジトリには、Seeed のメタデータとヘルパースクリプトが含まれています。prepare-workspace.sh は、固定された OpenEmbedded および OE4T レイヤーを Git サブモジュールとして初期化します。

all を使って完全な開発イメージをビルドする

最初のビルドには build.sh all を使用することを推奨します。これはメタデータを検証し、Seeed のデバイスツリーをビルドし、ブートファイルをチェックし、完全なイメージと tegraflash アーカイブを順番にビルドします。

ビルドディレクトリを準備する

./scripts/seeed/prepare-workspace.sh \
--machine recomputer-orin-super-j401 \
--module-sku 0000 \
--build-dir build-seeed-super-j401-sku0000 \
--cache-dir "$HOME/.cache/yocto-seeed"

共有キャッシュは、ダウンロードと sstate をビルドディレクトリの外側に保持し、後続のビルドで再利用できるようにします。

アクティブなビルドディレクトリ、キャリアボード、およびモジュール SKU を確認します:

./scripts/seeed/build.sh current \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401

出力は次のようになっている必要があります:

Machine:   recomputer-orin-super-j401
Module SKU: 0000
警告

表示されている MACHINE またはモジュール SKU がハードウェアと一致しない場合は、先に進まないでください。このビルドディレクトリを別のキャリアボードやモジュール SKU に再利用しないでください。

完全ビルドを実行する

ターゲット側開発イメージをビルドします:

./scripts/seeed/build.sh all \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401 \
--image seeed-image-jetson-development

最初のビルドでは多数のコンポーネントをダウンロードしてコンパイルするため、数時間かかる場合があります。メタデータ検証、デバイスツリーコンパイル、ブートファイルチェック、またはイメージビルドが失敗すると、このコマンドは直ちに停止します。

4 つのステージがすべて正常に完了すると、ターミナル出力は次のようになります:

ビルドが成功した後、deploy ディレクトリは次の場所になります:

build-seeed-super-j401-sku0000/tmp/deploy/images/recomputer-orin-super-j401/

生成される重要なファイルには次のものが含まれます:

seeed-image-jetson-development-recomputer-orin-super-j401.rootfs.ext4
seeed-image-jetson-development-recomputer-orin-super-j401.rootfs.manifest
seeed-image-jetson-development-recomputer-orin-super-j401.rootfs.spdx.json
seeed-image-jetson-development-recomputer-orin-super-j401.rootfs.testdata.json
seeed-image-jetson-development-recomputer-orin-super-j401.rootfs.tegraflash-tar.zst

.tegraflash-tar.zst ファイルは、フラッシュに使用される自己完結型アーカイブです。

フラッシュディレクトリを準備する

開発イメージのフラッシュアーカイブを展開して検証します:

./scripts/seeed/prepare-flash.sh \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401 \
--image seeed-image-jetson-development \
--output-dir "$HOME/seeed-flash-recomputer-orin-super-j401-sku0000"

ヘルパーはモジュール SKU を検証し、rootfs イメージ、DTB、BPMP DTB、pinmux、パッド電圧設定、およびフラッシュスクリプトが存在することを確認します。その後、準備されたディレクトリと、次に実行すべき正確なコマンドを表示します。

ヒント

ホストのローカル SSD 上の新規または空の出力ディレクトリを使用してください。フラッシュパッケージを Jetson ターゲットドライブ上に展開しないでください。

reComputer Super を強制リカバリモードにする

  1. reComputer Super の電源を切ります。
  2. reComputer Super のリカバリスイッチを RESET 位置に設定します。
  3. 電源を接続します。
  4. USB Type-C デバイス/デバッグポートを、データ通信対応ケーブルで Linux ホストに接続します。
  5. ホスト PC 上で、リカバリモードを確認します:
lsusb -d 0955:

このガイドで使用する Orin NX 16GB モジュールの場合、出力には次のようなデバイスが含まれている必要があります:

0955:7323 NVIDIA Corp. APX

その他の対応 Super モジュールでは、異なる USB プロダクト ID が使用されます:

モジュールリカバリ USB ID
Orin NX 16GB0955:7323
Orin NX 8GB0955:7423
Orin Nano 8GB0955:7523
Orin Nano 4GB0955:7623

NVIDIA APX デバイスが表示されるまで、フラッシュを開始しないでください。

Yocto イメージをフラッシュする

準備したディレクトリから生成済みフラッシャーを実行します:

cd "$HOME/seeed-flash-recomputer-orin-super-j401-sku0000"
sudo ./initrd-flash

このスクリプトは、一時的な initrd フラッシャーを USB 経由で起動し、ターゲットの NVMe ドライブをホストに公開し、パーティションを書き込み、最終的なデバイスステータスを取得します。実行中は USB や電源を切断しないでください。

フラッシュが成功すると、次のような出力で終了します:

[OK: /dev/sdX]
Final status: SUCCESS
Successfully finished

一時的なホスト側ブロックデバイス名は動的に割り当てられます。常に /dev/sdb/dev/sdc になると想定しないでください。

初回起動

フラッシュコマンドが正常に完了したら:

  1. USB データケーブルを取り外します。
  2. リカバリスイッチを RESET から通常の位置に戻します。
  3. 数秒間デバイスの電源を切ります。
  4. HDMI ディスプレイを接続し、reComputer Super の電源を再度入れます。

Yocto デスクトップは、フラッシュされた NVMe ドライブから起動するはずです:

開発イメージでは、初期状態では空のパスワードで root としてローカルログインできます。すぐにパスワードを設定してください:

passwd

ターゲット側開発環境を確認します:

nvcc --version
gcc --version
cmake --version

test -f /usr/local/cuda-13.2/include/cuda.h
test -f /usr/include/cudnn.h
test -f /usr/include/NvInfer.h
test -f /opt/nvidia/vpi4/include/vpi/VPI.h
pkg-config --modversion opencv4

詳細なパラメータ付きビルドコマンド

前のセクションでは、最初のビルドに推奨される all を使用しました。デバッグや特定ステージの再ビルドには、同じワークフローを明示的に実行します:

# 1. Validate metadata and print the selected BSP variables
./scripts/seeed/build.sh metadata \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401 \
--image seeed-image-jetson-development

# 2. Build the Seeed DTB and DTBO files
./scripts/seeed/build.sh dtb \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401 \
--image seeed-image-jetson-development

# 3. Install and verify the custom BCT, pinmux, and boot files
./scripts/seeed/build.sh bootfiles \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401 \
--image seeed-image-jetson-development

# 4. Build the complete root filesystem and tegraflash archive
./scripts/seeed/build.sh image \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401 \
--image seeed-image-jetson-development

ルートファイルシステムがすでにビルド済みで、tegraflash アーカイブだけを再生成する必要がある場合は、次を使用します:

./scripts/seeed/build.sh flash-package \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401 \
--image seeed-image-jetson-development

オプション:x86_64 クロス開発 SDK をビルドする

フラッシュ済みの開発イメージは、すでに Jetson 上での直接コンパイルをサポートしています。x86_64 PC からターゲット向けにアプリケーションをクロスコンパイルする必要がある場合にのみ、ホスト SDK をビルドしてください:

./scripts/seeed/build.sh sdk \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401 \
--image seeed-image-jetson-development

生成された SDK インストーラは次の場所に配置されます:

build-seeed-super-j401-sku0000/tmp/deploy/sdk/

このオプションのインストーラは、Jetson イメージのビルドやデバイスのフラッシュには必須ではありません。

トラブルシューティング

ビルドディレクトリが誤ったマシンまたは SKU を示している

prepare-workspace.sh を使って新しいビルドディレクトリを作成してください。キャリアボードやモジュール SKU を切り替えるために、既存のビルドディレクトリを編集しないでください。

フラッシュアーカイブが見つからない

ビルドとフラッシュ準備の両方に、同じイメージ名が渡されていることを確認してください:

seeed-image-jetson-development

prepare-flash.sh のデフォルトは demo-image-full であるため、--image seeed-image-jetson-development を省略すると、誤ったアーカイブを探すことになります。

フラッシュ処理が Waiting for USB storage device flashpkg で止まる

この時点では、ホストは Jetson の initrd が一時的な USB マスストレージデバイスを公開するのを待っています。USB ケーブルを確認し、マザーボード上の USB ポートを使用し、不要な USB ストレージデバイスを取り外し、lsusb で Jetson が引き続き認識されていることを確認してください。

参考資料

Seeed Studio の製品をお選びいただきありがとうございます。技術サポートや製品に関するディスカッションには、以下のチャネルをご利用ください:

Loading Comments...