💻

Jetson Orin Nano用のM.2-SSDにOSイメージを焼く方法

2023/09/18に公開

大分前ですが、発売と同時にJetson Orin Nanoを入手しました。

SDカードは書き込み・読み込みが相当遅いので、最初からM.2 SSDで動作させようと思ったところ、OSインストールから躓いてました。

最新の環境では問題ないかもしれないですが、当時の成功したやり方を残しておきます。このやり方は、ちゃんと公式サイトにあるやり方です。

ポイントは以下です。

  1. OS作成はUbuntuマシンでしかできない。
  2. SDKManagerだと失敗していた(最新版は不明)
  3. 公式サイトにちゃんと書いてあるやり方。
  4. SDKMangerではなく、コマンドラインからCUIでやる。

私の場合は、2番で躓いてました。まさかできないとは思わないよね?たぶんSDKManagerのバグだったと思います。

https://docs.nvidia.com/jetson/archives/r35.3.1/DeveloperGuide/text/IN/QuickStart.html
https://docs.nvidia.com/jetson/archives/r35.3.1/DeveloperGuide/text/IN/QuickStart.html#jetson-modules-and-configurations

リソースからJetson Linux 35.3.1を作成

  1. 準備
> sudo apt-get install qemu-user-static sshpass abootimg nfs-kernel-server libxml2-utils
  1. リソースは以下のURLから入手できる

https://developer.nvidia.com/embedded/jetson-linux-r3531

リソースをダウンロード

> wget https://developer.nvidia.com/downloads/embedded/l4t/r35_release_v3.1/release/jetson_linux_r35.3.1_aarch64.tbz2
> wget https://developer.nvidia.com/downloads/embedded/l4t/r35_release_v3.1/release/tegra_linux_sample-root-filesystem_r35.3.1_aarch64.tbz2
> wget https://developer.nvidia.com/downloads/embedded/l4t/r35_release_v3.1/overlay_xusb_35.3.1.tbz2

展開する。overlay_xusb_35.3.1.tbz2は展開してリソースにマージしている。

> export L4T_RELEASE_PACKAGE=jetson_linux_r35.3.1_aarch64.tbz2
> export SAMPLE_FS_PACKAGE=tegra_linux_sample-root-filesystem_r35.3.1_aarch64.tbz2
> export BOARD=jetson-orin-nano-devkit

> tar xvf ${L4T_RELEASE_PACKAGE}
> sudo tar xvpf ${SAMPLE_FS_PACKAGE} -C Linux_for_Tegra/rootfs/
> tar xvf overlay_xusb_35.3.1.tbz2

フォルダ内にあるシェルを実行してイメージを作成する

> cd Linux_for_Tegra/
> sudo ./apply_binaries.sh
> sudo ./tools/l4t_flash_prerequisites.sh

Jetson Orin NanoとホストPC(Ubuntu)の接続と起動

  1. "FC REC"と"GND"を結線してショートさせる
  2. USBケーブルでホストPCとJetsonを接続
  3. Jetsonの電源ON (リカバリモードで起動)

開発者キットが強制リカバリーモードであるかどうかを確認するには、以下の手順で確認

https://docs.nvidia.com/jetson/archives/r35.3.1/DeveloperGuide/text/IN/QuickStart.html#to-determine-whether-the-developer-kit-is-in-force-recovery-mode

プロダクトIDとか製品IDを確認して、ちゃんとPCに認識されていることを確認する。

> lsusb
Bus xxx Device xxx: ID 0955:7523 NVIDIA Corp. APX

これでJetsonをデバイスとしてPCに接続した状態になる。

Jetson LinuxをJetson Orin Nanoにフラッシュする

NVMe(M.2 SSD)にフラッシュする場合、オプションで--external-device nvme0n1p1を指定する。ここをSDカードに変えることもできる。

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 \
  -c tools/kernel_flash/flash_l4t_external.xml -p "-c bootloader/t186ref/cfg/flash_t234_qspi.xml" \
  --showlogs --network usb0 jetson-orin-nano-devkit internal

しばらくすると、Flash is successfulと表示されてJetsonがリブートされれば成功。モニタとマウスを繋いで、ここから操作できたはず。リブートしてOS起動すれば、PCとの接続は解除してよい。

:
Sha1 checksum matched for /mnt/internal/gpt_secondary_3_0.bin
Writing /mnt/internal/gpt_secondary_3_0.bin (16896 bytes) into  /dev/mtd0:67091968
Copied 16896 bytes from /mnt/internal/gpt_secondary_3_0.bin to address 0x03ffbe00 in flash
[ 212]: l4t_flash_from_kernel: Successfully flash the qspi
[ 212]: l4t_flash_from_kernel: Flashing success
[ 212]: l4t_flash_from_kernel: The device size indicated in the partition layout xml is smaller than the actual size. This utility will try to fix the GPT.
Flash is successful
Reboot device
Cleaning up...
Log is saved to Linux_for_Tegra/initrdlog/flash_3-1_0_20230730-235735.log 

JetPack 5.1インストール

以下は、OSインストール後、Jetson上からやったほうが早そう。

https://docs.nvidia.com/jetson/jetpack/install-jetpack/index.html

sudo apt update
sudo apt install nvidia-jetpack

DeepStream SDKインストール

https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Quickstart.html

Discussion