reComputer J4012セットアップ（Jetson Linuxインストール編/JetPack 6.x）


## はじめに

2年前、reComputer J4012にJetson Linuxをインストールする方法を<https://qiita.com/dandelion1124/items/58210e472b3057af97f5>で書いていました。今回、JetPack 6.xを使う機会があったため、最新のインストール方法をまとめました。

## 動作確認環境

- reComputer J4012(Jetson Orin NX 16GB)
- JetPack 6.1

## 1. Jetson Linuxインストール

<https://wiki.seeedstudio.com/reComputer_J4012_Flash_Jetpack/>を参考にJetson Linuxをインストールします。

### 1.1 Force Recovery Mode起動

<https://wiki.seeedstudio.com/reComputer_J4012_Flash_Jetpack/#enter-force-recovery-mode>を参考にして、Force Recovery Modeで起動します。Force Recovery Modeとは大雑把に言うとホストPCからJetsonが外付けストレージとして見えるようなモードのことです。

- reComputer J4012のFC REC、GNDのピンをジャンプワイヤ（メス−メス）で接続します
- USB Type-C、Type-Aケーブルを用意し、USB Type-CをreComputer J4012、Type-Aを母艦PCに接続します
- reComputer J4012の電源を投入します

ホストPCで`lsusb`コマンドを実行して以下のメッセージが表示されればreComputer J4012がForce Recovery Modeで起動できていることがわかります。

```
ID 0955:7323 NVIDIA Corp. APX
```

Force Recovery Modeとして起動したらジャンプワイヤをJetson Orin NXボードから外しておきます。

### 1.2 パッケージインストール

以下のコマンドを実行して、Jetson Linuxインストールに必要なパッケージをインストールします。

```bash
sudo apt install qemu-user-static sshpass abootimg nfs-kernel-server libxml2-utils binutils -y
```

### 1.3 Jetson Linuxインストール

<https://wiki.seeedstudio.com/reComputer_J4012_Flash_Jetpack/#flash-the-device-step-by-step>からイメージファイルをダウンロードします。今回、Jetson Orin NX(16GB)、JetPack 6.1のため、`mfi_recomputer-orin-nx-16g-j401-6.1-36.4.0-2024-12-04.tar.gz`を用いました。


ダウンロード後、以下のコマンドを実行して展開します。

```bash
sudo tar xpf mfi_recomputer-orin-nx-16g-j401-6.1-36.4.0-2024-12-04.tar.gz
```

展開後、以下のコマンドを実行してJetson LinuxをFlashします。

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

Flash完了後、Jetson実機をモニターに接続して、Jetson Linuxの初期設定（アカウント作成など）を行います。

## 2. Jetson Orin NX実機の設定

ここからはJetson実機上で作業を行います。

### 2.1 初期設定

初回起動時にアカウント作成、言語設定、キーボード設定、ネットワーク設定などを行います。最後にChromiumインストールを行うか聞かれるため、インストールする場合はネットワーク設定をしておくとよいでしょう。

### 2.2 開発パッケージインストール

以下のコマンドを実行して開発パッケージをインストールします。

```bash
sudo apt install nvidia-jetpack-dev
```

### 2.3 Dockerインストール

Dockerをインストールします。

```bash
sudo apt install -y nvidia-container curl
curl https://get.docker.com | sh
sudo systemctl --now enable docker
sudo nvidia-ctk runtime configure --runtime=docker
```

以下のコマンドを実行して、dockerグループに追加します。コマンド実行後に再ログインするとグループ設定が反映されます。

```shell
sudo gpasswd -a $USER docker
```

### 2.4 パッケージのhold

Jetson Linuxインストール後、`sudo apt upgrade`でL4Tカーネルのアップデート実行が行われ、パッケージ依存関係エラーが出てしまいました。そのため、`sudo apt upgrade`実行前に以下のコマンドを実行してアップデートされないようにしておきます。

```bash
sudo apt-mark hold nvidia-l4t-kernel
```

:::note info
インフォメーション
将来的にこの問題が改善され、この手順が不要になる可能性があります。
:::

### 2.5 jetson_statsインストール

後述するjetson_releaseを実行するために<https://github.com/rbonghi/jetson_stats>を参考にしてjetson_statsパッケージをインストールします。

```bash
sudo apt install python3-pip
sudo pip3 install -U jetson-stats
```

`jetson_release`コマンド実行結果の例を以下に示します。

```bash
$ jetson_release
Software part of jetson-stats 4.3.2 - (c) 2024, Raffaello Bonghi
Model: NVIDIA Jetson Orin NX Engineering Reference Developer Kit - Jetpack 6.1 [L4T 36.4.0]
NV Power Mode[0]: MAXN
Serial Number: [XXX Show with: jetson_release -s XXX]
Hardware:
 - P-Number: p3767-0000
 - Module: NVIDIA Jetson Orin NX (16GB ram)
Platform:
 - Distribution: Ubuntu 22.04 Jammy Jellyfish
 - Release: 5.15.148-tegra
jtop:
 - Version: 4.3.2
 - Service: Active
Libraries:
 - CUDA: 12.6.68
 - cuDNN: 9.3.0.75
 - TensorRT: 10.3.0.30
 - VPI: 3.2.4
 - Vulkan: 1.3.204
```

### 2.6 CUDAパス設定

`$HOME/.bashrc`に以下の記述を追記してターミナルを開き直します。

```shell
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
```

反映後、`nvcc`コマンドが実行できたらCUDAパス設定できています。

```shell
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Wed_Aug_14_10:14:07_PDT_2024
Cuda compilation tools, release 12.6, V12.6.68
Build cuda_12.6.r12.6/compiler.34714021_0
```

## Appendix

### NVIDIA社公式BSPとSeeed社BSPの違い

<https://wiki.seeedstudio.com/differences_of_l4t_between_seeed_and_nvidia/>にNVIDIA社公式BSP（Board Support Packages）とSeeed社BSPの違いがまとめられています。Wi-Fiチップ、GMSLデシリアライザ、CANバスコントローラのドライバが追加されているようです。


そのため、Seeed社BSPでは、私が使っていたIntel Dual Band Wireless-AC 8265もサポートされており、<https://qiita.com/dandelion1124/items/f137daab2fd99491b4df>で書いたようにソースビルドする必要がなくなりました。

### 動作モード

<https://wiki.seeedstudio.com/reComputer_J4012_Flash_Jetpack/#flash-the-device-step-by-step>のJP6.2に以下の記述があります。

> Please note that due to the increased power consumption and heat generation after enabling `super mode`, the [reComputer J4011](https://www.seeedstudio.com/reComputer-J4011-p-5585.html) and [reComputer J4012](https://www.seeedstudio.com/reComputer-J4012-p-5586.html?qid=eyJjX3NlYXJjaF9xdWVyeSI6Iko0MDEyIiwiY19zZWFyY2hfcmVzdWx0X3BvcyI6MiwiY190b3RhbF9yZXN1bHRzIjo4LCJjX3NlYXJjaF9yZXN1bHRfdHlwZSI6IlByb2R1Y3QiLCJjX3NlYXJjaF9maWx0ZXJzIjoic3RvcmVDb2RlOltyZXRhaWxlcl0ifQ%3D%3D) cannot operate stably in the highest mode. Therefore, this update does not include these two products. We are currently designing a new version of reComputer. Stay tuned!

reComputer J4011、reComputer J4012はJetPack 6.2から追加されたSuper modeを利用できないことがわかります。