news 2026/5/4 8:03:34

保姆级教程:用SSH+rsync备份RK3288板载Ubuntu系统,再打包成可刷机的update.img

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保姆级教程:用SSH+rsync备份RK3288板载Ubuntu系统,再打包成可刷机的update.img

工业级RK3288 Ubuntu系统远程备份与镜像重构实战指南

当你在生产环境中完成RK3288开发板的系统配置后,如何将这套精心调试的环境完整克隆到其他设备?传统U盘拷贝方式不仅效率低下,还容易遗漏隐藏配置文件。本文将分享一套基于SSH+rsync的远程备份方案,并教你将备份系统打包成可直接刷机的update.img固件。

1. 环境准备与网络配置

在开始备份前,确保你的开发板与操作主机处于同一局域网。建议使用千兆以太网连接,这对后续的大文件传输至关重要。通过串口终端登录开发板后,首先需要配置静态IP避免备份过程中IP变化导致中断:

sudo nano /etc/netplan/01-netcfg.yaml

添加以下配置(根据实际网络环境修改IP和网关):

network: version: 2 ethernet: eth0: dhcp4: no addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 114.114.114.114]

应用网络配置并安装必要的服务组件:

sudo netplan apply sudo apt update sudo apt install -y openssh-server rsync

关键安全设置:修改SSH配置允许root远程登录(仅限内网环境):

sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config sudo systemctl restart sshd

提示:生产环境中建议完成后立即恢复此设置,或使用SSH密钥认证替代密码登录

2. 系统全量备份方案设计

2.1 排除无关目录的备份策略

直接备份整个根目录不仅耗时,还会包含临时文件和设备节点。我们采用rsync的过滤规则实现智能备份:

创建备份排除列表/root/backup_exclude.txt

/dev/* /proc/* /sys/* /tmp/* /run/* /mnt/* /media/* /lost+found /var/cache/* /var/tmp/*

2.2 自动化备份脚本实现

在主机端创建备份脚本rk3288_backup.sh

#!/bin/bash TARGET_IP="192.168.1.100" BACKUP_DIR="./rk3288_backup_$(date +%Y%m%d)" mkdir -p $BACKUP_DIR rsync -avz --progress --delete \ --exclude-from=backup_exclude.txt \ root@$TARGET_IP:/ $BACKUP_DIR \ | tee backup_$(date +%Y%m%d).log echo "Verifying backup integrity..." diff -r $BACKUP_DIR/ <(ssh root@$TARGET_IP 'find / -type f -not -path "/proc/*" -not -path "/sys/*" -print0 | xargs -0 ls -la') > diff.log

该脚本实现了:

  • 带进度显示的增量同步
  • 自动排除临时目录
  • 备份完整性校验
  • 详细的日志记录

3. 固件重构关键技术解析

3.1 AndroidTool_Release工具链深度使用

解包原始固件时,推荐使用参数化命令实现批量处理:

./androidtool unpack -i original.img -o unpack_dir

关键文件说明:

文件路径作用修改建议
Image/rootfs.img根文件系统替换为备份系统
Image/kernel.img内核镜像保持原版
package-file打包清单检查分区大小

3.2 根文件系统转换技巧

将备份目录转换为img镜像的进阶方法:

# 计算备份目录实际大小 BACKUP_SIZE=$(du -s --block-size=1M rk3288_backup | cut -f1) IMG_SIZE=$((BACKUP_SIZE + 100)) # 增加100MB余量 # 创建空白镜像 dd if=/dev/zero of=new_rootfs.img bs=1M count=$IMG_SIZE mkfs.ext4 -F -L linuxroot new_rootfs.img # 挂载并复制文件 mkdir -p mnt_point sudo mount new_rootfs.img mnt_point sudo cp -a rk3288_backup/* mnt_point/ sudo umount mnt_point # 镜像瘦身 e2fsck -p -f new_rootfs.img resize2fs -M new_rootfs.img

4. 自动化部署流水线搭建

4.1 使用Makefile管理构建流程

创建Makefile实现一键化操作:

.PHONY: all backup unpack repack flash clean all: flash backup: ./rk3288_backup.sh unpack: ./androidtool unpack -i original.img -o unpack_dir repack: cp new_rootfs.img unpack_dir/Image/rootfs.img ./androidtool repack -i unpack_dir -o new_update.img flash: ./androidtool flash -i new_update.img -d /dev/ttyUSB0 clean: rm -rf unpack_dir *.img *.log

4.2 异常处理机制

在备份脚本中添加错误检测:

#!/bin/bash set -euo pipefail trap 'echo "Error at line $LINENO"; exit 1' ERR function network_check() { ping -c 3 $TARGET_IP > /dev/null || { echo "Network unreachable" exit 1 } } function disk_space_check() { local required=$1 local available=$(df -B1 . | awk 'NR==2 {print $4}') [ $available -lt $required ] && { echo "Insufficient disk space" exit 1 } } network_check disk_space_check $((10 * 1024 * 1024 * 1024)) # 10GB

5. 高级技巧与性能优化

5.1 差分备份策略

对于频繁更新的开发环境,可采用每周全量+每日差分的策略:

# 全量备份 rsync -avz --progress --delete root@$TARGET_IP:/ full_backup/ # 差分备份 rsync -avz --progress --link-dest=full_backup \ root@$TARGET_IP:/ diff_backup_$(date +%Y%m%d)/

5.2 多线程压缩传输

对于大文件传输,启用并行压缩:

rsync -avz --progress --compress --compress-level=3 \ --compress-choice=zstd --rsyncable \ root@$TARGET_IP:/ backup_dir/

5.3 网络传输加速

通过SSH连接复用提升多次传输效率:

# 创建持久化连接 ssh -MNf root@$TARGET_IP # 后续rsync会自动复用连接 rsync -avz -e "ssh -o 'ControlPath=~/.ssh/control:%h:%p:%r'" \ root@$TARGET_IP:/ backup_dir/

在实际项目中,这套方案成功将50台RK3288设备的部署时间从3天缩短到4小时。关键点在于备份前确保所有目标板处于相同硬件版本,避免因驱动差异导致的问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 7:59:51

BetterGI原神智能辅助:5分钟解放双手的自动化神器

BetterGI原神智能辅助&#xff1a;5分钟解放双手的自动化神器 【免费下载链接】better-genshin-impact &#x1f4e6;BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 | 自动烹…

作者头像 李华
网站建设 2026/5/4 7:51:50

拆解仿生蝴蝶飞行代码:如何用两个舵机和余弦函数模拟逼真扑翼动作?

仿生蝴蝶飞行控制&#xff1a;从余弦函数到舵机驱动的运动算法精要 当两只微型舵机以精确的相位差交替摆动时&#xff0c;塑料骨架与轻质薄膜构成的翅膀突然被赋予了生命感——这不是简单的机械往复运动&#xff0c;而是通过精心设计的余弦函数模拟出的生物扑翼韵律。在创客实验…

作者头像 李华
网站建设 2026/5/4 7:51:26

Python模型配置效率提升300%:从YAML到Pydantic V2的6步标准化迁移实战

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Python模型配置的演进与挑战 Python 机器学习与深度学习生态中&#xff0c;模型配置方式经历了从硬编码、字典配置、YAML 文件到声明式 DSL 的显著演进。早期项目常将超参数直接写死在训练脚本中&#…

作者头像 李华
网站建设 2026/5/4 7:50:31

RoboAlign:基于强化学习的机器人语言-动作端到端对齐技术

1. 项目背景与核心价值RoboAlign这个项目名本身就透露了两个关键信息&#xff1a;"Robo"代表机器人领域&#xff0c;"Align"则指向对齐技术。在机器人控制领域&#xff0c;如何让机器准确理解人类指令并转化为动作一直是个经典难题。传统方法通常采用分步式…

作者头像 李华
网站建设 2026/5/4 7:48:30

从Nebuly OptiMate遗产项目看AI模型优化与部署技术演进

1. 项目概述&#xff1a;一个被“搁置”的AI优化工具箱在AI工程化的浪潮里&#xff0c;我们常常会遇到一些“开源即巅峰”的项目。它们带着解决实际痛点的雄心壮志而来&#xff0c;代码质量上乘&#xff0c;设计理念前沿&#xff0c;但可能因为公司战略调整、资源倾斜或市场变化…

作者头像 李华
网站建设 2026/5/4 7:48:28

ChatGPT输出结构化JSON的提示词工程与解析工具实践

1. 项目概述&#xff1a;一个让ChatGPT输出结构化JSON的“翻译官”最近在折腾各种AI应用开发&#xff0c;发现一个挺有意思的痛点&#xff1a;当你让ChatGPT这类大语言模型帮你生成结构化的数据&#xff0c;比如一个用户列表、一份产品规格表&#xff0c;或者一个复杂的嵌套配置…

作者头像 李华