2. 开发环境搭建与系统烧录:JetPack SDK安装、SDK Manager使用、系统镜像烧录、首次启动配置与网络设置

说实话,很多做Jetson项目的朋友,第一步就卡住了。不是硬件问题,而是环境没搭对。我见过太多人拿着开发板,折腾一整天系统都起不来。今天咱们就把这事彻底捋清楚。

2.1 JetPack SDK:到底是个什么东西?

JetPack SDK,说白了就是NVIDIA给Jetson系列准备的一整套开发工具包。它不只是个系统镜像,里面还包含了CUDA、cuDNN、TensorRT这些深度学习必备的库。我个人习惯把它理解成「Jetson的瑞士军刀」——你需要的几乎所有东西,它都给你打包好了。

为什么要用JetPack?因为自己手动装这些库,版本匹配问题能让你崩溃。我在项目中遇到过客户自己装CUDA,结果和TensorRT版本不兼容,整整浪费了两天时间。用JetPack,这些坑就绕过去了。

核心要点: JetPack SDK = 系统镜像 + 开发库 + 工具链。版本选择很重要,建议根据你的Jetson型号和项目需求来定。比如Jetson Orin系列,我推荐用JetPack 5.1.1或更高版本。

2.2 SDK Manager:你的装机好帮手

SDK Manager是NVIDIA官方提供的图形化工具。你想想看,如果每次烧录系统都要敲命令行、配环境,那得多痛苦?SDK Manager把这些步骤都简化了。

安装步骤:

  1. 去NVIDIA官网下载SDK Manager(需要注册账号,免费的)
  2. 在Ubuntu主机上安装(注意:SDK Manager只支持Ubuntu系统)
  3. 用你的NVIDIA开发者账号登录
我的小技巧: 安装SDK Manager的主机,建议用Ubuntu 20.04或22.04。我之前用18.04试过,有些新版本的JetPack识别有问题。嗯,这里要注意。

使用流程:

  • 选择你的Jetson型号(比如Orin NX、Xavier NX等)
  • 选择JetPack版本
  • 勾选需要安装的组件(CUDA、cuDNN、TensorRT等)
  • 选择烧录方式:直接烧录到开发板,或者生成镜像文件

为什么会这样设计?因为不同项目需要的组件不一样。比如你只做边缘推理,可能只需要TensorRT;如果你还要做模型训练,那CUDA和cuDNN也得装上。

2.3 系统镜像烧录:手把手教你

烧录系统,听起来高大上,其实就几步。但每一步都有坑,我一个个说。

准备工作:

  • 一台Ubuntu主机(推荐16GB以上内存)
  • Jetson开发板
  • USB数据线(质量要好,我吃过亏)
  • 电源适配器(原装的最好)
  • 网线(用于首次网络配置)
警告: 千万不要用劣质USB线!我曾经因为一根USB线接触不良,烧录到一半失败了,系统直接变砖。后来花了半天才救回来。记住,线材质量直接影响烧录成功率。

烧录步骤:

  1. 将Jetson开发板通过USB连接到主机
  2. 给开发板上电(先别按电源键)
  3. 在SDK Manager中点击「Flash」按钮
  4. 按住开发板上的「Force Recovery」按钮不放
  5. 按一下电源键,然后松开「Force Recovery」按钮
  6. SDK Manager会自动识别设备,开始烧录

整个过程大概10-20分钟,取决于你的USB速度和镜像大小。我习惯烧录时在旁边放杯咖啡,等着就行。

2.4 首次启动配置:别急着用

系统烧录完成后,第一次启动需要做一些配置。这一步很多人会忽略,结果后面各种问题。

启动流程:

  • 拔掉USB线,接上显示器和键盘鼠标
  • 上电启动,会进入Ubuntu的初始化界面
  • 设置用户名和密码(记住,后面SSH要用)
  • 选择时区、语言等
  • 配置网络连接
我的建议: 用户名最好用全小写字母,不要用特殊字符。我之前用了个带下划线的用户名,结果有些脚本跑不起来。嗯,血的教训。

2.5 网络设置:让Jetson连上网

网络配置是重中之重。因为后面很多操作都依赖网络,比如安装依赖包、下载模型等。

有线网络:

  • 插上网线,系统一般会自动获取IP
  • ifconfigip addr 查看IP地址
  • 如果没获取到,检查网线或路由器DHCP设置

无线网络:

  • 点击右上角网络图标
  • 选择你的WiFi,输入密码
  • 如果连不上,检查WiFi频段(Jetson有些型号只支持2.4GHz)
重要: 建议优先使用有线网络。无线网络在传输大文件时容易掉线,我遇到过好几次训练到一半网络断了,进度全丢。

静态IP设置(推荐):

# 编辑网络配置文件
sudo nano /etc/netplan/01-netcfg.yaml

# 示例配置
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

# 应用配置
sudo netplan apply

为什么要设静态IP?因为开发过程中你经常需要SSH连接Jetson,动态IP每次重启都可能变,很麻烦。设成静态IP,一劳永逸。

2.6 验证环境:确保一切正常

配置完成后,别急着开始开发。先验证一下环境是否正常。

验证命令:

# 查看系统信息
uname -a

# 查看CUDA版本
nvcc --version

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

# 测试GPU是否正常工作
nvidia-smi

如果这些命令都能正常输出,恭喜你,环境搭建成功了。如果报错,别慌,多半是版本匹配问题。检查一下JetPack版本和你的Jetson型号是否对应。

避坑指南: 我曾经遇到过nvidia-smi命令找不到的情况。后来发现是系统镜像烧录时,驱动没装全。重新用SDK Manager烧录一次,勾选「Host Components」选项,问题就解决了。

2.7 总结与下一步

环境搭建这块,说难不难,说简单也不简单。关键是要细心,每一步都确认无误再往下走。我见过太多人因为跳过了某个步骤,后面花几倍的时间来排查问题。

好了,环境搭好了,下一章咱们就开始真正的开发了。到时候我会教大家如何用Jetson跑第一个深度学习模型。准备好了吗?