当前位置: 首页 > news >正文

故障后数据备份

早期 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 )被完全移除

所以nvflashtegraflash.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 取下,直接作为外接硬盘读。

步骤
  1. 关机并断电 Jetson
  2. 取下 NVMe SSD(M.2 接口的那根“小硬盘”)。
  3. 用 NVMe → USB 3.2 转接盒插入主机 Ubuntu。
  4. 在主机上挂载读取:
sudo fdisk -l          # 查看设备名,例如 /dev/nvme0n1p1
sudo mkdir /mnt/jetson_nvme
sudo mount /dev/nvme0n1p1 /mnt/jetson_nvme
  1. 复制目标文件夹:
sudo cp -r /mnt/jetson_nvme/home/nvidia/Documents/lanedetect-decision-aarch64jetson ~/Desktop/Jetson_Backup/
  1. 卸载:
sudo umount /mnt/jetson_nvme

这是目前 最简单、最快速、100% 可行 的办法。
不依赖 SDK Manager 或 tegraflash.py ,数据安全且无损。

二、如果不能拆 NVMe :用系统镜像回读法

思路:让主机重新 flash 一个系统到 Jetson,但 保留 NVMe 数据分区
然后在新系统中挂载旧的 NVMe 分区把数据拷出。

方法概要
  1. 在 SDK Manager 里重新刷 Jetson OS,但在 “Target Components” 阶段取消 “Flash OS Image to Target” (即不重新分区)
  2. Jetson 重新启动后,用命令挂载旧分区(通常仍为 /dev/nvme0n1p1):
sudo mkdir /mnt/old_nvme
sudo mount /dev/nvme0n1p1 /mnt/old_nvme
  1. 复制旧数据:
cp -r /mnt/old_nvme/home/nvidia/Documents/lanedetect-decision-aarch64jetson ~/Documents/
  1. 卸载:
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 调试 |

http://www.dtcms.com/a/520023.html

相关文章:

  • C++(23):lambda可以模版参数
  • 全平台Ansible一键安装脚本:Ubuntu/Debian/RHEL全支持
  • leetcode 23 合并K个升序链表
  • Element Plus组件v-loading在el-dialog组件上使用无效
  • 广州骏域网站阿里云可以建设多个网站
  • 青海网站建设与制作网站做多长时间才会有流量
  • 金坛建设局网站网站建设的主要功能有哪些
  • UTB(Ultra-Thin Body)技术:原理、制造与未来展望
  • 【咨询】安卓开发语言选择分析(202510)
  • 兵团住房和城乡建设局网站做性的视频网站
  • 经典路径求解问题——路径之谜
  • AI大模型微调简介
  • Cesium绘制线:从基础到高级技巧
  • uniapp 实现网络测速小功能
  • RK Android14 添加了从产品配置中删除特定APK的功能
  • 恢复 git push -force 覆盖的提交记录
  • 自己做的网站怎么删除建设网站 无法显示图片
  • 黄冈网站ppt网站
  • AGV机器人
  • 面向对象——设计模式(创建型)
  • 05_逻辑回归
  • Dify从入门到精通 第25天 在 Dify 中构建智能天气查询机器人
  • 【设计模式】代理模式(Proxy)
  • 怎么建手机网站wordpress和公众号
  • ADS ERROR:invalid class id(0x71c)问题记录
  • 模板号专注于网站企业网站建设的类型
  • golang学习笔记:标准库slices
  • golang学习笔记:标准库os
  • Python机器学习---5.决策树
  • 恶劣天气目标检测IA-YOLO