Jetson A603载板JetPack刷机实战:从恢复模式到系统定制

发布时间:2026/8/2 14:49:52

Jetson A603载板JetPack刷机实战:从恢复模式到系统定制 1. 项目概述为A603载板注入灵魂最近在折腾一块英伟达 Jetson 系列的 A603 载板核心目标很明确把官方的 JetPack SDK 操作系统镜像完整、稳定地刷写进去。这听起来像是个简单的“烧录”动作但对于嵌入式开发尤其是基于 Jetson 平台的边缘计算设备来说这绝对是项目从零到一最关键、也最容易踩坑的第一步。A603 载板作为承载 Jetson 核心模块如 Orin NX、Orin Nano的载体其固件和操作系统的状态直接决定了后续所有算法部署、性能调优的成败。如果你手头也有一块崭新的或者需要恢复的 A603那么这篇从实战中总结的刷机指南或许能帮你省下大把的排查时间。简单来说这个过程就是通过一台 Linux 主机我们称之为“刷机主机”将包含 Bootloader、内核、设备树、根文件系统在内的完整 JetPack 镜像通过 USB 或网络的方式写入到 A603 载板上的 eMMC 存储中。这不仅仅是复制文件更涉及到引导流程的修复、设备树的适配以及驱动程序的注入。对于刚接触 Jetson 生态的开发者这个过程可能会被各种术语和报错困扰而对于有经验的工程师如何高效、批量地完成刷写也是一项值得优化的技能。接下来我将拆解整个流程从准备工作到实操步骤再到避坑指南带你走通这条必经之路。2. 核心需求与准备工作解析2.1 为什么需要刷写 JetPackA603 载板出厂时其 eMMC 存储可能是空白的或者预装了某个旧版本、基础版本的系统。为了运行我们自己的应用程序尤其是依赖 CUDA、TensorRT、DeepStream 等英伟达特定技术的项目我们必须安装与之深度集成的 JetPack SDK。JetPack 并非一个通用的 Ubuntu 系统它是英伟达为 Jetson 平台量身定制的软件开发套件包含了针对其 GPU、AI 加速器如 NVDLA、PVA优化的驱动、库和工具链。直接安装通用 Linux 发行版将无法发挥硬件全部性能甚至无法启动。因此刷写 JetPack 是让 A603 载板“活”起来并具备强大 AI 边缘计算能力的唯一标准路径。2.2 硬件与软件准备清单在开始刷写前请确保你已备齐以下“弹药”刷机主机一台运行Ubuntu 20.04 或 22.04 LTS的 x86_64 电脑或虚拟机。这是英伟达官方工具链支持最完善的环境。强烈建议使用物理机虚拟机有时在 USB 控制权传递上会遇到问题。A603 载板与核心模块确保你的 Jetson 核心模块例如 Jetson Orin NX 16GB已正确安装到 A603 载板上。检查所有连接器是否扣紧特别是核心模块与载板之间的连接。电源为 A603 载板准备符合规格的电源适配器通常是 19V。刷机过程中供电必须稳定。USB 数据线一根Micro-USB 转 USB-A数据线用于连接载板的Recovery USB 端口通常标记为FC_REC或REC到刷机主机。这是进入强制恢复模式Force Recovery Mode的关键。网络连接可选但推荐一根网线连接 A603 载板的以太网口和你的局域网。这为后续通过网络刷写更快或安装额外组件提供了便利。显示器与输入设备可选首次启动后配置系统时可能需要。也可以通过串口终端进行无头Headless设置。注意请务必确认 USB 线是数据线而非仅能充电的电源线。很多刷机失败的第一步就源于此。2.3 软件环境部署在刷机主机上我们需要安装英伟达提供的刷机工具。最核心的是sdkmanager但更底层、更直接的工具是 NVIDIA Flash Tools。步骤一安装依赖包打开刷机主机的终端执行以下命令更新并安装基础依赖sudo apt update sudo apt install -y python3 python3-pip python3-dev python3-setuptools \ qemu-user-static libxml2-utils simg2img img2simg \ libffi-dev libssl-dev libjpeg8-dev zlib1g-dev \ udev net-tools usbutils步骤二下载并安装 SDK Manager访问英伟达官方网站下载对应你主机 Ubuntu 版本的 SDK Manager.deb安装包。通常命令安装如下sudo apt install ./sdkmanager_[version]_amd64.deb安装后可以在应用菜单中找到它。但请注意对于单纯的刷机我们可能不会全程使用其 GUI其命令行工具sdkmanager和它背后调用的flash.sh脚本才是核心。步骤三获取 JetPack 镜像有两种方式通过 SDK Manager 下载运行 SDK Manager登录英伟达开发者账号选择对应的 Jetson 核心模块型号和 JetPack 目标版本SDK Manager 会下载完整的镜像和组件。这种方式集成度高但下载体积巨大通常超过10GB。直接下载 BSP 和根文件系统对于需要定制或离线环境的开发者可以从英伟达开发者网站单独下载 Board Support Package (BSP) 驱动包和 Sample Root Filesystem。这种方式更灵活但需要手动组合。为了流程的完整性我们假设通过 SDK Manager 获取了全套资源。它会将下载的镜像存放在~/nvidia/nvidia_sdk/JetPack_[version]_[target]这样的目录下。3. 刷写流程全解析与实操3.1 进入恢复模式与载板建立通信桥梁这是整个刷机过程中最具“仪式感”也最关键的一步。A603 载板必须进入 Force Recovery Mode主机才能识别为一个需要刷写的 USB 设备。连接硬件确保 A603 载板断电。使用 Micro-USB 数据线连接载板的Recovery USB 口非普通的 USB 口到刷机主机。连接网线可选用于后续步骤。暂时不要连接电源。触发恢复模式找到载板上的Force Recovery按钮通常是一个小孔标记为F_REC或REC和Power按钮。按住 Force Recovery 按钮不松开。在按住 Force Recovery 按钮的同时按下并松开 Power 按钮给载板上电。继续按住 Force Recovery 按钮大约2秒钟然后松开。此时载板上的主要指示灯可能呈现特定的状态例如电源灯常亮其他灯熄灭或特定闪烁表明它已进入恢复模式而非正常启动。主机端验证 在刷机主机上打开终端输入lsusb命令。如果操作成功你应该在输出列表中看到一条包含NVIDIA Corp.和APX或recovery mode字样的设备信息例如Bus 003 Device 007: ID 0955:7f21 NVIDIA Corp. APX这个0955:7f21就是 Jetson 设备在恢复模式下的 USB 厂商/产品 ID。看到这个恭喜你最难的一关已经过了。实操心得如果lsusb没有显示 APX 设备请按顺序检查USB线是否插在恢复口、线缆是否完好、是否严格按照“先按住F_REC再上电”的顺序操作。有时需要多试一两次。也可以尝试在主板上完全断电拔掉电源适配器等待10秒后再重试。3.2 使用 Flash.sh 脚本进行刷写在 SDK Manager 下载的目录中或在你解压的 BSP 包里找到Linux_for_Tegra/目录。所有刷机操作都在这个目录下进行。切换到刷机目录并准备环境cd ~/nvidia/nvidia_sdk/JetPack_[version]_[target]/Linux_for_Tegra/如果是第一次使用该 BSP 包可能需要安装一些依赖并应用二进制补丁sudo ./apply_binaries.sh这个脚本会将核心模块特定的驱动、设备树二进制文件等部署到根文件系统镜像中。执行刷写命令 最基本的刷写命令是针对整个设备的sudo ./flash.sh jetson-orin-nx-devkit mmcblk0p1这里需要根据你的核心模块型号和载板类型替换jetson-orin-nx-devkit。对于 A603 载板它可能对应一个特定的配置如jetson-orin-nx-a603。最准确的方法是查阅 A603 载板的官方文档或Linux_for_Tegra/bootloader/目录下的板级配置文件.conf文件。 命令最后的mmcblk0p1指定了将系统刷写到 eMMC 存储的第一个分区。理解刷写过程 执行flash.sh后脚本会做一系列工作检查主机是否识别到恢复模式下的设备。将引导加载程序如cboot、UEFI、内核镜像、设备树二进制文件通过 USB 发送到载板。将准备好的根文件系统镜像rootfs也传输过去。在载板端这些数据被写入 eMMC 的相应分区。 整个过程会在终端有详细的滚动日志通常需要5到15分钟取决于镜像大小和 USB 速度。当看到*** Flashing completed successfully ***或类似的成功提示时即可进入下一步。3.3 首次启动与初始配置刷写成功后先给 A603 载板完全断电拔掉电源线。断开恢复模式连接拔掉连接 Recovery 口的 USB 数据线。正常上电启动只连接电源适配器按下 Power 按钮。此时系统应该从刚刚刷写好的 eMMC 启动。进行系统配置如果有显示器你将看到标准的 Ubuntu 首次启动设置界面包括语言、时区、用户名、密码、主机名等。按提示完成即可。无头Headless配置这是更常见的工业场景。你需要通过串口登录。连接载板的调试串口通常是 UART标有DEBUG或CONSOLE到主机的 USB 转串口适配器使用终端工具如minicom,picocom,screen以正确的波特率通常是 115200连接。上电后串口终端会输出内核启动日志并在首次启动时引导你完成同样的用户名、密码等配置。完成配置后你将获得一个可登录的 JetPack 系统桌面或命令行界面。4. 高级配置与定制化刷写4.1 定制根文件系统直接使用 SDK Manager 下载的根文件系统是通用版本。在实际项目中我们往往需要预装自己的软件、库修改配置文件甚至精简系统。解压与挂载Linux_for_Tegra/目录下的根文件系统通常是一个压缩的rootfs.tar.gz文件。我们可以将其解压到一个目录进行修改sudo rm -rf ./rootfs # 清理旧目录 sudo tar -xpzf ./rootfs/targetnvidia-ubuntu-ubuntu-2204-jetson-[version].tar.gz -C ./现在./rootfs目录就是你的根文件系统。使用 chroot 进行修改 为了能在主机环境中“模拟”运行目标系统的环境来安装软件如apt需要使用chrootcd Linux_for_Tegra sudo chroot ./rootfs执行后你的命令行提示符会变化此时的操作就在目标根文件系统内了。你可以apt update apt install [your-packages]编辑/etc/下的配置文件。添加你自己的用户、SSH 密钥等。 操作完成后输入exit退出 chroot 环境。重新打包并刷写 修改完成后需要重新打包并集成到刷机流程中sudo ./apply_binaries.sh # 重新应用二进制文件到修改后的rootfs sudo ./flash.sh [board] mmcblk0p1 # 再次刷写脚本会自动使用修改后的rootfs4.2 网络刷写更快更稳定对于批量部署或 USB 刷写不稳定的情况网络刷写使用flash.sh的-N选项是更好的选择。它要求载板和主机在同一个局域网段。主机端准备首先主机需要有一个固定的 IP并允许 TFTP 和 NFS 服务。配置刷写命令在flash.sh命令中指定主机的 IP 地址。sudo ./flash.sh -N [host_ip] [board] mmcblk0p1例如sudo ./flash.sh -N 192.168.1.100 jetson-orin-nx-a603 mmcblk0p1载板端操作让载板进入恢复模式步骤同前。此时flash.sh脚本会通过 TFTP 将引导加载程序等小文件传给载板然后通过 NFS 挂载根文件系统镜像进行写入速度远超 USB 2.0。4.3 分区管理与备份了解 Jetson 的设备分区表对于高级运维至关重要。刷写后你可以通过进入恢复模式并使用flash.sh的查询命令来查看分区信息或者直接在运行的系统里使用lsblk和sudo parted /dev/mmcblk0 print查看。备份整个系统你可以将运行中的设备完整备份成一个镜像文件用于克隆或恢复。这通常需要在恢复模式下使用nvflash或dd命令结合flash.sh的参数来实现是一个反向操作的过程。例如可以生成一个可用于刷写的rootfs备份。5. 常见问题排查与实战技巧刷机过程很少一帆风顺以下是我在实践中遇到的一些典型问题及解决方案。5.1 恢复模式识别失败现象lsusb看不到NVIDIA Corp. APX设备。排查检查硬件连接确认 USB 线连接的是Recovery 口且线缆良好。尝试更换 USB 端口或线缆。检查操作顺序务必严格遵守“断电 - 按住 F_REC - 上电 - 保持2秒 - 松开 F_REC”的顺序。可以尝试在按住 F_REC 上电后多等几秒再松开。检查主机 USB 权限运行lsusb时是否需要sudo可以尝试将当前用户加入plugdev组或创建/etc/udev/rules.d/下的规则文件。载板状态有些载板在已有系统的情况下进入恢复模式的时机窗口很短。可以尝试在完全断电拔电源后先按住 F_REC再插入电源然后按 Power 键。5.2 刷写过程卡住或报错现象flash.sh脚本运行后卡在某个步骤如sending或报错USB device not found、Command failed。排查供电不足确保使用官方推荐或足功率的电源适配器。刷写过程尤其是写入 eMMC 时功耗较大。USB 干扰拔掉不必要的 USB 设备。尝试使用主机后置的 USB 端口通常直接连接南桥更稳定。BSP 版本不匹配确认你使用的Linux_for_Tegra目录下的 BSP 和驱动与你的 Jetson 核心模块型号及 JetPack 目标版本完全匹配。不匹配的 BSP 是刷机失败的常见原因。查看详细日志flash.sh脚本支持更详细的日志输出可以尝试添加-v或--verbose参数来获取更多信息。5.3 系统刷写成功但无法启动现象刷写过程显示成功但上电后无显示串口无输出或卡在启动 LOGO。排查引导顺序确认载板没有设置从其他设备如 NVMe SSD启动。检查载板跳线或 BIOS/UEFI 设置。设备树错误这是最可能的原因之一。flash.sh使用的设备树二进制文件.dtb必须与你的载板硬件如传感器接口、显示接口完全匹配。确认你使用的board参数是否正确对应 A603 载板。仔细查阅载板手册看是否有特殊的刷写配置。文件系统损坏虽然刷写成功但写入过程中可能因断电等原因导致数据错误。可以尝试重新刷写一次。核心模块未插好极端情况下重新插拔一下 Jetson 核心模块确保连接器接触良好。5.4 网络刷写特定问题现象网络刷写时载板无法通过 TFTP 获取文件。排查防火墙关闭主机防火墙或放行 TFTP (69/UDP) 和 NFS 相关端口。IP 地址确认-N参数指定的主机 IP 正确且与载板在同一子网。载板在恢复模式下会通过 DHCP 获取 IP确保网络中有 DHCP 服务器。服务配置确认主机上的tftpd-hpa和nfs-kernel-server已正确安装、配置并运行且目录权限设置正确。最后分享一个提升效率的小技巧对于需要频繁刷写测试的场景可以在flash.sh完成后不立即重启载板而是通过-r参数让脚本在刷写结束后自动执行一些初始化或验证命令。另外将常用的刷写命令、环境变量设置写成脚本可以极大减少重复劳动和输入错误。刷写 A603 这类载板耐心和细致的文档阅读往往比技术本身更重要尤其是在面对硬件版本迭代和软件版本更新时务必以官方发布的最新文档为准。

相关新闻