2. Jetson设备初始化与系统配置
拿到一块全新的 Jetson 模组或整机(如 Orin Nano、Orin NX、Xavier NX),它出厂时通常处于两种状态之一:一是 eMMC 版本,内部已预装 NVIDIA 官方 JetPack 的 L4T(Linux for Tegra)系统;二是 NVMe/无存储版本,需要自行刷写。无论哪种情况,正式投入容器化部署前,都必须完成一次"从裸机到可远程运维"的初始化闭环:刷机 → 首次启动 → 网络与 SSH → 用户权限 → 基础环境自检。本节按这条主线展开,重点讲清每一步的实际操作对象、关键参数和判断依据。
一、刷机流程:SDK Manager 与命令行两条路径
Jetson 刷机本质上是把 NVIDIA 提供的 L4T BSP(Board Support Package)写入设备的引导介质。官方推荐两种方式:图形化的 SDK Manager 和命令行的 flash.sh。前者适合首次接触、需要同时安装 CUDA/cuDNN/TensorRT 等组件的场景;后者适合批量生产、CI 自动化或 SDK Manager 无法识别设备的场景。
使用 SDK Manager 的典型流程是:在 Ubuntu 20.04/22.04 宿主机上安装 SDK Manager,用 USB-C 数据线连接 Jetson 的调试口,将设备置于 Force Recovery 模式(按住 REC 键再按 RESET,或短接 FC 引脚后上电)。此时在宿主机执行 lsusb 应能看到 0955:7xxx NVIDIA Corp. 设备,这是判断是否成功进入恢复模式的关键依据。随后在 SDK Manager 中选择目标模组型号、JetPack 版本、存储介质(eMMC 或 NVMe),勾选需要安装的组件,点击 Flash 即可。
命令行方式则更可控。以 Orin Nano 刷入 NVMe 为例,先下载并解压 L4T BSP 与根文件系统,然后执行:
sudo ./tools/kernel_flash/l4t_initrd_flash.sh \
--external-device nvme0n1p1 \
-c tools/kernel_flash/flash_l4t_external.xml \
-S 32GiB \
--showlogs --network usb0 \
jetson-orin-nano-devkit internal
其中 --external-device 指定目标盘,-S 指定 rootfs 分区大小,--network usb0 表示通过 USB 网络完成刷写。刷机成功的标志是串口日志出现 login: 提示,且设备重启后能进入系统。若卡在 Waiting for device to boot,通常是恢复模式未正确进入或 USB 线缆不支持数据传输。
二、网络与 SSH 配置
首次启动完成后,Jetson 默认通过 DHCP 获取 IP。若用于固定部署,建议改为静态 IP。以 Ubuntu 22.04 的 Netplan 为例,编辑 /etc/netplan/01-netcfg.yaml:
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.50/24]
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
执行 sudo netplan apply 后,用 ip addr show eth0 确认地址生效。SSH 方面,Jetson 默认已安装 openssh-server,只需确认 sudo systemctl status ssh 为 active。若需禁用密码登录、改用密钥,可在宿主机生成密钥对后执行 ssh-copy-id nvidia@192.168.1.50,再修改 /etc/ssh/sshd_config 中的 PasswordAuthentication no 并重启服务。这一步对后续远程容器运维至关重要。
三、用户权限与基础环境检查
Jetson 默认用户 nvidia 属于 sudo 组,但默认不在 docker 组。若直接以普通用户执行 docker ps 会报权限错误。正确做法是:
sudo usermod -aG docker $USER
sudo reboot
# 重启后验证
id
docker run --rm hello-world
此外,若涉及串口、GPIO、I2C 等外设操作,还需将用户加入 dialout、gpio、i2c 等组。基础环境检查建议逐项执行并记录:cat /etc/nv_tegra_release 确认 L4T 版本;nvidia-smi 或 tegrastats 确认 GPU 与功耗状态;df -h 与 lsblk 确认 NVMe 已挂载且根分区容量充足;docker info 确认容器运行时已就绪。若 docker info 中 Runtime 未显示 nvidia,说明 nvidia-container-toolkit 未正确安装或未配置,需要重新执行 sudo nvidia-ctk runtime configure --runtime=docker 并重启 docker。