第2章:系统烧录与初始化

好,系统到手了,接下来就是让它真正跑起来。

这一章,我们聊聊怎么把系统装进Jetson里。说白了,就是给这块板子装上「大脑」。我个人习惯把这一步叫做「开光仪式」——搞好了,后面顺风顺水;搞砸了,可能得折腾一整天。

2.1 SDK Manager烧录系统

如果你用的是官方推荐的NVIDIA Jetson开发套件(比如Orin NX、Xavier NX),那最省事的方式就是用SDK Manager。

为什么?因为它不光帮你烧系统,还会顺手把CUDA、cuDNN、TensorRT这些深度学习必备的库一起装好。我在项目中遇到过,有人手动装这些库,版本对不上,折腾了两天。用SDK Manager,半小时搞定。

准备工作:

  • 一台Ubuntu主机(18.04或20.04,我建议用20.04,兼容性最好)
  • Jetson开发板(通电,用原装电源,别用杂牌)
  • USB Type-C数据线(连接主机和Jetson)
  • 网络环境(主机和Jetson要在同一个局域网)

操作步骤其实不复杂:

  1. 在主机上下载并安装SDK Manager
  2. 打开软件,登录NVIDIA账号
  3. 选择你的Jetson型号和系统版本
  4. 勾选需要安装的组件(CUDA、TensorRT这些,全选就行)
  5. 点击「Flash」开始烧录

注意:烧录过程中不要断开USB线,不要断电。我曾经有一次手贱拔了线,结果板子变砖了,只能重新进入恢复模式再刷一次。

烧录完成后,系统会自动重启。这时候你会看到Jetson的桌面,嗯,第一次看到那个界面,还是挺有成就感的。

2.2 SD卡启动盘制作

如果你用的是Jetson Nano,或者你想给系统做个备份,那SD卡启动盘就派上用场了。

我个人习惯用Etcher这个工具,简单粗暴。当然,你用dd命令也行,但容易手滑写错盘符。

制作步骤:

  1. 下载Jetson的SD卡镜像文件(.img格式)
  2. 插入SD卡(建议用32GB以上,Class 10或UHS-I级别)
  3. 打开Etcher,选择镜像文件,选择SD卡,点击「Flash」
  4. 等待写入完成,验证通过后弹出SD卡

小技巧:SD卡的质量直接影响系统稳定性。我踩过坑,用了张杂牌卡,跑模型时经常莫名其妙卡死。后来换了三星的EVO Plus,再没出过问题。

把烧好的SD卡插进Jetson,上电,系统就会从SD卡启动。嗯,就是这么简单。

2.3 系统初始化设置

第一次进系统,你会看到一个设置向导。别急着跳过,这里有几个关键点:

  • 用户名和密码:默认是nvidia/nvidia,我建议改成你自己的。安全第一。
  • 时区:选Asia/Shanghai,不然日志时间对不上,排查问题很痛苦。
  • 磁盘分区:如果你用的是SD卡,建议把剩余空间扩展到根分区。不然装几个包就提示磁盘满了。

扩展分区的命令很简单:

sudo apt-get update
sudo apt-get install -y nvidia-jetpack
sudo /usr/lib/nvidia/nvidia-jetpack/resize-rootfs.sh
sudo reboot

重启后,用df -h检查一下,根分区应该已经变大了。

2.4 网络配置

Jetson默认用DHCP获取IP地址。但作为开发板,我建议你给它设个静态IP。为什么?因为每次重启IP都会变,你SSH连接时就得去查IP,烦不烦?

配置静态IP的方法:

sudo nmcli con mod "Wired connection 1" \
  ipv4.addresses 192.168.1.100/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns 8.8.8.8 \
  ipv4.method manual
sudo nmcli con up "Wired connection 1"

记得把IP地址改成你局域网内的可用地址。别跟其他设备冲突了。

验证网络:

ping -c 4 8.8.8.8
ping -c 4 baidu.com

两个都能通,说明网络没问题。

2.5 SSH远程连接

Jetson的桌面环境挺吃资源的。我平时开发,基本都是SSH连上去,在终端里操作。省资源,效率也高。

首先,确保Jetson上SSH服务是开启的:

sudo systemctl enable ssh
sudo systemctl start ssh

然后在你的主机上连接:

ssh nvidia@192.168.1.100

输入密码,搞定。

进阶技巧:配置SSH密钥登录,省去每次输密码的麻烦。

# 在主机上生成密钥
ssh-keygen -t rsa -b 4096
# 把公钥复制到Jetson
ssh-copy-id nvidia@192.168.1.100

之后登录就不用密码了。我在项目中经常同时管理多块Jetson,这个技巧帮我省了不少时间。

2.6 VNC远程桌面配置

有时候你需要图形界面,比如调试摄像头、可视化模型输出。这时候VNC就派上用场了。

Jetson上默认用的是LightDM桌面管理器。配置VNC其实不难:

# 安装VNC服务器
sudo apt-get install vino

# 开启VNC服务
gsettings set org.gnome.Vino enabled true
gsettings set org.gnome.Vino prompt-enabled false
gsettings set org.gnome.Vino require-encryption false

# 设置密码(改成你自己的)
gsettings set org.gnome.Vino authentication-methods "['vnc']"
gsettings set org.gnome.Vino vnc-password $(echo -n "yourpassword" | base64)

然后在主机上用VNC客户端连接:192.168.1.100:5900

注意:VNC默认不加密,不要在公网上用。只在局域网内使用。如果你需要远程访问,建议先搭个VPN。

嗯,到这里,你的Jetson已经可以正常工作了。系统烧好了,网络配好了,远程也能连上了。接下来,我们就可以开始装深度学习环境了。

下一章,我们聊聊CUDA和cuDNN的安装。别走开。