将 Jetson Orin Nano Developer Kit 的 /home 数据迁移到 reComputer
介绍
当你从 NVIDIA Jetson Orin Nano Developer Kit 迁移到 Seeed Studio reComputer 时,可能希望保留你的用户工作区、项目文件、Conda 环境、脚本和应用数据。然而,不建议将开发套件的完整系统镜像直接恢复到 reComputer 上,因为载板、设备树、引导加载程序和 BSP 配置都不相同。
本 wiki 展示如何使用 reComputer Classic backup to Super migration project,仅将源 Jetson Orin Nano Developer Kit 的 /home 迁移到目标 reComputer。在本指南中,reComputer J4012 和 reComputer Super J4012 被用作目标示例。首先使用匹配的 Seeed JetPack 6 BSP 刷写目标 reComputer,然后在该干净的 reComputer 系统之上恢复 /home 包。

硬件参考
本指南使用 Jetson Orin Nano Developer Kit 作为源设备,reComputer J4012 / reComputer Super J4012 作为目标示例。当源和目标系统都运行 JetPack 6 / L4T R36,且目标已刷写其匹配的 Seeed BSP 时,相同的仅迁移 /home 的思路也可以用于其他 Jetson 到 reComputer 的组合。
| 源设备 | 目标示例 1 | 目标示例 2 |
|---|---|---|
![]() Jetson Orin Nano Developer Kit | ![]() reComputer J4012 | ![]() reComputer Super J4012 |
本次迁移的作用
迁移包包含:
/home- 源系统元数据
/home用户和用户组元数据- 手动安装的 APT 软件包列表(如果可用)
- 已安装的 dpkg 软件包列表(如果可用)
- 软件包校验和
它刻意不会恢复以下内容:
/boot/boot/dtb/lib/modules/usr/lib/modules/etc/nv_boot_control.conf/etc/fstab- 引导加载程序分区
- 与板卡相关的 BSP 文件
此工作流用于用户数据迁移,而不是完整系统克隆。安装在 /usr 下的应用、在 /etc 下配置的服务、位于 /var/lib/docker 下的 Docker 镜像以及系统级 BSP 更改都不会被迁移。请在 /home 恢复后,在目标 reComputer 上重新安装或重新配置这些组件。
前提条件
- 运行 JetPack 6 / L4T R36 的源 NVIDIA Jetson Orin Nano Developer Kit
- 运行匹配 Seeed JetPack 6 BSP 的目标 reComputer J4012 或 reComputer Super J4012
- 用于传输迁移包的网络访问或可移动存储
- 足够的可用空间用于存放压缩的
/home备份包 git、tar、sha256sum、awk和find
在恢复迁移包之前,请先使用正确的 Seeed 固件刷写目标 reComputer。对于 reComputer J4012,请参考 Flash JetPack OS to J401 Carrier Board。对于 reComputer Super J4012,请参考 Getting Started with reComputer Super。
工作流概览
- 使用匹配的 Seeed JetPack 6 BSP 刷写目标 reComputer。
- 在源 Jetson Orin Nano Developer Kit 上克隆迁移项目。
- 在源设备上创建一个
/home迁移包。 - 将迁移包复制到目标 reComputer。
- 在目标设备上检查或试运行恢复过程。
- 在目标设备上恢复
/home并重启。 - 重新安装任何位于
/home之外、所需的系统软件包或服务。
在源 Jetson Orin Nano Developer Kit 上备份
步骤 1. 如果尚未安装 git,请先安装。
sudo apt update
sudo apt install -y git
步骤 2. 克隆迁移项目。
git clone https://github.com/jjjadand/reComputer_classic-backup-to-super.git
cd reComputer_classic-backup-to-super
chmod +x *.sh
步骤 3. 创建备份包。
将 /path/to/output 替换为具有足够可用空间的目录,例如 U 盘、外置 SSD 或共享网络文件夹。
sudo ./backup_home_jp6.sh -o /path/to/output
备份完成后,你会看到两个文件:
jetson-home-jp6-<hostname>-<timestamp>.tar.gz
jetson-home-jp6-<hostname>-<timestamp>.tar.gz.sha256
默认情况下,脚本会排除常见的缓存目录以减小迁移包大小:
/home/*/.cache
/home/*/.ccache
/home/*/.nv/ComputeCache
/home/*/.npm/_cacache
/home/*/.local/share/Trash
/home/*/.local/share/gvfs-metadata
如果你需要更接近原始的用户缓存数据副本,请添加 --include-caches:
sudo ./backup_home_jp6.sh -o /path/to/output --include-caches
如果你需要排除额外的数据,请创建一个包含 tar 排除模式的排除文件,并将其传递给脚本:
sudo ./backup_home_jp6.sh -o /path/to/output --exclude-file /path/to/exclude-patterns.txt
备份脚本对 /home 使用 --one-file-system。如果你在 /home 内挂载了外部存储,请单独备份这些挂载的数据。
检查备份包
在恢复之前,你可以在源设备或目标设备上检查迁移包。
./inspect_home_package.sh /path/to/jetson-home-jp6-xxx.tar.gz
检查命令会验证迁移包的校验和,并打印迁移包格式、源系统元数据、源 /home 用户以及 /home 归档中的前几项条目。
将迁移包复制到目标 reComputer
将 .tar.gz 迁移包复制到目标 reComputer。例如,使用 scp:
scp /path/to/jetson-home-jp6-xxx.tar.gz seeed@<recomputer-ip>:/home/seeed/
你也可以使用 U 盘或外置 SSD 复制迁移包。
请保留 .sha256 文件作为外部校验和记录。恢复脚本同样会验证嵌入在迁移包内部的校验和。
在目标 reComputer 上恢复
步骤 1. 确保目标 reComputer 已经刷写正确的 Seeed JetPack 6 BSP,并完成首次启动设置。
步骤 2. 在目标设备上克隆迁移项目。
git clone https://github.com/jjjadand/reComputer_classic-backup-to-super.git
cd reComputer_classic-backup-to-super
chmod +x *.sh
恢复脚本名称中包含 super,是因为最初的项目是为 reComputer Super 迁移场景创建的。在本指南中,它仍然只用于在选定的 reComputer 目标上验证并覆盖 /home 迁移包。
步骤 3. 先执行一次试运行(dry run)。
./restore_home_on_super_jp6.sh --dry-run /home/seeed/jetson-home-jp6-xxx.tar.gz
试运行会验证迁移包并打印摘要,而不会恢复文件。
步骤 4. 恢复迁移包。
sudo ./restore_home_on_super_jp6.sh --create-users /home/seeed/jetson-home-jp6-xxx.tar.gz
--create-users 选项会在解包前,根据 UID/GID 创建缺失的源用户和用户组。这有助于在源用户尚未在目标 reComputer 系统上存在时,仍然保留文件所有权。
默认情况下,恢复脚本会在覆盖源迁移包之前,为当前目标 /home 创建一个回滚归档:
/var/backups/jetson_home_migration/super-home-before-restore-<timestamp>.tar.gz
如果 /var/backups 没有足够空间,请使用其他备份目录:
sudo ./restore_home_on_super_jp6.sh --create-users --backup-dir /path/to/backup-dir /home/seeed/jetson-home-jp6-xxx.tar.gz
只有在你已经为目标 /home 做好了单独备份时,才使用 --no-backup:
sudo ./restore_home_on_super_jp6.sh --create-users --no-backup /home/seeed/jetson-home-jp6-xxx.tar.gz
恢复操作会将文件覆盖到 /home 上。它会用迁移包中的同名文件覆盖目标上的文件,但不会删除仅存在于目标上的文件。
步骤 5. 重启目标设备。
sudo sync
sudo reboot
验证迁移结果
目标 reComputer 重启后,检查恢复的用户和文件:
ls -lah /home
id <source-user>
du -sh /home/<source-user>
然后验证你的应用数据和用户环境:
ls -lah /home/<source-user>/projects
conda env list
python3 --version
如果你使用 jtop 等 Jetson 工具,请在目标 reComputer 上再次运行它们:
jtop
如果在迁移后发现某个应用程序命令缺失,很可能是因为它安装在 /home 之外。请使用软件包中的元数据检查其来源软件包列表,然后在目标 reComputer 系统上重新安装所需软件。
回滚目标 /home
如果你需要恢复迁移前目标 /home 的状态,请使用还原脚本创建的回滚归档文件。
sudo tar --extract \
--gzip \
--file /var/backups/jetson_home_migration/super-home-before-restore-xxx.tar.gz \
--directory / \
--preserve-permissions \
--same-owner \
--acls \
--xattrs \
--xattrs-include='*' \
--numeric-owner \
--overwrite
sudo sync
sudo reboot
故障排查
脚本警告系统看起来不像 JetPack 6
脚本会检查 /etc/nv_tegra_release 并期望为 L4T R36。请确认源端和目标端都在运行 JetPack 6。
cat /etc/nv_tegra_release
还原后文件所有者显示为数字
这通常意味着目标端没有与源端相同 UID/GID 的用户。请使用 --create-users 选项运行还原命令,或者在还原前手动创建 UID/GID 匹配的用户。
归档包太大
使用默认的缓存排除规则,从 /home 中删除不必要的文件,或者通过 --exclude-file 提供额外的排除模式文件。
备份过程中有部分文件发生了变化
备份脚本接受 tar 状态码 1,这通常意味着在备份过程中有活动文件发生了变化。如果这些变更的文件很重要,请关闭正在运行的应用程序并重新执行备份。
Docker 镜像或系统服务缺失
本次迁移只会还原 /home。Docker 镜像、系统服务、通过 APT 安装的应用程序,以及 /etc、/usr 和 /var 下的文件,都需要在目标 reComputer 系统上重新安装或重新配置。
资源
- reComputer Classic 备份到 Super 的迁移项目
- 在 reComputer 上创建备份与还原
- 如何将 Jetson Orin Nano Developer Kit 升级到 Super Kit
- 为 J401 载板烧录 JetPack OS
- reComputer Super 入门指南
- reComputer J30/J40 入门指南
- Seeed Jetson 设备一页概览
技术支持与产品讨论
感谢你选择我们的产品!我们将为你提供多种支持,确保你在使用我们产品的过程中尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。


