1.问题与需求

问题:

  1. 新部署的机器设备(主控RK3588), 没有经过烧录定制镜像, 研发部署, 直接组装发送到客户现场
  2. 需要通过frpc远程部署: 安装ros2 + python包 + docker镜像 + 环境配置 + 自启动配置 + SN设备信息
  3. 写自动部署脚本, 实现一键部署升级
  4. 无奈物联网卡做了白名单限制, apt 和 pip 在线安装依赖库失败, 需要现场人员支持, 开放手机热点,
  5. 在线安装速度较慢, 需要30~40分钟, 才能安装, 部署, 调试好一台设备

需求:

期望能有一种不依赖现场人员 介入/操作, 更快速的部署方式

2.方案选择_与_实现

1.方案汇总

优点缺点
RKDevTool.exe 烧录1.官方工具, 烧录镜像速度最快1.需要现场人员支持, 让主控rk3588进入 dload/maskrom 模式
2.需要现场人员, 携带笔记本电脑+usb线, 安装瑞芯微usb驱动, 进行固件烧录
dd备份,还原1.还原速度极快1.系统运行时, dd 还原 rootfs分区, 覆写根文件系统分区, 导致命令失败; 需要进入recovery模式还原
2.需现场人员支持, 按recovery键+重启, 让系统进入recovery模式(类似PC电脑进入Live CD模式), dd还原分区
tar备份,还原1.部署速度中等1.系统运行时, tar覆盖根文件系统文件, 概率导致进程运行异常; 导致部署失败
2.同dd还原, 需要现场人员支持, 让控制器进入recovery模式(类似PC Live CD模式), tar 还原才能安全还原成功
rsync备份,还原1.属于增量升级
2.部署成功率较高, 较为安全
1.第一次部署速度较慢, 后续增量更新速度较快
一键部署脚本部署成功率高1.部署速度慢
2.物联网卡有白名单限制, apt和pip安装命令失败, 需求现场人员手机热点, 或连接其它可上网网络

2.各方案命令实现

[!info] 说明
系统磁盘: /dev/nvme0p1
rootfs分区: /dev/nvme0p1p8
第二磁盘(扩展磁盘): /dev/sda3, 挂载目录/mnt/disk

1.dd 系统备份_还原命令

备份

# 备份
dd if=/dev/nvme0p1p8 of=/mnt/disk/rootfs.img
# 修复文件错误
e2fsck -f -p rootfs.img
# 减少镜像大小
resize2fs -M rootfs.img

还原

# 还原
dd if=rootfs.img of=/dev/nvme0p1p8
# 分区扩容
resize2fs /dev/nvme0p1p8

ssh远程dd_备份_还原

# 远程主机磁盘备份到本地
ssh user@ip "dd if= /dev/nvme0p1p8" | dd of=rootfs.img# 本地备份恢复到远程主机
dd if=rootfs.img | ssh user@ip "dd of=/dev/sda"

ssh远程dd_备份_还原_压缩版

# 备份
ssh usr@ip "sudo dd if=/dev/sda | gzip -c" | dd of=rootfs.img.gz# 还原
dd if=rootfs.img.gz | ssh user@ip "gunzip | dd of=/dev/sda"

2.tar 系统备份_还原命令

备份

# 备份
tar -pcf /mnt/disk/rootfs.tar --exclude={"/dev","/proc","/sys","/tmp","/var","/run","/mnt","/media","/lost+found"} /# 备份+压缩为gz
tar -zpcf /mnt/disk/rootfs.tar.gz --exclude={"/dev","/proc","/sys","/tmp","/var","/run","/mnt","/media","/lost+found","/bak"} /

还原

# 还原
tar -pxf  /mnt/disk/rootfs.tar -C /# 解压gz + 还原
tar -zpxf  /mnt/disk/rootfs.tar.gz -C /

3.rsync 系统备份_还原命令

备份

# 备份
sudo rsync -aAX --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/var","/run/*","/mnt/*","/media/*","/lost+found","/bak"} / /mnt/disk/rootfs# 压缩
tar -zpcf /mnt/disk/rootfs.tar.gz /mnt/disk/rootfs

还原

# 解压
tar -zpxf /mnt/disk/rootfs.tar.gz -C /mnt/disk/rootfs# 还原
sudo rsync -aHAXx --no-perms --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/disk/rootfs/ /

rsync远程备份_还原

# 备份到其它设备上
rsync -aAXvz --delete --progress -e ssh \--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/var/cache/*","/var/tmp/*"} \/ usr@ip:/home/xxx/rootfs# 从远程设备还原到本地
sudo rsync -aAXvz --delete -e ssh usr@ip:/home/xxx/rootfs /

3.方案确认

经过20~30台机器设备部署, 实测rsync升级_部署_较快,较安全(在系统已经运行情况下)成功率100%

1.rsync本质上, 属于增量备份_还原, 系统已有的文件不会被复写, 只有新文件+变更文件, 才会被更新同步;

  • 在系统已经运行状态下:
    • dd 还原命令失败
    • tar 覆写系统文件, 会导致系统服务/进程异常, 已运行进程禁止写, 导致失败

2.rsync解压与还原速度中等, 慢于RKDevTool.exe烧录, 和 dd还原
3.优点是: 不需要人工介入/操作, 只需要下载 + 解压 + 还原 (注: 烧录,dd,tar 需要人工操作, 进入指定模式)

注:
rsync同步也同样推荐在recovery模式(类似PC Live CD模式), 安全性才最高

4.其它想法

  1. 能否够通过修改uboot配置, 让系统进入recovery模式 --> 从而实现dd还原
  2. 假设 / 和 /boot 挂载到不同的分区, 创建一个新根文件分区, 并有一个基础的linux系统环境, 通过修改grub/uboot参数, 让系统从另一个 根文件分区启动(类似recovery分区) --> 从而实现dd还原
  3. 想尝试新一代文件系统: zfs, brtfs 快照, 导出, 部署功能; 文件系统支持特性, 实现快速导出, 部署到其它设备

uboot修改 根文件分区

vim /boot/extlinux/extlinux.conf

console=ttyFIQ0,1500000 root=/dev/mmcblk1p5 rw rootwait
console=ttyFIQ0,1500000 root=/dev/mmcblk1p6 rw rootwait

grub修改 根文件分区

vim /boot/grub/grub.cfg

linux	/vmlinuz-5.19.0-32-generic root=UUID=19cceeeb-61f6-43e4-afbd-1bff9940bac5 ro recovery nomodeset dis_ucode_ldr
linux	/vmlinuz-5.19.0-32-generic root=UUID=19cceeeb-61f6-43e4-afbd-1bff9940xxxx ro recovery nomodeset dis_ucode_ldr

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913465.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913465.shtml
英文地址,请注明出处:http://en.pswp.cn/news/913465.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

18套精美族谱Excel模板,助力家族文化传承!

【资源分享】18套精美族谱Excel模板,助力家族文化传承! 🎯 本文分享一套完整的家族谱系资源,包含18个精心设计的Excel模板,从基础模板到专业图表,满足各类家族的族谱制作需求。 一、为什么要制作族谱&…

MySQL Galera Cluster企业级部署

一、MySQL Galera Cluster简介 主要特点 同步复制: 所有的写操作(包括插入、更新、删除)在集群中的所有节点上都是同步的。这意味着每个节点上的数据是完全一致的。 多主节点: 集群中的每个节点都是主节点。所有节点都可以处理读…

HTTP 重定向

什么是 HTTP 重定向? HTTP 重定向(HTTP Redirect) 是服务器向客户端(通常是浏览器)发出的指令,告诉客户端某个请求的资源已被移到新的位置。重定向通常通过发送一个特殊的 HTTP 状态码(例如 3x…

本地加载非在线jar包设置

项目中存在私有jar包,提示在线获取不到,需要先获取到完整的jar包在打进maven中再在项目中进行maven依赖引入 mvn install:install-file -DfileD:\tools\maven\apache-maven-3.5.2\local_repository2\org\ahjk\SixCloudCommon\1.0\SixCloudCommon-1.0-SN…

Codeforces Round 979 (Div. 2)

A c[1]-b[1]0,之后每个c[1]-b[1]最大都是maxa-mina,最大和最小放前两个 B ans2^(a1)-2^s-1,1一个最小 C 我们可以把式子化为(....)||(....)||(....)括号里没有||,如果括号全是1那么A赢,A尽量选择把1选在一起 D …

UI前端大数据处理性能瓶颈突破:分布式计算框架的应用

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩!一、引言:前端大数据处理的性能困境与破局之路在数据爆炸增长的时代,UI…

病虫害数据集

数据是泰迪杯主办方提供的已经标记好的数据,4k画质的图片,总大小8个G 链接:https://pan.baidu.com/s/1fvmNHGrLvflEovjfCjDLOw?pwd6666 提取码:6666 虫害包括: 八点灰灯蛾 褐飞虱属 白背飞虱 二化螟 蟋蟀 黄足…

JAVA基础:关于JDK环境变量设置的若干相关细节及注意事项

一、JDK下载安装 网址:https://www.oracle.com/java/technologies/downloads/ 以 win11 为例,根据网址下载安装包后,点击安装,注意设置安装路径 二、基础常识 1.Java三大使用平台 Java SE(Java Standard Edition): 标准版&…

C++高频知识点(四)

文章目录 16. 虚基类要解决什么问题?17. C中如何进行类型转换操作?列举并解释四种类型转换方式。18. 什么是函数重载?如何进行函数重载?19. 解释C中的友元函数和友元类,并解释其使用场景。友元函数友元类 20. 请解释C中…

【Servlet资源转发介绍】

文章目录 前言一、Servlet 资源转发是什么?1. 为什么要资源转发? 二、资源转发 vs 重定向三、如何使用 RequestDispatcher 进行资源转发1. 引入依赖2. 获取 RequestDispatcher3. forward 示例4. include 示例JSP 中 include 指令或动作Servlet 中 includ…

牛客周赛 Round 99题解

Round 99 思路&#xff1a;我们之间去用字符串去统计即可&#xff0c;输入一个字符串&#xff0c;看相邻有没有99即可 #include<bits/stdc.h> using namespace std; #define int long long string s; signed main() {cin>>s;int ns.size();for(int i1;i<n;i){i…

AR 如何改变我们构建网站的方式

想坐在沙发上试鞋子&#xff1f;欢迎来到 Web AR 的世界。还记得你在网页上逛商城时&#xff0c;点击一副墨镜&#xff0c;然后镜头打开&#xff0c;它就自动出现在你脸上的那一瞬间吗&#xff1f;不需要下载 App&#xff0c;不需要跳转&#xff0c;只需一个浏览器。这不是科幻…

华为OD机试 2025B卷 - 货币单位转换(C++PythonJAVAJSC语言)

2025B卷目录点击查看: 华为OD机试2025B卷真题题库目录|机考题库 + 算法考点详解 2025B卷 100分题型 题目描述 记账本上记录了若干条多国货币金额,需要转换成人民币分(fen),汇总后输出。 每行记录一条金额,金额带有货币单位,格式为数字+单位,可能是单独元,或者单独分…

php协程

开发需求:在一套老项目中&#xff08;fastadmin&#xff09;实现一个定时任务&#xff0c;每分钟访问几十个接口&#xff0c;拿到数据。 使用的swoole&#xff0c;在thinkphp5中实现协程。启动命令php swoole.php <?php //chdir(__DIR__); define(APP_PATH, __DIR__ . /app…

【教程】强制关闭Windows防火墙的自启动

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 背景说明 字节云的Windows server真是有点问题&#xff0c;忽然就开始自动开启防火墙&#xff0c;手动关闭了过几个小时又重新开启了&#xff0c;导致…

【Qt】QSignalMapper

QSignalMapper 是 Qt 提供的一个用于信号映射的类&#xff0c;它允许将多个信号源&#xff08;例如按钮点击&#xff09;映射到一个单一的槽函数&#xff0c;并传递自定义参数。这在需要根据不同的触发对象执行相似逻辑时非常有用。 用法说明 创建 QSignalMapper 实例&#xf…

Android Binder与AIDL与Service使用案例及分析

水一篇以前写的文章🤣 Binder是Android内置的一种比较高效的跨进程机制,它很复杂,也很好用,可以让我们像调用普通方法那样完成跨进程式方法调用和数据传递。我们现在只需要知道它比较复杂以及怎么使用即可。 ALDL全名Android interface Definition Language, 是Android…

基于ConvLSTM的行人检测与跟踪预测算法研究

基于ConvLSTM的行人检测与跟踪预测算法研究 摘要 本文详细探讨了基于ConvLSTM(卷积长短期记忆网络)的行人检测与跟踪预测算法的设计与实现。该算法结合了卷积神经网络(CNN)的空间特征提取能力和长短期记忆网络(LSTM)的时间序列建模优势,能够有效处理视频序列中的行人检测与…

深度学习基础2

5.张量索引操作 &#xff08;1&#xff09;索引操作 行列索引列表索引 print(data[[0, 2], [1, 2]]) #返回(0, 1)&#xff0c;(2, 2)两个位置的元素print(data[[[0], [1]], [1, 2]]) # 返回0&#xff0c;1行的1&#xff0c;2列共4个元素范围索引 print(data[:3, :2]) # 前3行前…

Web安全:CSRF的攻击原理与防御措施

什么是 CSRF&#xff1f; CSRF&#xff08;Cross-Site Request Forgery&#xff0c;跨站请求伪造&#xff09;是一种利用 浏览器自动携带 Cookie 的机制&#xff0c;诱骗用户在已登录目标网站的情况下&#xff0c;执行恶意操作的攻击方式。 攻击核心特点&#xff1a; 攻击者 不…