第二章:开发环境准备——JetPack SDK安装、系统烧录与初始化
说实话,很多初学者拿到Jetson设备后,第一反应就是「赶紧跑个模型看看效果」。我特别理解这种心情,但我要泼一盆冷水——环境没配好,后面全是坑。我自己就曾经因为CUDA版本不对,折腾了整整两天才找到问题。
这一章,咱们把开发环境彻底搞定。你跟着我的步骤走,保证一次过。
2.1 JetPack SDK:到底是个什么东西?
JetPack SDK,说白了就是NVIDIA为Jetson系列准备的一整套开发工具包。它包含了操作系统、CUDA、cuDNN、TensorRT、多媒体API等等。你想想看,如果没有它,你得一个个手动装,版本还得自己配,那得多痛苦。
我个人习惯,每次拿到新板子,第一件事就是去NVIDIA官网下载最新版的JetPack。目前主流版本是JetPack 5.x和6.x,分别对应不同的Jetson型号。
重要提示:JetPack版本和Jetson硬件型号是绑定的。比如Jetson Orin系列建议用JetPack 5.1.2及以上版本。别乱装,否则可能变砖。
2.2 系统烧录:两种方式,任你选择
系统烧录,就是把JetPack里的操作系统写到Jetson的存储里。有两种主流方式:
- SD卡烧录:适合Jetson Nano这类用SD卡的设备。用BalenaEtcher或Rufus工具,把镜像写到SD卡里,插上就能启动。
- NVIDIA SDK Manager烧录:适合Jetson Orin、Xavier系列。通过USB线连接电脑,用SDK Manager一键烧录。我个人更推荐这种方式,因为它会自动帮你装好所有依赖。
我记得第一次用SDK Manager时,还担心会不会把板子烧坏。其实完全不用担心,它就像个傻瓜相机,点几下鼠标就行。
小技巧:烧录前,确保你的电脑有至少50GB的剩余空间。JetPack完整版大概20-30GB,但解压和编译过程会占用额外空间。
2.3 系统初始化:第一次启动要做的事
系统烧录完成后,插电开机。第一次启动会进入初始化向导,你需要:
- 设置用户名和密码(我建议用jetson/jetson,方便记忆)
- 选择语言和时区(选中文/上海时区)
- 配置网络(建议用有线,Wi-Fi有时不稳定)
- 设置存储空间(如果用的是SD卡,可以扩展到最大)
嗯,这里要注意:初始化完成后,系统会自动重启一次。别着急,让它慢慢来。
2.4 CUDA/cuDNN/TensorRT环境验证
环境装好了,怎么知道对不对?验证一下呗。我一般用这几个命令:
2.4.1 验证CUDA
# 查看CUDA版本
nvcc --version
# 或者
cat /usr/local/cuda/version.txt
如果输出类似 Cuda compilation tools, release 11.4, V11.4.48,说明CUDA装好了。
2.4.2 验证cuDNN
# 查看cuDNN版本
cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
输出应该类似:
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 0
2.4.3 验证TensorRT
# 查看TensorRT版本
dpkg -l | grep TensorRT
# 或者运行一个示例
cd /usr/src/tensorrt/samples/sampleMNIST
make
./sampleMNIST
如果能看到MNIST数字识别的结果,说明TensorRT正常工作。
避坑指南:我曾经遇到过cuDNN版本和CUDA不匹配的情况,导致模型推理速度慢得离谱。后来发现是cuDNN的符号链接没指对。解决办法是重新安装对应版本的cuDNN,并手动更新软链接。
2.5 配置SSH远程开发
你总不能每次都抱着Jetson接显示器吧?SSH远程连接才是正经事。配置方法很简单:
2.5.1 开启SSH服务
# 检查SSH是否开启
sudo systemctl status ssh
# 如果没开启,启动它
sudo systemctl enable ssh
sudo systemctl start ssh
2.5.2 获取Jetson的IP地址
# 查看IP
ifconfig
# 或者
ip addr show
记下那个 192.168.x.x 的地址。
2.5.3 从电脑连接
在Windows上可以用PuTTY或Windows Terminal,Mac/Linux直接用命令行:
ssh jetson@192.168.x.x
输入密码,搞定。
进阶技巧:配置SSH密钥登录,省去每次输密码的麻烦。在电脑上执行 ssh-keygen 生成密钥,然后用 ssh-copy-id jetson@192.168.x.x 把公钥传到Jetson上。以后连接就不用密码了。
2.6 本章小结
到这步,你的Jetson开发环境就准备好了。CUDA、cuDNN、TensorRT都验证通过,SSH也能远程连接。接下来,我们就可以开始真正的目标检测实战了。
说实话,环境配置这一步虽然枯燥,但特别重要。我见过太多人因为环境问题,浪费了大量时间。你按照我的步骤来,应该不会出问题。如果遇到什么奇怪的错误,先检查版本是否匹配,再检查路径是否正确。实在不行,重刷系统——反正Jetson刷机很快。
下一章,咱们开始搭建目标检测的代码框架。到时候你会觉得,前面这些准备工作,值了。