2. 开发环境搭建:JetPack SDK安装、SDK Manager使用、系统烧录与初始配置

说实话,很多朋友拿到Jetson开发板,第一件事就是急着跑模型。我劝你先别急。环境没搭好,后面全是坑。我自己就吃过这个亏——第一次装JetPack时选了全量安装,结果硬盘爆了,系统直接卡死。嗯,从那以后,我每次都会先规划好存储空间。

这一章,咱们就把开发环境从头捋一遍。你跟着我的节奏走,基本不会出问题。

2.1 JetPack SDK到底是什么?

JetPack SDK,说白了就是NVIDIA给Jetson系列准备的一整套开发工具包。它不光是个系统镜像,里面还包含了CUDA、cuDNN、TensorRT、OpenCV这些核心库。你想想看,要是每个库都自己去编译,光CUDA就能折腾你一天。

我个人习惯把JetPack理解成「Jetson的瑞士军刀」。它帮你把底层驱动、AI框架、多媒体API全都打包好了。你只需要选择自己需要的组件,剩下的交给它自动处理。

核心组件一览:
  • L4T (Linux for Tegra) — 底层系统内核和驱动
  • CUDA Toolkit — GPU并行计算框架
  • cuDNN — 深度神经网络加速库
  • TensorRT — 推理优化引擎
  • OpenCV — 计算机视觉库
  • Multimedia API — 视频编解码、摄像头驱动

2.2 SDK Manager:你的装机好帮手

SDK Manager是NVIDIA官方提供的图形化安装工具。我刚开始用的时候也觉得没必要,命令行多酷啊。但后来发现,这玩意儿能帮你省掉至少80%的配置时间。

为什么会这样?因为它会自动检测你的Jetson型号、Host主机的环境,然后匹配最合适的JetPack版本。你不需要去官网翻半天文档找兼容性列表。

2.2.1 安装SDK Manager

首先,你得有一台运行Ubuntu的Host主机。我个人推荐Ubuntu 20.04或22.04,这两个版本最稳。我曾经试过用18.04,结果SDK Manager报了一堆依赖错误,折腾了两小时。

# 下载SDK Manager的deb包
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/nvidia-sdk-manager_1.9.2-1_amd64.deb

# 安装
sudo apt install ./nvidia-sdk-manager_1.9.2-1_amd64.deb

# 启动
sdkmanager
小技巧: 安装前先执行 sudo apt update && sudo apt upgrade,把系统依赖更新到最新。不然安装过程中容易卡在依赖问题上。

2.2.2 使用SDK Manager烧录系统

启动SDK Manager后,登录你的NVIDIA开发者账号。这一步不能省,没账号的去官网注册一个,免费的。

接下来你会看到几个选项:

  1. 选择硬件平台 — 选你的Jetson型号,比如Jetson Orin NX、Jetson Xavier NX等
  2. 选择JetPack版本 — 我建议选最新的LTS版本,比如JetPack 5.1.x。别追最新版,容易踩坑
  3. 选择安装模式 — 有「Host Machine」和「Target Machine」两种。我们选后者,也就是把系统烧录到Jetson上

嗯,这里要注意:烧录前请确保Jetson开发板已经进入恢复模式。怎么进?按住开发板上的「RECOVERY」键,再按一下「RESET」键,然后松开。接着用USB线把Jetson连接到Host主机上。

⚠️ 重要提醒: 烧录过程中不要断开USB连接,不要断电。我曾经有一次手贱拔了线,结果Jetson变砖了,只能重新刷机。整个过程大概20-30分钟,去泡杯咖啡等着就好。

2.3 系统烧录的两种方式

除了SDK Manager,你还可以用命令行方式烧录。我个人觉得,SDK Manager适合新手,命令行适合老手或者需要批量部署的场景。

2.3.1 SDK Manager方式(推荐)

刚才已经讲过了,图形化界面,点几下鼠标就行。它会自动下载镜像、解压、烧录、安装组件。你只需要在最后一步勾选你需要的组件:

  • CUDA Toolkit — 必选
  • cuDNN — 必选
  • TensorRT — 必选(跑AI推理就靠它)
  • OpenCV — 建议选,省得自己编译
  • Multimedia API — 如果做视频处理就选上

2.3.2 命令行方式(进阶)

如果你跟我一样,喜欢掌控每一个细节,可以试试命令行:

# 下载L4T驱动包和根文件系统
wget https://developer.nvidia.com/embedded/l4t/r35_release_v3.1/release/Jetson_Linux_R35.3.1_aarch64.tbz2
wget https://developer.nvidia.com/embedded/l4t/r35_release_v3.1/release/Tegra_Linux_Sample-Root-Filesystem_R35.3.1_aarch64.tbz2

# 解压
tar -xvf Jetson_Linux_R35.3.1_aarch64.tbz2
cd Linux_for_Tegra/rootfs/
sudo tar -xvf ../../Tegra_Linux_Sample-Root-Filesystem_R35.3.1_aarch64.tbz2

# 安装根文件系统
cd ..
sudo ./apply_binaries.sh

# 烧录到Jetson
sudo ./flash.sh jetson-orin-nx-devkit mmcblk0p1
我的经验: 命令行方式适合你需要在多块Jetson上部署相同系统的情况。你可以先在一台Host上配置好所有组件,然后写个脚本批量烧录。我在项目里最多一次烧了20块Jetson Orin NX,用脚本半小时搞定。

2.4 系统初始配置

系统烧录完成后,第一次启动Jetson,你会看到一个初始设置向导。这里有几个关键点,我帮你列出来:

2.4.1 设置用户和密码

默认用户名是 nvidia,密码也是 nvidia。我建议你改成自己的密码,别偷懒。我曾经在展会上演示时,有人直接用默认密码SSH连上了我的Jetson,场面一度很尴尬。

2.4.2 配置网络

Jetson支持Wi-Fi和有线网络。我个人习惯用有线,稳定、速度快。如果你用Wi-Fi,注意5GHz频段信号更好,2.4GHz容易受干扰。

2.4.3 设置存储空间

这是个大坑。Jetson的eMMC存储通常只有16GB或32GB,装完系统就剩一半了。我建议你:

  • 插一张大容量SD卡 — 至少128GB,用来存数据集和模型
  • 挂载外部SSD — 通过USB 3.0或M.2接口,速度更快
  • 修改apt源 — 把软件源指向SD卡或SSD,避免eMMC爆满
# 查看磁盘空间
df -h

# 挂载SD卡(假设是/dev/mmcblk1p1)
sudo mount /dev/mmcblk1p1 /mnt/sdcard

# 设置apt缓存到SD卡
sudo mkdir -p /mnt/sdcard/apt-cache
sudo ln -s /mnt/sdcard/apt-cache /var/cache/apt

2.4.4 验证环境是否正常

配置完成后,跑几个命令验证一下:

# 查看系统版本
cat /etc/nv_tegra_release

# 检查CUDA是否安装成功
nvcc --version

# 检查TensorRT版本
dpkg -l | grep tensorrt

# 跑一个简单的GPU测试
nvidia-smi

如果 nvidia-smi 能正常显示GPU信息,说明你的环境基本没问题了。接下来就可以开始愉快的开发了。

2.5 避坑指南

最后,我把自己踩过的坑总结一下,你遇到了可以直接翻到这里:

  • 烧录失败 — 检查USB线是不是数据线(有些线只能充电),换根线试试
  • 系统卡在启动界面 — 大概率是电源功率不够,Jetson Orin NX需要至少15W供电
  • CUDA版本不匹配 — 别自己手动装CUDA,用JetPack自带的版本最稳
  • 磁盘空间不足 — 装完系统第一件事就是挂载外部存储,别问我怎么知道的

好了,环境搭好了,下一章咱们聊聊怎么用命令行工具监控Jetson的性能。到时候我会分享几个我压箱底的调试技巧,保证让你眼前一亮。