news 2026/10/24 2:50:30

Jetson TX2刷机实战:从Recovery模式到JetPack 4.6.6完整部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Jetson TX2刷机实战:从Recovery模式到JetPack 4.6.6完整部署

手里这块TX2已经跟着我折腾了不少边缘计算的项目,前阵子系统被我玩到起不来,没办法,只能老老实实走一遍Jetson TX2刷机流程,装回官方为TX2支持的最新JetPack4.6.6。整个过程说难不难,但中间有几个坑如果不注意,很容易让人白等几个小时。这篇文章不是把官方文档翻译一遍,而是把我实际刷的时候用到的步骤、踩过的点、以及后来反复验证过的排查思路都整理出来,给同样手里有TX2、或者刚接手旧板子的朋友参考。

1. 为什么JetPack 4.6.6是TX2的“终点站”

1.1 TX2在JetPack版本矩阵里的位置

Jetson系列每一代都有自己的生命周期,JetPack并不是“一版通吃”。TX2属于较早的Parker架构平台,搭载的GPU是Pascal架构,而后面几代Jetson平台换了架构,底层驱动、内核、BSP全都跟着变。官方维护策略也分得很清楚:新一代JetPack虽然功能更强,但TX2的驱动和支持停留在JetPack 4.x系列,4.6.6就是这个系列最后一个比较完整的版本。

很多刚接触TX2的人会有一个疑问:既然JetPack 5、JetPack 6都出来了,为什么不能直接装新版?答案在于JetPack不是单纯的应用软件包,它还捆绑了特定的Linux内核、引导加载器、GPU驱动、CUDA运行时和多媒体API。TX2的硬件只适配到L4T 32.x这一代BSP,新版JetPack对应的L4T已经是35.x、36.x甚至更高,强行拆包装上,大概率起不来,就算起来GPU也是不工作的。

所以“TX2支持的最新JetPack4.6.6”这句话,不是说TX2还能继续升级,而是说它已经到头了。对长期使用TX2的人来说,4.6.6就是最稳定、最完整的终点镜像。

1.2 这套版本到底包含哪些东西

JetPack 4.6.6本质上是一个“系统+开发环境合集”。刷进去之后,你会得到一个基于Ubuntu 18.04的完整Linux系统,同时带上了官方预编译好的CUDA、cuDNN、TensorRT、OpenCV、VPI等组件。也就是说,刷机完成后不只是能开机,连基础AI推理环境都帮你搭好了一大部分。

这一点在实际开发中非常省事。我不用再自己折腾驱动版本匹配,也不用担心某个库和内核模块对不上。尤其是TensorRT这类深度依赖底层版本的东西,预编译好直接可用,比自己从源码编译不知道高到哪里去了。

1.3 对TX2的未来预期要先摆正

JetPack 4.6.6之后,TX2基本不会再有大版本更新。这意味着两件事:一是这板子的定位已经从“主力开发平台”变成了“存量稳定平台”,适合做工业设备、固定算法节点、边缘推理盒这类不需要频繁升级的场景;二是如果你打算跑最新的大模型推理框架,TX2会有点吃力,很多新特性也不再向下兼容。

我自己对TX2的态度是:把它当做一个可靠的嵌入式Linux+GPU平台来用,而不是追逐最新框架。刷JetPack 4.6.6,就是把这个平台的底子打牢。

2. 刷机前,先把手头的东西盘一盘

2.1 硬件清单:少了哪样都容易卡住

刷Jetson TX2之前,先把物料准备好,临时找东西很容易把流程搞乱。我列一个自己常用清单:

物料说明备注
TX2模块+载板原厂开发板或第三方载板均可载板不同,Recovery按钮位置可能不同
主机电脑必须是x86架构的Ubuntu系统SDK Manager不提供Windows版
USB数据线能传输数据的Micro-B/Type-C线很多“充电线”只供电不传数据,最容易坑人
电源适配器按载板规格供电原厂开发板一般需要12V DC,别拿手机充电头凑
显示器/键鼠刷完后首次进系统要用HDMI或DP看载板接口

这里要单独强调一下USB线的问题。Jetson刷机依赖主机通过USB和板子通信,如果线只是能充电不传数据,板子怎么折腾都识别不出来。我遇到过不止一次,换根线就好了。所以刷机前最好找一根确定能传数据的线,别用那种买杂牌设备附送的“电源线”。

2.2 为什么非要一台Ubuntu主机

TX2的刷机工具链只能在Linux下跑。Windows宿主机不行,macOS也不行。最省事的方案就是一台装了Ubuntu 18.04或者Ubuntu 20.04的x86电脑。虚拟机能不能用?能用,但要看USB直通是否靠谱。我自己不建议用虚拟机,因为刷机过程中SDK Manager会对USB设备做大量读写,虚拟机一旦USB掉线,整个刷写过程就报废,最后还得重来。

主机配置不用很高,但磁盘空间一定要留够。JetPack 4.6.6下载的安装包、解压缓存、刷写临时文件加起来轻松超过20GB,建议至少留出40GB。CPU和内存倒不是瓶颈,一般四核八线程、8GB内存就够跑了。

2.3 账号、网络这些“软准备”

刷JetPack最推荐的方式是通过官方SDK Manager工具,这个工具需要登录官方账号。所以刷机前先去官网把账号注册好,省得刷到一半发现要登录,再翻邮箱验证。

网络环境也很关键。整个刷机过程会从官方服务器下载系统镜像和组件,如果网速不稳,下载速度慢只是浪费时间,更麻烦的是中途断流导致压缩包校验不过。有条件的话,优先用有线网络,别用高频跳动的无线网络。下载时间取决于网速,慢的时候我等过一个多小时,这个心理准备要有。

还有一个容易被忽略的点:主机和板子之间除了USB线,刷完系统之后组件安装阶段还要通过网络SSH连到板子上去。所以板子最好也提前接好网络,要么网线插路由器,要么准备好USB网卡,不然SDK Manager到“安装组件”那一步会一直卡住。

3. 进入Recovery模式:这个动作决定了后面顺不顺

3.1 为什么TX2刷机必须先进Recovery

TX2不像普通电脑那样用U盘装系统。它的系统写在板载eMMC里,正常情况下固件不允许你随便覆盖。Recovery模式是一段烧在芯片里的固件程序,进入之后芯片会通过USB向主机开放一个下载接口,主机才能把新的bootloader和系统镜像完整写进去。

理解这一点很重要:不是“开机进BIOS改启动项”那样的逻辑,而是芯片先降级成一个可写入的编程状态。所以刷机前检查Recovery是否成功,是整个流程中最关键的一步。Recovery没进,后面的所有操作都是白等。

3.2 不同载板上的“Recovery按键”怎么找

原厂Jetson TX2 Developer Kit载板上一般有明确的Force Recovery按键,旁边会标注“REC”或者“FRec”。第三方载板就五花八门了,有的做成拨码开关,有的叫“Recovery Switch”,有的甚至需要短接引脚。

我建议先翻一下自己载板的硬件手册,找到Recovery模式说明。如果实在没有手册,可以看载板丝印,凡是标REC、SW1、BOOT、FORCE RECOVERY相关的跳线或按键,都可能是入口。

原厂开发板常见的进入方法是:先断开电源,按住Force Recovery键不放,然后按一下Reset键,继续保持按住Force Recovery键大约2秒,最后通电或者松开。实际顺序不同载板会有差异,但核心逻辑是让芯片在上电瞬间读到USB下载模式标志。

3.3 用lsusb验证是否真的进了Recovery

按完处理之后,不要急着打开SDK Manager,先在主机上确认板子被系统识别。打开终端执行:

lsusb -d 0955:

如果Recovery模式进入了,这条命令会输出一行设备信息,开头是0955,后面跟着一串产品ID。如果你看到这种输出,说明板子已经处于可刷写状态。如果没有任何输出,那就别继续看后面的步骤了,先回头检查按键时序、电源和USB线。

这里再提醒一个细节:插USB线时,板子最好已经上电并处于Recovery状态;有的板子会要求先插USB再上电,所以要以你的载板说明为准。我吃过亏,以为只要插上USB就算连接,实际上板子必须处于Recovery态,不然主机永远只能看到一个未知设备或者什么都不显示。

4. 用SDK Manager刷JetPack 4.6.6:完整过程

4.1 SDK Manager和手动刷写,我为什么推荐前者

JetPack安装有两条路:一条是用官方SDK Manager图形工具,一条是手动下载L4T BSP再用命令行刷写。对绝大多数人,我推荐SDK Manager。它把“下载镜像、烧录系统、部署组件”串在同一个流程里,而且会自动识别你的板子型号,不容易把手动刷写时常见的型号参数写错。

手动刷写适合什么情况?适合你只想刷一个最小系统,不要CUDA、TensorRT、OpenCV这些预装组件,或者你需要脚本自动化批量刷机。手动方式更“瘦”,但后续组件安装要自己一步步处理。第一次折腾TX2的人,没必要一上来就手动玩。

4.2 安装SDK Manager

SDK Manager以deb安装包形式提供,Ubuntu下直接安装:

sudo apt install ./sdkmanager_*.deb

装完后在终端里启动:

sdkmanager

首次启动会要求登录官方账号。登录成功后,左侧列表选目标型号,这里选TX2系列。右侧系统版本里选择JetPack 4.6.6。

这里有个容易忽略的选项:下载目录。SDK Manager默认会下载到用户目录下,如果你的系统盘剩余空间不够,它可以让你指定到一个空间充足的分区或外接硬盘。我建议刷机前就把这个路径设置到一个至少有40GB剩余空间的目录,不然下载到一半报磁盘满,更麻烦。

4.3 选择组件:不是越多越好

SDK Manager会让你选择要安装哪些组件。默认是全选,但我的建议是根据项目需要来勾。如果你只是跑推理,TensorRT、CUDA、OpenCV这几个是必需的;如果不需要做视觉处理,VisionWorks可以去掉;如果不需要多媒体编解码,多媒体服务也可以不装。

组件装得越多,刷写后安装阶段越久,占用eMMC空间也越大。TX2的eMMC通常只有32GB,系统本身加上几个核心库就已经吃掉不少。能省的组件尽量省。

4.4 刷写过程中到底发生了什么

点击安装后,SDK Manager会先下载完整的JetPack包,然后检测USB设备。如果前面Recovery模式验证过关,这里应该直接识别到TX2。接着它会先写入bootloader和内核,再写入Ubuntu根文件系统,这个过程中板子上的小屏幕如果有画面,能看到启动状态变化。

写入完成后,SDK Manager会要求你给板子设置用户名和密码,然后板子会自动重启。重启后它会尝试通过SSH登录板子,并把之前勾选的组件一个个传上去安装。

这一步是最考验耐心的:组件安装时间从20分钟到1个多小时不等。期间板子看起来好像已经进入了系统桌面,但进度条还在动,千万不要这时候去动USB线,也不要手动重启板子。我见过很多人在这个阶段误判“刷完了”,直接拔线,结果系统根本没部署完,最后只能从头再来。

4.5 手动刷最小系统的替代方案

如果你需要手动刷,流程会简洁很多。下载L4T BSP和对应的Root File System压缩包,解压后将rootfs文件放进Linux_for_Tegra目录,然后执行:

cd Linux_for_Tegra sudo ./apply_binaries.sh sudo ./flash.sh jetson-tx2

apply_binaries.sh会把驱动和库文件打进rootfs,flash.sh则负责真正烧录。这个方式不会自动装CUDA那些组件,适合做定制系统镜像。注意型号参数要写对,TX2一般用jetson-tx2,如果是TX2 4GB版或者TX2i,需要看BSP里对应的设备名,写错了会刷成错误的配置。

5. 刷完只是开始:开机验证与基础环境整理

5.1 第一次开机先别急着跑程序

刷完系统后,接上显示器、键盘,通上电,看到Ubuntu 18.04的桌面才算成功。第一次开机系统会进入初始化设置,设置语言、时区、用户名和密码。这些信息后面SSH连接的时候还要用到,记住密码。

进系统之后,我习惯先打开终端确认内核和L4T版本:

cat /etc/nv_tegra_release uname -a

能看到# R32或REVISION相关版本号,就说明L4T已经正确刷进去了。这个版本必须和你下载的JetPack 4.6.6对应上,如果版本对不上,说明中间烧录环节出了问题。

5.2 确认组件是否真正可用

JetPack刷完后,组件不是每个都保证能用,尤其是OpenCV这种容易被系统包冲突影响的库。建议做一次快速验证:

python3 -c "import cv2; print(cv2.__version__)"

如果输出版本号,说明OpenCV可用。CUDA一般会安装在/usr/local/cuda,可以检查:

ls -l /usr/local/cuda

再配合dpkg看看核心包状态:

dpkg -l | grep l4t

看到一堆l4t相关的包状态是ii,就说明系统驱动层正常。

TX2上还有一个很实用的小工具叫tegrastats,可以直接看SoC温度、CPU占用、GPU频率、内存占用。刷完系统后跑一下,心里立刻有数:

tegrastats

按Ctrl+C退出。这个命令在嵌入式Jetson上比桌面系统的状态监控靠谱得多,因为它能直接读取Tegra芯片内部统计信息。

5.3 把性能模式调到你要的水平

TX2出厂默认的电源管理不一定是最高性能配置。它支持多种电源模式,系统里有一个命令可以查看和切换:

nvpmodel -q

-q查看当前模式,定义列表里一般会有Max-N、Max-P、Max-Q等选项。Max-N是性能最高的模式,适合跑AI推理;Max-Q更省电,适合功耗敏感的现场部署。我自己的习惯是:刷完机马上切成Max-N,先确认硬件稳定性,后续再按实际功耗需求调整。

这里要注意,切换电源模式后最好重启一次,让内核完整加载新的调频策略。

5.4 磁盘容量和包管理的基本检查

TX2的eMMC容量不大,刷完JetPack 4.6.6和核心组件后,剩余空间可能只有十几个GB。第一件事就是看df -h,确认根分区没有异常占用。如果剩余空间很小,可以把系统自带的LibreOffice、游戏这些无关桌面软件卸掉,README里通常没人提,但卸载后能省出一两GB。

sudo apt remove libreoffice-* -y sudo apt autoremove -y

这只是可选项,但做边缘部署时,每一GB都很值钱。

6. 刷机路上我遇到的那些坑,一条条给你盘清楚

6.1 lsusb里看不到0955设备

这是刷机过程中最高频的问题。从经验看,原因一般有三个方向:

第一,板子根本没有进入Recovery模式。常见误操作是只按了Reset键,没有按Recovery键;或者按Recovery的时机不对。重新检查按键顺序,板子断电重来。

第二,USB线只供电不传数据。换一根确定能传数据的线,最好换一个主机USB口,特别是不要用机箱前面板上那种供电不稳的口。

第三,主机的USB权限问题。有时普通用户看不到设备,可以加sudo再跑一次lsusb。如果sudo下能看到,那说明权限配置问题,彻底解决是把当前用户加进plugdev组:

sudo usermod -aG plugdev $USER

改完注销重登一次。

6.2 SDK Manager卡在组件安装阶段

这种情况一般出现在刷机完成、板子已经进系统准备装组件的时候。原因多半是SDK Manager无法通过SSH连到板子。最常见的诱发因素:板子的用户名密码没设置成功、网络变化导致IP变了、或者板子上SSH服务没起来。

如果卡了很久,我的处理办法是:先等10分钟,观察板子屏幕上是否进入了Ubuntu桌面。如果已经进桌面但SDK Manager还没连上,就手动在网络里确认板子IP,然后用电脑试一下SSH:

ssh 用户名@板子IP

能手动连上,说明SSH本身没问题,问题出在SDK Manager的自动配置上,可以重启SDK Manager,它会识别到板子状态,继续安装组件。如果SSH连不上,说明板子系统初始化不完整,建议重新刷。

6.3 刷机中断后会不会变“砖”

Jetson平台最让人放心的一点是,只要Recovery模式还能进,板子基本不会被刷死。我刷机中断过好几次,不管是在bootloader阶段断电还是在文件系统写入时拔线,只要重新进入Recovery模式,再跑一次SDK Manager就能恢复。

真正要害怕的是把bootloader区刷到一半断电导致eMMC分区表损坏,这种情况下可能需要进入更底层的恢复接口。但绝大多数日常刷机操作,都不至于到那一步。所以遇到中断,先不要慌:断电,重按Recovery,确认lsusb有设备,再刷一遍。

6.4 刷完了但是开机黑屏

开机黑屏多数不是系统坏了,而是显示输出问题。TX2载板上的HDMI/DP输出可能不兼容某些显示器,或者分辨率设置异常。先做两件事:把显示器换成1080P的普通显示器,用标准HDMI线;同时拔掉所有外设,只留电源、显示器和键盘。

如果还黑屏,可能启动过程卡在内核阶段。此时可以看板子上的小屏幕指示灯或者串口日志。原厂开发板一般有调试串口,接上串口能看到内核输出。实在不行就重新刷一遍,不用心疼时间。

6.5 eMMC空间不够的连锁反应

JetPack组件安装一半时,如果target上空间不足,SDK Manager会报错,有时还会留下一堆半安装的包。这种情况下系统表面能用,但某些库版本混乱。

我的建议是刷机前在组件选择界面上就狠心做减法;如果已经刷完才发现空间紧张,优先清理/var/cache/apt/archives下的无用deb包,再把不需要的桌面软件卸掉。不要用apt autoremove把所有包都删干净,有的包是系统依赖,删了会导致黑屏。

7. 关于备份、扩容和后续维护,再说几句

7.1 刷好一个干净系统后,先做个备份

TX2的系统在eMMC上,eMMC不像电脑硬盘那样拆下来插别的主机克隆。最稳妥的备份时机,就是刚刷完系统、还没装任何额外环境的时候。备份思路是块级镜像,把整块eMMC读出来存到外接硬盘。

具体操作不适合在板子运行时直接做,最好是再接一块可以启动的硬盘,或者用另一台Linux主机通过USB读。尽管过程有点麻烦,但备份一次能省下以后重复刷机的大量时间。对于要做批量生产的工程场景,一个干净的备份镜像价值是无可替代的。

7.2 用NVMe SSD给TX2扩容是常见玩法

TX2的eMMC容量是硬伤,但JetPack 4.6.6的BSP层面支持从外部存储启动。你可以在载板上接一块NVMe SSD或者高速U盘,把系统放到外部盘上跑。这样不但空间大了,软件安装也不用缩手缩脚。

不过这种做法对载板有要求,不是所有第三方载板都引出了PCIe/NVMe接口。如果你确定板子支持,刷机时可以把系统镜像目标指向外部存储,或者刷完后再手动迁移。迁移过程比直接刷机复杂,建议作为第二步优化,前期还是老老实实把eMMC流程跑通。

7.3 更新维护要克制

JetPack 4.6.6是TX2的最终适配版本,后续不要再想着从系统层面升级内核或跨版本升级组件。尤其不要手贱执行全量的apt upgrade把内核版本升上去,那样很容易突破官方测试过的L4T驱动边界,导致GPU驱动失效。

想安装新的Python库或者框架,尽量用虚拟环境,不要在系统全局环境里乱装。TX2的默认Python是3.6,很多新库已经不兼容了,遇到不支持的版本就手动装低版本,不要为了兼容新Python去动系统python,这很容易把OpenCV和TensorRT弄坏。

7.4 这块板子还能干什么

刷完JetPack 4.6.6之后,TX2最适合的场景其实是那些“算法固定、环境固定、部署后不动”的边缘设备。能耗比不算最优秀,但胜在平台成熟,踩坑资料多,官方组件闭源部分还是能拿到长期稳定的运行包。把它当作视频推流、模型推理、传感器数据预处理的前端小主机,再合适不过。

我自己刷完这块TX2后的习惯是:先做一次全盘镜像备份,然后确定电源模式和开机自启服务,之后日常使用就不再去改系统层的东西。Jetson TX2刷机这件事,说到底就是给这块老芯片一个有边界、可预期的运行环境,只要版本选对了,它能跑的年限比很多人想象中长得多。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/24 2:50:26

PX4四旋翼调参实战指南:从级联PID到振动治理

大概每个玩过四旋翼的人都会经历这样一个阶段:飞控装好了,电机转起来了,地面站连接也正常,但推油门的瞬间总觉得飞机不听使唤——要么往一边侧滑,要么低频晃动,要么干脆一打杆就来回震荡。这时候大多数人会…

作者头像 李华
网站建设 2026/10/24 2:49:05

10个Python自动化脚本:文件整理、表格处理、网页监测与定时汇报

Python自动化脚本最吸引人的地方,在于它能把“手动重复”压缩成一句话命令。我接触自动化快十年,见过太多人把时间花在重命名文件、合并表格、盯着网页刷新、等等,这些动作单独看都很小,但累积起来,一天至少能吃掉一两…

作者头像 李华
网站建设 2026/10/24 2:49:04

TurboQuant:KV Cache 4bit量化实现显存降6倍、吞吐升8倍

TurboQuant 这个名字,最近在大模型推理相关的讨论里出现频率不低。它让我印象最深的不是又一篇量化论文,而是一组看着有点“激进”的数字:KV Cache 经过压缩后,内存峰值可以降约 6 倍,同等硬件上的整体吞吐能提升约 8 …

作者头像 李华
网站建设 2026/10/24 2:48:00

从代码到架构:程序员认知升级的五个断层与六个训练

干了这么多年技术,我有一个特别明显的感受:很多程序员写代码的阶段根本没有瓶颈,真正的瓶颈出现在“把代码写对”之后。你能把接口设计得漂漂亮亮,也能在两周内交付一个模块,但一旦需要你来决定整个系统的走向、模块与…

作者头像 李华
网站建设 2026/10/24 2:48:00

传统MPCC在Simulink中的仿真实现:从预测模型到价值函数

做电机控制仿真的同行,应该对FOC双闭环这套打法很熟了:外环给转速,内环两个PI拧着d/q轴电流,SVPWM把电压指令调制成开关序列。这套组合拳成熟、稳定,从工业伺服到新能源车电机驱动,九成场合都在用它。但这套…

作者头像 李华
网站建设 2026/10/24 2:46:50

Jupyter Notebook转Python脚本:.ipynb转.py的完整方案与避坑指南

不知道你有没有碰到过这种场景:手里拿到一份别人发过来的.ipynb文件,或者自己在 Jupyter Notebook 里反复调了一下午,最终要交付的却是一个干净的.py脚本。Notebook 里的代码块、Markdown 笔记、中间试错的输出,全都混在一个 JSON…

作者头像 李华