故障后数据备份
早期 JetPack 5.x 可用:
sudo ./nvflash --read rootfs_backup.img --rawdev nvme0n1p1
但在 6.x 中已被移除。
目前 NVIDIA 官方文档也建议用硬件方式导出数据。
只是要保存项目文件(而非系统镜像),硬件读取是唯一简单可靠方案
软件方法:改用 tegraflash.py 来备份
目前 Jetson 进不了系统(rootfs 挂载失败) 从外部主机上 直接读出 rootfs 镜像,再从中提取该目录;
备份的数据(例如 /home/.../Documents)存在于 Jetson 板子内部的 NVMe 或 eMMC 存储里,现在 Jetson 进不了系统,也无法在 Jetson 自身执行命令; 要换一种思路:不在 Jetson 上执行命令,而是在 另一台电脑(主机)上读取 Jetson 的磁盘内容;
让另一台电脑通过 USB 线,把 Jetson 的 NVMe/eMMC 当作“外接硬盘”来访问,从而把文件拷出来。
| 名称 | 设备 | 当前用途 |
|---|---|---|
| 主机(Host PC) | Ubuntu 电脑(刷机、连接 USB 线的那台) | 执行备份命令 |
| Jetson Orin NX | 板子(里面有需要备份的文件) | 进入 Recovery 模式,让主机读取它的数据 |
总体思路
- 让 Jetson 进入 Recovery 模式(这样主机能访问 Jetson 的 NVMe 数据)
- 用主机电脑执行
nvflash命令,把整个 rootfs 备份为镜像文件 - 在主机上挂载这个镜像,复制出
/home/.../Documents/文件夹
| 操作 | 在哪台设备上执行 | 目的 |
|---|---|---|
| 进入 Recovery 模式 | Jetson | 让主机能读取 Jetson 磁盘 |
| 查找 Linux_for_Tegra 目录 | 主机(Ubuntu) | 找到 nvflash 工具 |
| 运行 nvflash 命令 | 主机 | 把 Jetson 系统盘完整备份 |
| 挂载并复制文件 | 主机 | 把 Documents 拷出来 |
备份命令是在主机上运行的,因为现在 Jetson 无法启动,它的 NVMe/eMMC 只能通过主机访问。
1 Jetson 进入 Recovery 模式
先按住 REC 不放,然后按 RES(部分型号为RST),等待1s,再依顺序放开RES
REC:
2 用 USB-C 线连接到主机(Ubuntu)
终端输入:
lsusb
# 出现 说明 Jetson 连接成功
Bus 001 Device 005: ID 0955:7321 NVIDIA Corp. APX
3 在主机上进入刷机目录
刷机工具目录(Linux_for_Tegra):是 NVIDIA 官方 Jetson 系统镜像中的主要文件夹
Linux_for_Tegra/├── flash.sh├── nvflash├── bootloader/├── tools/├── rootfs/└── README_Massflash.txt
所有的刷机命令(sudo ./flash.sh jetson-orin-nx-devkit nvme0n1p1)都是在这个目录下执行的
ls
flash.sh bootloader rootfs tools README_Massflash.txt ...

JetPack 6 以后都改用 Python 脚本
进到 bootloader 子目录,使用新的备份命令
cd ~/T808_JP6.1/Linux_for_Tegra/bootloader # 进入 bootloader 目录
ls | grep tegraflash # 查看 tegraflash 文件是否存在
zzzz@ubuntu:~/T808_JP6.1/Linux_for_Tegra/bootloader$ ls | grep tegraflash
# tegraflash_impl_t234.py
# tegraflash_internal.py
# tegraflash.py # 说明路径正确
4 读取整个 NVMe 系统分区(备份)
体积大约几十 GB,请保证磁盘空间足够
常用命令:
sudo ./nvflash --read rootfs_backup.img --rawdev nvme0n1p1
JetPack 6.x 以后 NVIDIA 不再单独提供 nvflash 二进制,而是通过 flash.sh 脚本内部调用 tegraflash.py 完成同样的底层工作
zzzz@ubuntu:~/T808_JP6.1/Linux_for_Tegra/bootloader$ sudo python3 tegraflash.py --read rootfs_tmp.img --rawdev nvme0n1p1
出现错误:option --read not recognized
在 JetPack 6.1 (L4T 36.x) 版本中,tegraflash.py 的命令格式已经变了,不再支持 --read 参数,NVIDIA 从 JetPack 6 开始,把底层刷机工具改版成新的 tegraflash.py 框架,
用于刷写而非单纯读取
NVIDIA 从 JetPack 6 开始,把所有底层刷机操作都整合进了新的 tegraflash.py 框架。旧的 nvflash 二进制(以及参数 --read / --download )被完全移除
所以nvflash 和 tegraflash.py --read 在 JetPack 6 中都无法直接备份整个 NVMe 分区
不能往下进行:
5 通常还需要验证备份是否成功:ls -lh rootfs_backup.img;看到一个几十 GB 的文件,说明成功备份;
6 挂载备份镜像读取你/home/Documents
# 创建挂载点并挂载:
sudo mkdir /mnt/jetson_rootfs
sudo mount -o loop rootfs_backup.img /mnt/jetson_rootfs# 查看内容:
ls /mnt/jetson_rootfs/home/
# 能看到你的用户名文件夹
# ubuntu/
# nvidia/
# joy/# 进入你自己的用户目录 ~/Documents/lanedetect-decision-aarch64jetson
cd /mnt/jetson_rootfs/home/你的用户名/Documents/
7 复制到主机安全位置
# 复制到主机的桌面:
sudo cp -r /mnt/jetson_rootfs/home/nvidia/Documents/lanedetect-decision-aarch64jetson ~/Desktop/Jetson_Backup_lanedetect/
# 备份完成后卸载镜像:
sudo umount /mnt/jetson_rootfs
| 步骤 | 操作 | 作用 |
|---|---|---|
| 1 | 进入 Recovery 模式 | 让主机识别 Jetson 存储 |
| 2 | 用 nvflash 读取 rootfs | 备份整个系统分区 |
| 3 | 挂载 rootfs 镜像 | 打开文件系统 |
| 4 | 拷贝 Documents | 保存目标文件 |
命令汇总
# 进入刷机目录
cd ~/Documents/nvidia/nv_sdk_manager/JetPack_6.0/Linux_for_Tegra/# 备份整个 rootfs 到当前目录
sudo ./nvflash --read rootfs_backup.img --rawdev nvme0n1p1# 创建挂载目录并挂载镜像
sudo mkdir /mnt/jetson_rootfs
sudo mount -o loop rootfs_backup.img /mnt/jetson_rootfs# 拷贝你的 Documents 文件夹(请改成真实用户名)
sudo cp -r /mnt/jetson_rootfs/home/ubuntu/Documents ~/Desktop/Jetson_Backup_Documents/# 卸载镜像
sudo umount /mnt/jetson_rootfs
其他方法(未尝试)
最推荐方式(硬件直读法)
适用:NVMe 启动的 Jetson Orin NX
思路:把 Jetson 的 NVMe 取下,直接作为外接硬盘读。
步骤
- 关机并断电 Jetson。
- 取下 NVMe SSD(M.2 接口的那根“小硬盘”)。
- 用 NVMe → USB 3.2 转接盒插入主机 Ubuntu。
- 在主机上挂载读取:
sudo fdisk -l # 查看设备名,例如 /dev/nvme0n1p1
sudo mkdir /mnt/jetson_nvme
sudo mount /dev/nvme0n1p1 /mnt/jetson_nvme
- 复制目标文件夹:
sudo cp -r /mnt/jetson_nvme/home/nvidia/Documents/lanedetect-decision-aarch64jetson ~/Desktop/Jetson_Backup/
- 卸载:
sudo umount /mnt/jetson_nvme
这是目前 最简单、最快速、100% 可行 的办法。
不依赖 SDK Manager 或 tegraflash.py ,数据安全且无损。
二、如果不能拆 NVMe :用系统镜像回读法
思路:让主机重新 flash 一个系统到 Jetson,但 保留 NVMe 数据分区,
然后在新系统中挂载旧的 NVMe 分区把数据拷出。
方法概要
- 在 SDK Manager 里重新刷 Jetson OS,但在 “Target Components” 阶段取消 “Flash OS Image to Target” (即不重新分区)
- Jetson 重新启动后,用命令挂载旧分区(通常仍为
/dev/nvme0n1p1):
sudo mkdir /mnt/old_nvme
sudo mount /dev/nvme0n1p1 /mnt/old_nvme
- 复制旧数据:
cp -r /mnt/old_nvme/home/nvidia/Documents/lanedetect-decision-aarch64jetson ~/Documents/
- 卸载:
sudo umount /mnt/old_nvme
这方法对熟悉 SDK Manager 参数的人可行,但风险是如果勾错选项会覆盖旧 NVMe 内容。
三、命令行块复制法(仅限开发用)
⚙️ 思路:进入 Jetson 的 initramfs 或 Recovery 后用底层工具(例如
dd)读取原始 NVMe 块设备。
但 JetPack 6 的 recovery 模式不会自动暴露 NVMe 为 USB 块设备,所以普通 PC 无法直接 dd。
因此——除非有 UART 调试 initramfs 或 板载 SD 启动镜像,否则此路行不通。
四、综合建议
| 情况 | 建议方案 |
|---|---|
| 能拆 NVMe (带转接盒) | 🟢 方案 1:硬件直读 |
| NVMe 不能拆但能重新刷机 | 🟡 方案 2:保留分区刷机后挂载旧盘 |
| 需要底层 block 镜像备份 | 🔴 JetPack 6 暂不支持 --read,需使用 JetPack 5.x 工具或 UART boot 调试 |
------------------------- |
| 能拆 NVMe (带转接盒) | 🟢 方案 1:硬件直读 |
| NVMe 不能拆但能重新刷机 | 🟡 方案 2:保留分区刷机后挂载旧盘 |
| 需要底层 block 镜像备份 | 🔴 JetPack 6 暂不支持 --read,需使用 JetPack 5.x 工具或 UART boot 调试 |
