Jetson Orin Nano からはISP (Image Signal Processor)が搭載されJp6からはArgus APIなしでCPUの負荷が減少し、カメラの転送が改善されました。
JetPack6.0から起動方法が大きく変わり、Jetson Orin Nano SuperやSDKマネージャーやSDカードによるブートローダー更新などJetPack6.2に対応していることを前提とします。
NVIDIAのSDカードをSDカードのイメージをダウンロードし、解凍しイメージをRaspberry Pi ImagerなどでSDカードに書き込みます。
JetPack6.2 Jetson Orin Nano Super SDカードイメージ入手先
Jetson Orin Nano 開発者キットにDisplayポートでディスプレイに繋ぎ、キーボード、マウス、LANケーブルでネットにつなげてSDカードを挿入して電源を投入します。
画面に従い設定、同意してOSをインストールします。初めは、id jetson,パスワードはjetsonで良いでしょう。
なぜかブラウザがインストールして起動しないので、ブラウザから参照するため、ヘッドレスで作業します。
Jetson Orin Nano (Super)のターミナルでIPアドレスを調べて
ifconfig -a
Ubuntuパソコンをお使いなら以下でJetson Orin NanoのIPアドレスを調べます。
ネットワークインターフェースをしらべる。
ip link show
または
ip addr show
で確認する。
loはループバック、enp3s0は有線LAN、wlp2s0はWi-Fi
Ubuntu PCから以下を実行するとJetson Orin NanoのIPアドレスを見つけることができます。
sudo apt update
sudo apt install arp-scan
sudo arp-scan --interface=enp3s0 192.168.0.0/24
任意のPCターミナル(Teratermなど)からsshで接続します。
ssh jetson@192.168.xx.xx
再起動後、スクリプトを実行します。
以下のファイルをホームディレクトリにダウンロードします。
wget -O install.sh \
https://raw.githubusercontent.com/FaBoPlatform/Jetson_script/main/jetracer/orin_nano/6.2/install.sh
ファイルの中身を確認します。危険なコマンドがないことを確認します。
cat ./install.sh
実行権限を与えます。
chmod +x install.sh
インストールします。
sudo ./install.sh
再起動します。
sudo reboot
Jetson Orin NanoをLANなどに繋ぎ、ターミナルでトークンを調べて
jupyter server list
トークンだけをコピー
jetson@jetson-desktop:~$ jupyter server list
Currently running servers:
http://jetson-desktop:8888/?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx :: /
上記コマンドからトークンをメモします。
トークンによりjupyter labのパスワードを設定
ブラウザから192.168.xx.xx:8888などで起動するとJupyterのパスワードを設定します。
さきほど調べたトークンとパスワードを入力してパスワード登録を完了し、jupyter labにログインします。
Jupyter labのターミナルを開き、カメラが認識、起動しないので希望のカメラを設定(例:IMX219 CAMERA Dual)してSave,rebootします。
sudo /opt/nvidia/jetson-io/jetson-io.py
Configure Jetson 24pin CSI Connector を選択します。
Jetson Expansion Header Tool ===================
| |
| |
| Select one of the following: |
| |
| Configure Jetson 40pin Header |
| Configure Jetson 24pin CSI Connector |
| Configure Jetson M.2 Key E Slot |
| Exit
Configure for compatible hardwareを選択します。
=================== Jetson Expansion Header Tool ===================
| |
| |
| 3.3V ( 1) .. ( 2) i2c3 |
| i2c3 ( 3) .. ( 4) GND |
| GND ( 7) .. ( 8) NA |
| NA ( 9) .. ( 10) GND |
| GND ( 13) .. ( 14) NA |
| NA ( 15) .. ( 16) GND |
| GND ( 19) .. ( 20) NA |
| NA ( 21) .. ( 22) GND |
| GND ( 23) .. ( 24) GND |
| |
| |
| Jetson 24pin CSI Connector: |
| |
| Configure for compatible hardware |
| Back
使用するカメラを選択します。(選択例:IMX219 Dual)
=================== Jetson Expansion Header Tool ===================
| |
| |
| Select one of the following options: |
| |
| Camera IMX219 Dual |
| Camera IMX219-A |
| Camera IMX219-A and IMX477-C |
| Camera IMX219-C |
| Camera IMX477 Dual |
| Camera IMX477 Dual 4 lane |
| Camera IMX477-A |
| Camera IMX477-A and IMX219-C |
| Camera IMX477-C |
| |
| Back
選択して、保存と再起動を選びます。
Jupyter labのファイルアップロードができない場合、フォルダはアップロードできるように所有者、グループを変更します。下の例はjetraerディレクトリです。
sudo chown -R jetson:jetson jetracer
JetRacerとしてSDカードを学習から走行まで、一通り確認します。すべてを確認したら。
今度はSSDからコピーできるようにします。
電源を一旦切りSSDをJetson Orin Nano (Super)開発者キット裏面のM.2 PCIeに取り付け、接続します。
再びSDカードを挿入したまま起動。
ターミナルを開き、SSDが認識されているかを確認します。
lspci
正常に接続されていれば、SSDのメーカー、型番が出てきます。
jetson@jetson-desktop:~$ lspci
(省略)
0004:01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM951/PM951 (rev 01)
(省略)
ディスクのパーティション構造やマウントポイントを調べます。
lsblk -pn
SSDをext4でフォーマットします。
上記で調べたマウントポイントを指定してSSDをフォーマットします。
sudo mkfs.ext4 /dev/nvme0n1
ジャーナルはデフォルトでEnterを押す。
jetson@jetson-desktop:~$ sudo mkfs.ext4 /dev/nvme0n1
mke2fs 1.46.5 (30-Dec-2021)
/dev/nvme0n1 contains a ext4 file system
created on Thu Aug 28 12:24:53 2025
Proceed anyway? (y,N) y
Discarding device blocks: done
Creating filesystem with 31258710 4k blocks and 7815168 inodes
Filesystem UUID: 24a9c1b4-fd89-4f58-9d99-6064bb262a9f
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (131072 blocks):
done
Writing superblocks and filesystem accounting information: done
/dev/mmcblk0は、SDカード、/dev/nvme0n1 がSSDになります。
以下により現在は、/dev/mmcblk0p1が/ ルートであり/dev/mmcblk0p10 はEFIのパーティション(part)であることが分かります。
jetson@jetson-desktop:~$ lsblk -pn
/dev/loop0 7:0 0 4K 1 loop /snap/bare/5
/dev/loop1 7:1 0 68.9M 1 loop /snap/core22/2086
/dev/loop2 7:2 0 231.5M 1 loop /snap/firefox/6696
/dev/loop3 7:3 0 493.5M 1 loop /snap/gnome-42-2204/201
/dev/loop4 7:4 0 91.7M 1 loop /snap/gtk-common-themes/1535
/dev/loop5 7:5 0 44.2M 1 loop /snap/snapd/25205
/dev/loop6 7:6 0 16M 1 loop
/dev/mmcblk0 179:0 0 59.5G 0 disk
├─/dev/mmcblk0p1 179:1 0 58G 0 part /
├─/dev/mmcblk0p2 179:2 0 128M 0 part
├─/dev/mmcblk0p3 179:3 0 768K 0 part
├─/dev/mmcblk0p4 179:4 0 31.6M 0 part
├─/dev/mmcblk0p5 179:5 0 128M 0 part
├─/dev/mmcblk0p6 179:6 0 768K 0 part
├─/dev/mmcblk0p7 179:7 0 31.6M 0 part
├─/dev/mmcblk0p8 179:8 0 80M 0 part
├─/dev/mmcblk0p9 179:9 0 512K 0 part
├─/dev/mmcblk0p10 179:10 0 64M 0 part /boot/efi
├─/dev/mmcblk0p11 179:11 0 80M 0 part
├─/dev/mmcblk0p12 179:12 0 512K 0 part
├─/dev/mmcblk0p13 179:13 0 64M 0 part
├─/dev/mmcblk0p14 179:14 0 400M 0 part
└─/dev/mmcblk0p15 179:15 0 479.5M 0 part
/dev/zram0 252:0 0 635M 0 disk [SWAP]
/dev/zram1 252:1 0 635M 0 disk [SWAP]
/dev/zram2 252:2 0 635M 0 disk [SWAP]
/dev/zram3 252:3 0 635M 0 disk [SWAP]
/dev/zram4 252:4 0 635M 0 disk [SWAP]
/dev/zram5 252:5 0 635M 0 disk [SWAP]
/dev/nvme0n1 259:0 0 119.2G 0 disk
SDカードのイメージをSSDにコピーします。マウントポイントを間違わないでください。SDカードのイメージなので、ここでは説明しませんが、SDカードの領域なのでエキスパンドしてSSDの領域を広げてください。
sudo dd if=/dev/mmcblk0 of=/dev/nvme0n1 bs=4M status=progress
念のため実行します。
sync
コピーされたのを確認します。同じ構造のコピーができているはずです。
jetson@jetson-desktop:~$ lsblk -pn
/dev/loop0 7:0 0 4K 1 loop /snap/bare/5
/dev/loop1 7:1 0 68.9M 1 loop /snap/core22/2086
/dev/loop2 7:2 0 231.5M 1 loop /snap/firefox/6696
/dev/loop3 7:3 0 493.5M 1 loop /snap/gnome-42-2204/201
/dev/loop4 7:4 0 91.7M 1 loop /snap/gtk-common-themes/1535
/dev/loop5 7:5 0 44.2M 1 loop /snap/snapd/25205
/dev/loop6 7:6 0 16M 1 loop
/dev/mmcblk0 179:0 0 59.5G 0 disk
├─/dev/mmcblk0p1 179:1 0 58G 0 part /
├─/dev/mmcblk0p2 179:2 0 128M 0 part
├─/dev/mmcblk0p3 179:3 0 768K 0 part
├─/dev/mmcblk0p4 179:4 0 31.6M 0 part
├─/dev/mmcblk0p5 179:5 0 128M 0 part
├─/dev/mmcblk0p6 179:6 0 768K 0 part
├─/dev/mmcblk0p7 179:7 0 31.6M 0 part
├─/dev/mmcblk0p8 179:8 0 80M 0 part
├─/dev/mmcblk0p9 179:9 0 512K 0 part
├─/dev/mmcblk0p10 179:10 0 64M 0 part /boot/efi
├─/dev/mmcblk0p11 179:11 0 80M 0 part
├─/dev/mmcblk0p12 179:12 0 512K 0 part
├─/dev/mmcblk0p13 179:13 0 64M 0 part
├─/dev/mmcblk0p14 179:14 0 400M 0 part
└─/dev/mmcblk0p15 179:15 0 479.5M 0 part
/dev/zram0 252:0 0 635M 0 disk [SWAP]
/dev/zram1 252:1 0 635M 0 disk [SWAP]
/dev/zram2 252:2 0 635M 0 disk [SWAP]
/dev/zram3 252:3 0 635M 0 disk [SWAP]
/dev/zram4 252:4 0 635M 0 disk [SWAP]
/dev/zram5 252:5 0 635M 0 disk [SWAP]
/dev/nvme0n1 259:0 0 119.2G 0 disk
├─/dev/nvme0n1p1 259:1 0 58G 0 part
├─/dev/nvme0n1p2 259:2 0 128M 0 part
├─/dev/nvme0n1p3 259:3 0 768K 0 part
├─/dev/nvme0n1p4 259:4 0 31.6M 0 part
├─/dev/nvme0n1p5 259:5 0 128M 0 part
├─/dev/nvme0n1p6 259:6 0 768K 0 part
├─/dev/nvme0n1p7 259:7 0 31.6M 0 part
├─/dev/nvme0n1p8 259:8 0 80M 0 part
├─/dev/nvme0n1p9 259:9 0 512K 0 part
├─/dev/nvme0n1p10 259:10 0 64M 0 part
├─/dev/nvme0n1p11 259:11 0 80M 0 part
├─/dev/nvme0n1p12 259:12 0 512K 0 part
├─/dev/nvme0n1p13 259:13 0 64M 0 part
├─/dev/nvme0n1p14 259:14 0 400M 0 part
└─/dev/nvme0n1p15 259:15 0 479.5M 0 part
マウントしてSDカード側からSSD側へアクセスできるようにします。
sudo mount /dev/nvme0n1p1 /mnt
以下のファイルを編集し起動ディスクをしています。
sudo vi /mnt/boot/extlinux/extlinux.conf
設定ではJetsonIOから起動するようになっており、LABEL JetsonIOの段落にあるSDカードのパスをSSDに変更します。
APPEND ${cbootargs} root=/dev/nvme0n1p1の部分を変更したします。
jetson@jetson-desktop:~$ cat /mnt/boot/extlinux/extlinux.conf
TIMEOUT 30
DEFAULT JetsonIO
MENU TITLE L4T boot options
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
INITRD /boot/initrd
APPEND ${cbootargs} root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 firmware_class.path=/etc/firmware fbcon=map:0 nospectre_bhb video=efifb:off console=tty0
# When testing a custom kernel, it is recommended that you create a backup of
# the original kernel and add a new entry to this file so that the device can
# fallback to the original kernel. To do this:
#
# 1, Make a backup of the original kernel
# sudo cp /boot/Image /boot/Image.backup
#
# 2, Copy your custom kernel into /boot/Image
#
# 3, Uncomment below menu setting lines for the original kernel
#
# 4, Reboot
# LABEL backup
# MENU LABEL backup kernel
# LINUX /boot/Image.backup
# INITRD /boot/initrd
# APPEND ${cbootargs}
LABEL JetsonIO
MENU LABEL Custom Header Config: <CSI Camera IMX219 Dual>
LINUX /boot/Image
FDT /boot/dtb/kernel_tegra234-p3768-0000+p3767-0005-nv-super.dtb
INITRD /boot/initrd
APPEND ${cbootargs} root=/dev/nvme0n1p1 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 firmware_class.path=/etc/firmware fbcon=map:0 nospectre_bhb video=efifb:off console=tty0
OVERLAYS /boot/tegra234-p3767-camera-p3768-imx219-dual.dtbo
アンマウントします。
sudo umount /mnt
電源を停止する。
sudo poweroff
SDカードを抜いて再び電源を投入する。
SDカードなしでもSSDだけで起動できたはずです。
今後の課題
必要に応じてGUIを無効化(メモリ節約)
Jetson Orin Nanoを学習に使うなら一時的にカメラサービスを止める。
ZRAMのメモリを最適化(CPUの負荷を調整、学習時と推論時の切り分けなど)
スワップ優先度でジッタの防止(今のところ、デフォルトで大丈夫そう)
レースの課題
本番では遅延対策のため、jupyterは使わない。



