# 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)