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

Orin Nano DevKit から reComputer Classic へ DIY BSP を作成する

この wiki では、NVIDIA Jetson Orin Nano Developer Kit から完全な開発環境をクローンし、Seeed reComputer Classic(J4011/J4012、ボード設定 recomputer-orin-j401 に書き込めるハイブリッド BSP を構築し、フラッシュを完了する方法を説明します。

これは同一キャリア向け DIY BSP フローを拡張したものです。ソースとターゲットの両方が Seeed ボードの場合は、代わりに Creating a Custom BSP Package from Jetson Development Environment を使用してください。

関連ドキュメント:

このガイドでは JetPack 6.2 / L4T 36.4.3 を例として使用します(モジュール SKU 0005 = Orin Nano 8GB)。

何を構築しているか

目的成果物用途
A. 同一キャリアクローンmfi_jetson-orin-nano-devkit-nvme.tar.gzDevKit を完全な環境クローンで再フラッシュする
B. Classic バンドルmfi_recomputer-orin-j401.tar.gzClassic J4011 をフラッシュ:J401 ボードレベル QSPI + DevKit の完全な APP(/home を含む)
C. 安全なフォールバック公式 J401 BSP + /home のみ移行ハイブリッドの結果が異常な場合に使用
危険

ソースが Classic の場合でも、DevKit 用パッケージ mfi_jetson-orin-nano-devkit-nvme を Classic に直接フラッシュしないでください。
mfi ディレクトリ内の単一の .dtb を編集するだけでボード適合が完了したとみなさないでください。

前提条件

ハードウェア

  • ソース:Orin Nano Developer Kit(この例ではモジュール SKU 0005 = Orin Nano 8GB、NVMe ブートを使用)
  • ターゲット:Seeed reComputer Classic J4011/J4012(J401 キャリア;モジュールも可能であれば 0005 が望ましい)
  • ホスト:Ubuntu 22.04 x86_64、USB Type-C ケーブル(フラッシュポート)
  • ディスク:100GB 以上の空き容量を確保(バックアップ + 2 つの mfi + スナップショット)

ホスト側の依存パッケージ

sudo apt-get update -y
sudo apt-get install -y \
build-essential flex bison libssl-dev \
sshpass abootimg nfs-kernel-server \
libxml2-utils qemu-user-static

バックアップ / フラッシュの前に:

sudo systemctl stop udisks2.service
sudo service nfs-kernel-server start
lsusb | grep 0955:7523 # must show NVIDIA Corp. APX

ボード比較(この例)

項目DevKitClassic J4011
board-namejetson-orin-nano-devkit-nvmerecomputer-orin-j401
設定ファイルp3768-0000-p3767-0000-a0-nvme.confrecomputer-orin-j401.conf
Pinmux...-dp-a03(DP)...-hdmi-a03(HDMI)
オーバーレイDevKit 動的オーバーレイなどtegra234-dcb-p3767-0000-hdmi.dtbo + tegra234-p3767-camera-p3768-imx219-dual-seeed.dtbo
SKU0005 メイン DTB...-0005-nv(-super).dtb引き続き使用 tegra234-p3768-0000+p3767-0005-nv-super.dtb

バックアップされた board_spec の例:

3767-300-0005-V.2-1-1-jetson-orin-nano-devkit-nvme-
危険

reComputer Classic シリーズは、MAXN Super モードをサポートするには冷却性能が不十分です。Classic デバイスに JetPack 6.2 をフラッシュした場合、MAXN を有効にしないでください

1. Linux_for_Tegra ワークスペースの準備

Creating a Custom BSP Package from Jetson Development Environment の表から Seeed L4T 作業パッケージをダウンロードします(この例では JetPack 6.2 / L4T 36.4.3 plus)。

sudo tar xpf L4T_36.4.3_plus.tar.gz
# Adjust the archive name to match your download

cd Linux_for_Tegra/
sudo ./apply_binaries.sh
cd ..

export ARCH=arm64
export CROSS_COMPILE="$PWD/aarch64--glibc--stable-2022.08-1/bin/aarch64-buildroot-linux-gnu-"
export PATH="$PWD/aarch64--glibc--stable-2022.08-1/bin:$PATH"
export INSTALL_MOD_PATH="$PWD/Linux_for_Tegra/rootfs/"

cd Linux_for_Tegra/source
./nvbuild.sh
./do_copy.sh
./nvbuild.sh -i

検証:

test -f Linux_for_Tegra/recomputer-orin-j401.conf
test -f Linux_for_Tegra/jetson-orin-nano-devkit-nvme.conf
ls Linux_for_Tegra/kernel/dtb/tegra234-j401-*-recomputer.dtb
ls Linux_for_Tegra/kernel/dtb/tegra234-dcb-p3767-0000-hdmi.dtbo

2. DevKit の完全な環境をバックアップする

2.1 ソースデバイスをリカバリモードにする

DevKit のフラッシュポートを USB Type-C データケーブルでホストに接続し、リカバリモードに入れます。ホスト側で lsusb を実行すると、0955:7523 APX が表示されるはずです。

リカバリモードへの手順については、Flash JetPack to a Selected Product を参照してください。

バックアップ中、デバイスは一時的に 0955:7035(Linux for Tegra / initrd)に切り替わる場合があります。これは正常です。

2.2 バックアップコマンド

cd Linux_for_Tegra
sudo ./tools/backup_restore/l4t_backup_restore.sh \
-e nvme0n1 -b -c jetson-orin-nano-devkit-nvme
警告

ソースが DevKit の場合、最初のバックアップに recomputer-orin-j401 を使用しないでください。board_spec と後続のベースラインが破損します。

2.3 検証

ls -lah tools/backup_restore/images/
head -5 tools/backup_restore/images/nvpartitionmap.txt

次の点を確認します:

  • board_specjetson-orin-nano-devkit-nvme が含まれている
  • nvme0n1p1.tar.zst(または後で変換された大きな APP)が GB 単位のサイズ である
  • QSPI0.img が存在する(これは DevKit の QSPI であり、ハイブリッドでは Classic の QSPI として再利用してはいけません)

推奨:すぐにスナップショットを作成します:

sudo cp -a tools/backup_restore/images ~/backup_images_dk_sku0005

3. DevKit 同一キャリア DIY BSP の構築(任意)

デバイスを再度 APX 状態にします。ホスト側で lsusb を実行すると 0955:7523 APX が表示されるはずです:

cd Linux_for_Tegra
sudo ./tools/kernel_flash/l4t_initrd_flash.sh \
--use-backup-image --no-flash --network usb0 --massflash 5 \
jetson-orin-nano-devkit-nvme internal

生成物:

  • mfi_jetson-orin-nano-devkit-nvme/
  • mfi_jetson-orin-nano-devkit-nvme.tar.gz
危険

これは DevKit の再フラッシュ専用です。このパッケージで Classic をフラッシュしないでください。

4. 必読:QSPI トラップ

--use-backup-image を指定すると、convert_backup_image_to_initrd_flash は次のように配置します:

バックアップ内容配置先
NVMe / APPtools/kernel_flash/images/external/
ソース QSPI0.imgtools/kernel_flash/images/internal/

したがって:

誤ったアプローチ結果
mfi/.../rootfs または 1 つの .dtb だけを編集する効果なし(実際にフラッシュされるのは bak / QSPI)
DevKit をバックアップし、そのまま recomputer-orin-j401 + --use-backup-image を実行依然として DevKit の QSPI(DP pinmux)をフラッシュ;HDMI/USB が正しくない可能性
conf を変更してから --flash-only を実行--flash-only は conf からイメージを再生成 しません

Classic J4011 で本当に異なるのは、recomputer-orin-j401.conf 内の HDMI pinmux + DCB/カメラオーバーレイ です:

PINMUX_CONFIG="tegra234-mb1-bct-pinmux-p3767-hdmi-a03.dtsi"
PMC_CONFIG="tegra234-mb1-bct-padvoltage-p3767-hdmi-a03.dtsi"
OVERLAY_DTB_FILE+=",tegra234-dcb-p3767-0000-hdmi.dtbo,tegra234-p3767-camera-p3768-imx219-dual-seeed.dtbo"
DCE_OVERLAY_DTB_FILE="tegra234-dcb-p3767-0000-hdmi.dtbo"

SKU 0005 の場合、メイン DTB ファイル名は依然として NVIDIA の *-0005-nv-super.dtb です。*-0000-recomputer.dtb へ強制的に切り替えないでください(このパスは NX 16GB 用です)。

5. ハイブリッド B':Classic J4011 バンドルを構築する

コアとなる考え方:

  1. APP:DevKit バックアップ(完全なユーザー環境)をそのまま使用する
  2. QSPIrecomputer-orin-j401 で再生成する(--use-backup-image なし
  3. mfi_recomputer-orin-j401 に組み立てる
DevKit backup APP  ──►  external/ (nvme0n1p1_bak.img, etc.)
J401 conf new QSPI ──► internal/ (QSPI shards, not DevKit monolithic QSPI0.img)
└──► mfi_recomputer-orin-j401(.tar.gz)

5.1 APP のみを準備する(DevKit QSPI を削除)

cd Linux_for_Tegra
sudo cp -a ~/backup_images_dk_sku0005 \
tools/backup_restore/images_app_only
sudo rm -f tools/backup_restore/images_app_only/QSPI0.img
sudo sed -i '/qspi/Id' tools/backup_restore/images_app_only/nvpartitionmap.txt

APP のみを initrd フラッシュ用の external イメージに変換します(バックアップツールの convert ステップを使用するか、DevKit mfi パックステップですでに tools/kernel_flash/images/external/ 配下にある大きな APP を再利用します)。

5.2 J401 conf で QSPI を再生成する

デバイスは APX 状態である必要があります。モジュールパラメータはバックアップと一致させてください(この例:3767 / 0005 / 300 / V.2):

cd Linux_for_Tegra
sudo BOARDID=3767 BOARDSKU=0005 FAB=300 BOARDREV=V.2 CHIP_SKU=00:00:00:D5 \
./tools/kernel_flash/l4t_initrd_flash.sh \
--external-device nvme0n1p1 \
-c tools/kernel_flash/flash_l4t_t234_nvme.xml \
-p "-c bootloader/generic/cfg/flash_t234_qspi.xml --no-systemimg" \
--no-flash --massflash 5 --showlogs --network usb0 \
recomputer-orin-j401 internal

ログには HDMI pinmux が表示されている必要があります。例:tegra234-mb1-bct-pinmux-p3767-hdmi-a03

推奨:新しい QSPI を internal に保存します:

sudo cp -a tools/kernel_flash/images/internal ~/j401_qspi_internal_save

5.3 mfi を構成する

最終的なディレクトリ構成は次を満たす必要があります:

パス内容
mfi_recomputer-orin-j401/recomputer-orin-j401.conf存在する
.../tools/kernel_flash/images/internal/新しい J401 QSPI(DevKit のモノリシックな QSPI0.img がない、または DevKit とハッシュが異なる;flash.idx は複数行の分割片であることが多い)
.../tools/kernel_flash/images/external/nvme0n1p1_bak.imgGB 単位のサイズの APP

任意のアーカイブ:

cd Linux_for_Tegra
sudo tar czf mfi_recomputer-orin-j401.tar.gz mfi_recomputer-orin-j401

6. Classic J4011 へのフラッシュ

6.1 ターゲットを APX モードにする

lsusb0955:7523 NVIDIA Corp. APX

6.2 フラッシュコマンド

展開済みディレクトリがすでにローカルに存在する場合は、再度 tar xpf を実行しないでください:

cd Linux_for_Tegra/mfi_recomputer-orin-j401
sudo ./tools/kernel_flash/l4t_initrd_flash.sh \
--flash-only --massflash 1 --network usb0 --showlogs

別の PC に .tar.gz だけ がある場合のみ:

sudo tar xpf mfi_recomputer-orin-j401.tar.gz
cd mfi_recomputer-orin-j401
sudo ./tools/kernel_flash/l4t_initrd_flash.sh \
--flash-only --massflash 1 --network usb0 --showlogs

6.3 フラッシュ中に表示される正常なメッセージ

ログ意味
p3768-0000-p3767-0000-a0.conf: No such file or directory--flash-only でよく見られる;イメージは事前にビルド済みなので続行
rpcbind already running無視して問題なし
blockdev: cannot open /dev/mmcblk0boot0Orin Nano にはそのパーティションがない;通常は無害
RCM-boot + SSH ready通常のフラッシュ開始
DTB ...-0005-nv-super.dtbSKU0005 に対して正しい
複数の internal 行 + Starting to flash to qspiJ401 QSPI をフラッシュ中
tar ... zstd ... nvme0n1p1_bak.imgAPP を復元中(最も時間のかかるステップ;数十分かかる場合があります)
警告

成功完了メッセージが表示されるまで、電源を切ったりケーブルを抜いたりしないでください。

6.4 フラッシュ後の確認(Classic 上)

cat /proc/device-tree/model
ls /boot/kernel_tegra234*.dtb
ls /boot/*.dtbo | grep -E 'hdmi|imx219-dual-seeed' || true

# Whether peripherals actually work (more important than model / dtbo filenames)
xrandr 2>/dev/null | head -20
lsusb | head
ip -br link
ls /boot/*.dtbo 2>/dev/null | head -40
sudo dmesg | grep -iE 'dtb|overlay|hdmi|tegra234' | tail -30

# Whether the original DevKit user environment survived (CUDA example)
nvcc --version
備考

sudo なしでは、dmesgOperation not permitted を報告する場合があります。これは権限の問題なので、sudo を使用してください。

デバイス上:model / DTB

デバイス上:元の DevKit にインストールされていた CUDA は引き続き動作

結果の読み取り方(SKU 0005)

1) /proc/device-tree/model が依然として DevKit を示す — SKU 0005 では正常

例:

NVIDIA Jetson Orin Nano Engineering Reference Developer Kit Super

理由:SKU 0005 の場合、recomputer-orin-j401.conf は NVIDIA の tegra234-p3768-0000+p3767-0005-nv-super.dtb を選択します。tegra234-j401-*-recomputer.dtb には切り替わらないため、model 文字列は依然として公式 DevKit のように見えます。この行だけを見て「誤った DevKit バンドルを書き込んだ」と判断しないでください

2) /boot 配下の DTB ファイル名

よく見られるもの:

/boot/kernel_tegra234-p3768-0000+p3767-0000-nv.dtb
/boot/kernel_tegra234-p3768-0000+p3767-0005-nv.dtb

*-0005-nv-super.dtb というファイル名が見えない場合があります。実際にブートに使われる DTB は、多くの場合 UEFI/QSPI によって選択されます。/boot の一覧はあくまで参考情報です。

3) grep hdmi|imx219-dual-seeed が空 — それ自体は失敗ではない

Hybrid フラッシュ後、/boot/*.dtbo には DevKit バックアップ由来の汎用オーバーレイリストが残っていることがよくあります。tegra234-dcb-p3767-0000-hdmi.dtbo...-imx219-dual-seeed.dtbo見えない場合があります。Seeed の HDMI / カメラ設定の多くは、新しい J401 QSPI / UEFI オーバーレイ経路を通じて有効になります。

4) 「動作しているかどうか」で判断する

チェック項目正常な例
USBハブ、マウス、Bluetooth、USB Ethernet が列挙される(lsusb に複数のデバイスが表示される)
有線 EthernetenP8p1s0 などが UP
Wi‑FiwlP1p1s0UP
ディスプレイデスクトップが動作する、または xrandr に出力がある
ユーザー環境元の DevKit のユーザー、ソフトウェア、データが残っている
CUDAnvcc --version が動作する(この例では 12.6)。APP クローンが無事であることを示す

extlinux.conf を編集すべきタイミング

HDMI / USB / ブートに異常がある場合にのみ/boot/extlinux/extlinux.confLABEL primary の下に次を追加してみてください:

FDT /boot/kernel_tegra234-p3768-0000+p3767-0005-nv-super.dtb

(そのファイルが /boot 配下にない場合は、...-0005-nv.dtb を試すか、まず BSP の kernel/dtb/ からコピーしてください。)

sudo reboot

それでも異常が続く場合は、セクション 7 のプラン A(公式 J401 BSP + /home の移行)を使用してください。

7. プラン A フォールバック(公式ルート)

Hybrid フラッシュ後にパーティション / UEFI / 周辺機器に異常が残る場合:

  1. Seeed の手順に従って 公式 recomputer-orin-j401 BSP をフラッシュします(DevKit の mfi はフラッシュしないでください)。
  2. バックアップ(nvme0n1p1.tar.zst)から /home を展開するか、Migrate /home Data from Jetson Orin Nano Developer Kit to reComputer に従います。
  3. Classic 上で /home を復元し、その後必要に応じてシステムレベルのソフトウェアを再インストールします(/usr/etc、Docker などは別途対応が必要です)。

長所:ボードファームウェアが最もクリーン。短所:/ ディスク全体のクローンではない。

8. 主要パス クイックリファレンス

種類パス(Linux_for_Tegra/ 配下)
DK mfimfi_jetson-orin-nano-devkit-nvme.tar.gz
Classic バンドル mfimfi_recomputer-orin-j401.tar.gz
J401 confrecomputer-orin-j401.conf
HDMI DCBkernel/dtb/tegra234-dcb-p3767-0000-hdmi.dtbo
Seeed デュアル IMX219kernel/dtb/tegra234-p3767-camera-p3768-imx219-dual-seeed.dtbo
J401 DTBkernel/dtb/tegra234-j401-p3768-0000+p3767-*-recomputer.dtb
SKU0005 DTBkernel/dtb/tegra234-p3768-0000+p3767-0005-nv-super.dtb

9. フロー概要

[Host] Extract L4T + apply_binaries + nvbuild


[DevKit APX] backup -c jetson-orin-nano-devkit-nvme

├─► (optional) --use-backup-image → mfi_jetson-orin-nano-devkit-nvme

├─► snapshot backup_images_dk_sku0005
│ │
│ ├─ APP-only (remove QSPI)
│ └─► external APP

└─► [APX] J401 without --use-backup-image → generate QSPI


assemble mfi_recomputer-orin-j401


[Classic APX] --flash-only


check display/USB/NVMe/user environment

10. FAQ

Q: ディレクトリと .tar.gz の両方が存在します。まだ展開する必要がありますか?
A: いいえ。mfi_recomputer-orin-j401/ が存在する場合は、その中に cd して --flash-only を実行してください。

Q: ターゲット Classic モジュールが 0005 ではありません。どうすればよいですか?
A: BOARDSKU を変更し、recomputer-orin-j401.conf 内の p3767_super_overlay に従って一致する DTB を選択し、その後 QSPI を再生成します。

Q: ディスク全体をクローンするのではなく、/home だけを保持したいのですが?
A: プラン A(セクション 7)を使用してください。その方が簡単で信頼性があります。

Q: なぜ DIY BSP wiki の例では recomputer-orin-j401 を使用しているのですか?
A: その例では、ソースとターゲットの両方が Seeed ボードであることを前提としています。ソースが公式 DevKit の場合、バックアップはまず jetson-orin-nano-devkit-nvme を使用し、その後この Hybrid Classic 適応チュートリアルに従う必要があります。

技術サポート & 製品ディスカッション

弊社製品をお選びいただきありがとうございます。弊社は、製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートを提供しています。お好みやニーズに応じて選べる複数のコミュニケーションチャネルをご用意しています。

Loading Comments...