前提条件
- Linux 系统。
- 用于解包
$ROOTFS的宿主机文件系统应为 EXT4(或其他支持 Linux 权限、符号链接和 xattr 的文件系统);不要使用 FAT、exFAT 或 NTFS。 - 在JetPack Archive中找到与目标 JetPack/L4T 完全对应的下载链接,下载 Driver Package (BSP) 和 Sample Root Filesystem。下列链接以 L4T r36.5.0 为例:Driver Package (BSP)、Sample Root Filesystem。
- 解压并应用 NVIDIA 二进制文件:
tar xf Jetson_Linux_*.tbz2
cd Linux_for_Tegra/rootfs
sudo tar xpf ../../Tegra_Linux_Sample-Root-Filesystem_*.tbz2
cd ..
sudo ./apply_binaries.sh备份 Jetson
- 使 Jetson 进入强制恢复模式,并通过 USB 连接宿主机。
<board-name>必须替换为与目标模块、载板和 L4T 版本匹配的板级配置;还原时必须使用相同的值。-e <devname>为可选参数。
sudo ./tools/backup_restore/l4t_backup_restore.sh [-e <devname>] -b <board-name>Note
此工具备份 Jetson 的内部存储相关分区(包括 eMMC 和 QSPI,具体取决于机型),不同于只克隆
APP/rootfs分区。若根文件系统或重要数据位于外置 NVMe、USB 或 SD 卡,请另行备份对应块设备或分区。不同 BSP 版本中目录名可能存在差异。若找不到脚本,可执行:
find tools -maxdepth 2 -name 'l4t_backup_restore.sh' -print。
编辑 Jetson 镜像
备份完成后,先确认实际生成的归档文件名;mmcblk0p1.tar.zst 仅适用于根文件系统位于内置 eMMC mmcblk0p1 的常见情况。
ls -lh tools/backup_restore/images/# extract:将 ARCHIVE 替换为上一步确认的实际归档路径
ROOTFS=/mnt/jetson-rootfs
ARCHIVE=/home/ubuntu/Linux_for_Tegra/tools/backup_restore/images/mmcblk0p1.tar.zst
sudo mkdir -p "$ROOTFS"
sudo tar \
-I zstd \
-xpf "$ARCHIVE" \
--warning=no-timestamp \
--checkpoint=10000 \
--numeric-owner \
--xattrs \
'--xattrs-include=*' \
-C "$ROOTFS"
# 编辑位于 $ROOTFS 的镜像内容。
# 不要在 $ROOTFS 内挂载其他文件系统;如曾挂载,重新打包前先卸载。
# save:覆盖原归档前,建议先手动保留一份备份副本
NEW_ARCHIVE="$ARCHIVE"
sudo tar \
-I 'zstd -T0' \
-cpf "$NEW_ARCHIVE" \
--warning=none \
--checkpoint=10000 \
--one-file-system \
--numeric-owner \
--xattrs \
'--xattrs-include=*' \
-C "$ROOTFS" \
.
ARCHIVE_NAME=$(basename "$NEW_ARCHIVE")
DIR_NAME=$(dirname "$NEW_ARCHIVE")
NEW_HASH=$(sudo sha256sum "$NEW_ARCHIVE" | awk '{print $1}')
# 更新对应归档在分区映射文件中的 SHA-256;未匹配到文件名时停止执行。
sudo awk \
-F, \
-v OFS=, \
-v f="$ARCHIVE_NAME" \
-v hash="$NEW_HASH" \
'$1 == f {$6 = hash; found = 1} {print} END {if (!found) exit 1}' \
"$DIR_NAME/nvpartitionmap.txt" |
sudo tee "$DIR_NAME/nvpartitionmap.txt.new" >/dev/null && \
sudo mv "$DIR_NAME/nvpartitionmap.txt.new" "$DIR_NAME/nvpartitionmap.txt"
# 确认归档名与更新后的校验和
sudo awk -F, -v f="$ARCHIVE_NAME" '$1 == f {print}' "$DIR_NAME/nvpartitionmap.txt"恢复镜像
- 使 Jetson 进入强制恢复模式,并通过 USB 连接宿主机。
- 使用备份时相同的
<board-name>;-e <devname>为可选参数。
sudo ./tools/backup_restore/l4t_backup_restore.sh [-e <devname>] -r <board-name>