Skip to content

AgRoboticsResearch/jetson-clone-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jetson系统克隆框架

面向NVIDIA Jetson Orin NX设备的自动化系统克隆和管理解决方案。

特性

  • 完整的系统克隆和恢复
  • 自动设备差异化处理
  • 针对大内存设备的优化
  • 版本化的镜像管理
  • 面向未来的多设备管理框架

快速开始

前提条件

  • 源设备: Jetson Orin NX 8GB (已配置好)
  • 目标设备: Jetson Orin NX 16GB
  • 外部存储: 至少150GB的USB-SATA设备

三步完成克隆

1. 创建镜像 (源设备)

cd ~/jetson-clone-framework
sudo scripts/clone-jetson.sh

2. 恢复镜像 (目标设备)

cd ~/jetson-clone-framework
sudo scripts/restore-jetson.sh

3. 后处理和优化 (目标设备)

sudo scripts/post-clone-setup.sh
sudo scripts/optimize-16gb.sh

项目结构

jetson-clone-framework/
├── scripts/              # 核心脚本
│   ├── clone-jetson.sh           # 克隆脚本
│   ├── restore-jetson.sh         # 恢复脚本
│   ├── post-clone-setup.sh       # 差异化脚本
│   ├── optimize-16gb.sh          # 优化脚本
│   └── image-manager.sh          # 镜像管理工具
├── config/               # 配置文件
│   └── clone-config.conf         # 主配置
├── templates/            # 配置模板
├── images/               # 镜像存储
└── docs/                 # 文档
    └── DEPLOYMENT-GUIDE.md       # 详细部署指南

核心脚本说明

clone-jetson.sh

在源设备上运行,创建完整的系统镜像到外部存储。

  • 收集系统信息
  • 使用dd+gzip进行块级克隆
  • 生成镜像元数据和校验和
  • 预计时间: 30-90分钟

restore-jetson.sh

在目标设备上运行,从镜像恢复系统。

  • 检测目标设备
  • 验证镜像完整性
  • 恢复并扩展根分区
  • 预计时间: 30-60分钟

post-clone-setup.sh

设备差异化处理,确保唯一性。

  • 重新生成machine-id
  • 重新生成SSH主机密钥
  • 配置主机名和网络
  • 清理临时文件

optimize-16gb.sh

针对16GB内存的优化配置。

  • 扩展ZRAM Swap (8GB总swap)
  • 优化电源模式
  • 调整Docker配置
  • 设置性能环境变量

image-manager.sh

镜像版本管理工具。

./scripts/image-manager.sh list      # 列出所有镜像
./scripts/image-manager.sh verify    # 验证镜像
./scripts/image-manager.sh cleanup   # 清理旧镜像
./scripts/image-manager.sh menu      # 交互式菜单

配置

编辑 config/clone-config.conf:

# 外部存储挂载点
EXTERNAL_STORAGE_MOUNT="/mnt/jetson-backup"

# 压缩级别 (1-9)
IMAGE_COMPRESSION_LEVEL=6

# 镜像保留天数
IMAGE_KEEP_DAYS=90

# 16GB优化
ZRAM_COUNT_16GB=8
ZRAM_SIZE_MB_16GB=1024

系统架构

源设备 (8GB)           外部存储           目标设备 (16GB)
    │                     │                     │
    │  clone-jetson.sh    │                     │
    ├────────────────────▶│                     │
    │                     │    .img.gz镜像      │
    │                     │                     │
    │                     │  restore-jetson.sh  │
    │                     ├────────────────────▶│
    │                     │                     │
    │                     │                     │  post-clone-setup.sh
    │                     │                     ├──────────────────▶
    │                     │                     │
    │                     │                     │  optimize-16gb.sh
    │                     │                     ├──────────────────▶

技术原理

为什么需要特殊处理?

  1. 复杂分区结构: Jetson有15+个特殊分区
  2. 设备唯一性: machine-id、SSH密钥必须不同
  3. NVIDIA驱动: 与特定硬件绑定
  4. 内存差异: 8GB→16GB需要专门优化

克隆方法

  • 块级克隆 (dd): 完整复制所有分区和引导信息
  • 压缩 (gzip): 节省存储空间
  • 差异化: 后处理脚本生成新的设备标识

16GB优化

  • ZRAM Swap: 6个→8个设备, 3.7GB→8GB总swap
  • 压缩算法: lzo→zstd (更快)
  • 环境变量: 针对16GB内存优化

故障排除

外部存储无法挂载

# 检查文件系统类型
sudo blkid /dev/sda1

# 安装必要的文件系统支持
sudo apt install ntfs-3g exfat-fuse

SSH密钥冲突

# 清除旧密钥
ssh-keygen -R 192.168.3.153

空间不足

# 清理源设备
docker system prune -a --volumes
sudo apt clean

更多问题请参考 部署指南

时间估算

步骤 时间
准备和清理 10-30分钟
创建镜像 30-90分钟
恢复镜像 30-60分钟
差异化处理 10-15分钟
优化配置 10-15分钟
验证测试 15-30分钟
总计 2-4小时

存储需求

镜像类型 大小
未压缩 ~120GB
GZ压缩(6) ~40-50GB
GZ压缩(9) ~35-45GB

建议: 准备至少150GB外部存储。

未来扩展

多设备管理

  • 建立中央镜像仓库
  • PXE网络启动
  • Ansible配置管理

差量化更新

  • 只备份变化的块
  • 减少传输时间

自动化部署

  • 无人值守模式
  • 批量部署支持

贡献

欢迎提交Issue和Pull Request。

许可

MIT License


重要提示: 在连接到网络之前,务必运行 post-clone-setup.sh 以避免设备ID冲突!

About

Bash framework for cloning NVIDIA Jetson Orin NX systems (8GB to 16GB migration)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages