---
# System prepended metadata

title: NVIDIA SDK Manager 踩過的一些坑
tags: [Jetson AGX Orin]

---

# NVIDIA SDK Manager 踩過的一些坑
搞了兩個多禮拜才成功安裝 JetPack 6 和 PyTorch，
Nvidia 的文件對新手不太友善，對於初入 Embedded 領域的我走了很多彎路，
安裝過程真的 "心得" 滿滿，無數次想把電腦砸了，
因此分享一下我的安裝過程，希望能幫助其他人少走一些彎路。

## 我的目標

**裝置：** Jetson AGX Orin Developer Kit 64GB
**安裝版本：** JetPack 6.2

使用 NVIDIA SDK Manager 方法安裝。

# 經歷過程

原本想說新電腦裝個系統、環境設置對資管系肯定 A piece of cake。

## 預裝系統被我搞爛
拿到電腦吃著火鍋唱著歌，跑了 [官方Getting Started](https://developer.nvidia.com/embedded/learn/get-started-jetson-agx-orin-devkit) 說明，JetPack 更新裝下去，行雲流水沒有問題。

然後再去 PyTorch 官網[直接安裝 torch](https://pytorch.org/get-started/locally/)，檢查 `torch.cuda.is_available()`，結果失敗，更慘的是直接用 PyTorch 官方安裝好像還自動幫我裝了CUDA，檢查路徑發現電腦現在有兩個版本的 CUDA，但是 `nvidia-smi` 打下去啥都跳不出來。

再來就是手忙腳亂，裝一堆東西測試，試了一堆方法但都沒有意識到 Jetson 和普通電腦不一樣，很多東西都是訂製的，直接去官網裝是用不了的。

回過頭來才發現系統已經被搞爛了，想說重灌比較省事。

## 系統

了解到我使用的是 Embedding 系統而不是一般電腦後，我才發現事情麻煩了。

Jetson Platform 並不能直接裝 Ubuntu，它的系統是訂製過的，直接用 USB 映像檔裝下去我也不知道會發生什麼事，反正肯定不行。

接著我找到了今天的主角 NVIDIA SDK Manager。

## 主角 NVIDIA SDK Manager

[NVIDIA SDK Manager](https://developer.nvidia.com/sdk-manager) 這東西有GUI介面，網站也長得有模有樣的，
~~應該非常可靠安裝一鍵安裝肯定沒有問題的~~。

這東西非常需要你去好好看一下說明文件：
- [System Requirements](https://docs.nvidia.com/sdk-manager/system-requirements/index.html)
- [host operating system compatibility matrix](https://developer.nvidia.com/sdk-manager#host_os_comp_matrix)

若你手上沒有對應的 Ubuntu 版本 Host 系統，就會出錯裝不了很正常。

注意一下，[Docker Image安裝](https://docs.nvidia.com/sdk-manager/docker-containers/index.html) 方法 **好像** 你的宿主機還是需要匹配對應版本，因為我試過還是裝不了。


## 開始安裝

都準備好後就可以選要裝的版本一直點下一步了，記得要進入 [Recovery Mode](https://developer.nvidia.com/embedded/learn/jetson-agx-orin-devkit-user-guide/howto.html) 才能開始刷。

![介面示意](https://hackmd.io/_uploads/SyzX1gkWle.png)

基本上照著 [官方操作說明](https://docs.nvidia.com/sdk-manager/install-with-sdkm-jetson/index.html) 一直點下去 **理論上** 就能安裝成功了。

但結果就是安裝過程一直失敗，要你跳去 log 看並嘗試手動解決問題。

## 處理失敗的核心要點

這邊就是我走了很多彎路的地方了，先重點講一下該如何下手解決問題，後面再一個一個題我遇到了哪些狀況。

1. 若你詳讀過官方文件卻還是報錯，別懷疑，是他寫的流程有問題，需要你去手動解決。
2. 問聰明點的 AI
    - 我當初是用 `Gemini 2.5 Pro` 才得出一些可用的資訊。
    - `GPT-4o` 不太可能解得出來不要聽他唬爛了。
3. 重建時檔案要刪
    - 安裝失敗時有可能是Build的檔案有缺，但重試時並不會重新Build，最保險的方式是整包刪除讓它重來。
    - `rm -rf /home/$USER/nvidia/nvidia_sdk`
    - `rm -rf /home/$USER/.nvsdkm/` # SDK Manager 的內部緩存和日誌

### 建置時錯誤：檔案下載失敗

一些檔案在過程中下載失敗，這會進入一個迴圈他會不斷嘗試重複下載，進度條會在快完成時回朔，多試幾次是沒有用的，直接 wget 檔案卻有辦法下載，也不清楚為什麼。

最後是換兩台電腦加上換網路才成功，原因未知。

### 建置時錯誤：Permission denied

在建立 File System and OS 時出錯：

```log=
13:26:16 INFO: File System and OS - target_image: Using rootfs directory of: /home/hank/nvidia/nvidia_sdk/JetPack_6.2_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/rootfs
13:26:16 INFO: File System and OS - target_image: Installing extlinux.conf into /boot/extlinux in target rootfs
13:26:16 INFO: File System and OS - target_image: mkdir: cannot create directory ‘/home/hank/nvidia/nvidia_sdk/JetPack_6.2_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/rootfs/boot/extlinux/’: Permission denied
13:26:16 INFO: File System and OS - target_image: mkdir: cannot create directory ‘rootfs/opt/nvidia’: Permission denied
13:26:16 INFO: File System and OS - target_image: mkdir: cannot create directory ‘rootfs/opt/nvidia’: Permission denied
13:26:16 ERROR: File System and OS - target_image: [exec_command]: /bin/bash -c /home/hank/.nvsdkm/replays/scripts/JetPack_6.2_Linux/NV_L4T_FILE_SYSTEM_AND_OS_COMP.sh; [error]:
13:26:16 INFO: File System and OS - target_image: [ Package Install Finished with Error ]
```

**用 sudo 來啟動 SDK Manager 並不是解決方法**，啟動後它並不允許在 root 身份下進行安裝。

#### 問題解析：
SDK Manager 在解壓 rootfs 檔案時，很可能重新創建了這些目錄並將其所有權設為 root，進而導致後續存取失敗。

#### 解決方案：
在 SDK Manager 解壓完 rootfs 檔案，創建了 /rootfs/boot 和 /rootfs/opt 這兩個由 root 擁有的目錄之後，但在 SDK Manager 嘗試在這些目錄內寫入之前，手動使用 sudo 更改這些目錄的權限和所有權。

也就是要隨時讀它的 log，一旦看到有 rootfs 相關操作就立刻修改權限：
```bash=
sudo chown -R hank:hank /home/hank/nvidia/nvidia_sdk/JetPack_6.2_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/rootfs/boot
sudo chmod -R u+w /home/hank/nvidia/nvidia_sdk/JetPack_6.2_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/rootfs/boot

sudo chown -R hank:hank /home/hank/nvidia/nvidia_sdk/JetPack_6.2_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/rootfs/opt
sudo chmod -R u+w /home/hank/nvidia/nvidia_sdk/JetPack_6.2_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/rootfs/opt
```

*註：hank 是我的 user 名，若要使用請修改對應使用者和檔案路徑。*

這方法很瞎但有成功。

### 系統錯誤： 安裝於EMMC成功，但進系統USB孔不過電
安裝於 EMMC 成功，但是滑鼠鍵盤插上USB孔不過電無法使用，但是在 Bios 階段滑鼠鍵盤是能正常操作的，可以操作 Bios 介面，進系統之後才不行。

因為沒鍵盤根本不能輸入操作，所以我直接放棄，推估是系統 USB 組建有缺失，我選擇繼續重裝系統。


### 燒錄時錯誤：安裝於nvme硬碟，但核心檔案缺失

在 Host 主機上，NVIDIA SDK Manager 安裝目錄中的 NVMe 驅動程式模組不存在。這導致燒錄過程無法繼續，因為它無法複製必要的模組到 Jetson 的檔案系統中。

錯誤訊息指出 nvme 驅動程式無法被複製，這意味著 apply_binaries.sh（或等效過程）可能沒有成功運行，或者 rootfs 的準備本身就有問題，導致 lib/modules/5.15.148-tegra/ 目錄沒有被正確創建或填充。

```log=
14:19:10 INFO: Flash Jetson Linux - flash: writing boot image config in bootimg.cfg
14:19:10 INFO: Flash Jetson Linux - flash: extracting kernel in zImage
14:19:10 INFO: Flash Jetson Linux - flash: extracting ramdisk in initrd.img
14:19:10 INFO: Flash Jetson Linux - flash: /tmp/tmp.HXvQVu5FqI/initrd /tmp/tmp.HXvQVu5FqI /home/hank/nvidia/nvidia_sdk/JetPack_6.2_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra
14:19:11 ERROR: Flash Jetson Linux - flash: 89038 blocks
14:19:11 ERROR: Flash Jetson Linux - flash: cp: cannot stat '/home/hank/nvidia/nvidia_sdk/JetPack_6.2_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra/rootfs/lib/modules/5.15.148-tegra/kernel/drivers/nvme': No such file or directory
14:19:11 INFO: Flash Jetson Linux - flash: Cleaning up...
14:19:11 ERROR: Flash Jetson Linux - flash: [exec_command]: /bin/bash -c /home/hank/.nvsdkm/replays/scripts/JetPack_6.2_Linux/NV_L4T_FLASH_JETSON_LINUX_COMP.sh; [error]: : No such file or directory
14:19:11 INFO: Flash Jetson Linux - flash: [ Component Install Finished with Error ]
14:19:11 INFO: Flash Jetson Linux - flash: [host] [ 55.55 MB used. Disk Avail on Partition /dev/nvme1n1p3: 729.18 GB ]
14:19:11 INFO: Flash Jetson Linux - flash: [ NV_L4T_FLASH_JETSON_LINUX_COMP Install took 3m58s ]
14:19:11 ERROR: Flash Jetson Linux - flash: command terminated with error
14:19:11 SUMMARY: Flash Jetson Linux - flash: First Error: No such file or directory
```

這就要你去理解它內部的流程，因為 Build 的時候少裝了特定的組件，你就需要手動去把該組建給補上。

#### 手動補檔
如果你確定 BSP (jetson_linux_...tbz2) 和 Sample Root Filesystem (tegra_sample-root-filesystem_...tbz2) 都已正確下載到 Linux_for_Tegra/ 的父目錄，你可以嘗試手動準備 rootfs：
1. 進入 Linux_for_Tegra/ 目錄。
2. 運行：
    ```shell
    sudo tar xpf ../nvidia_sdk/JetPack_..._Linux_JETSON_AGX_ORIN_TARGETS/Jetson_Linux_Rxx.x.x_aarch64.tbz2
    ```
4. 進入 Linux_for_Tegra/rootfs/ 目錄。
5. 運行：
    ```shell
    sudo tar xpf ../../.../tegra_Linux_sample-root filesystem_Rxx.x.x_aarch64.tbz2
    ```
7. 返回 Linux_for_Tegra/ 目錄。
8. 運行：`sudo ./apply_binaries.sh`。

這將會把 NVIDIA 特定的驅動程式和核心模組複製到 rootfs/ 中，理論上就會創建並填充 rootfs/lib/modules/5.15.148-tegra/ 目錄。

## 安裝成功

```bash
cat /etc/nv_tegra_release
```

```log
# R36 (release), REVISION: 4.3, GCID: 38968081, BOARD: generic, EABI: aarch64, DATE: Wed Jan  8 01:49:37 UTC 2025
# KERNEL_VARIANT: oot
TARGET_USERSPACE_LIB_DIR=nvidia
TARGET_USERSPACE_LIB_DIR_PATH=usr/lib/aarch64-linux-gnu/nvidia
```
---
```shell
nvidia-smi
```

```log
Mon May 12 10:16:13 2025
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 540.4.0                Driver Version: 540.4.0      CUDA Version: 12.6     |
|-----------------------------------------+----------------------+----------------------+\
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |\
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |\
|                                         |                      |               MIG M. |\
|=========================================+======================+======================|\
|   0  Orin (nvgpu)                  N/A  | N/A              N/A |                  N/A |\
| N/A   N/A  N/A               N/A /  N/A | Not Supported        |     N/A          N/A |\
|                                         |                      |                  N/A |\
+-----------------------------------------+----------------------+----------------------+\
                                                                                         \
+---------------------------------------------------------------------------------------+\
| Processes:                                                                            |\
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |\
|        ID   ID                                                             Usage      |\
|=======================================================================================|\
|  No running processes found                                                           |\
+---------------------------------------------------------------------------------------+
```

## 使用文件
- [Getting Started with Jetson AGX Orin Developer Kit](https://developer.nvidia.com/embedded/learn/get-started-jetson-agx-orin-devkit)
- [JetPack SDK](https://developer.nvidia.com/embedded/jetpack)

# 下篇：PyTorch 安裝
- [Jetson AGX Orin PyTorch 安裝](https://hackmd.io/@hank20011224/ByZCc00lxl)