From 22e423a0e431ee868821364deefb019f05ccbd43 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=88=91=E7=88=B1=E7=8E=A9=E5=8E=9F=E7=A5=9E?=
 <T202410623992546@eduxiji.net>
Date: Wed, 31 Jul 2024 23:50:43 +0800
Subject: [PATCH] =?UTF-8?q?=E5=86=B3=E8=B5=9B=E7=AC=94=E8=AE=B0=E6=8F=90?=
 =?UTF-8?q?=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ...6\345\214\272\351\227\256\351\242\230.png" | Bin 0 -> 39348 bytes
 Readme.md                                     |  34 ++++++++++++++----
 2 files changed, 27 insertions(+), 7 deletions(-)
 create mode 100644 "AB\345\210\206\345\214\272\351\227\256\351\242\230.png"

diff --git "a/AB\345\210\206\345\214\272\351\227\256\351\242\230.png" "b/AB\345\210\206\345\214\272\351\227\256\351\242\230.png"
new file mode 100644
index 0000000000000000000000000000000000000000..5001db02304c42b4884ae011dae87ef143af84b2
GIT binary patch
literal 39348
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
MeqHm!pZ)6p09vwYf&c&j

literal 0
HcmV?d00001

diff --git a/Readme.md b/Readme.md
index 6efc7a1..ae88491 100644
--- a/Readme.md
+++ b/Readme.md
@@ -29,7 +29,14 @@ OTA传输协议:如HTTP、HTTPS、FTP等,以及OTA升级过程中的安全
 
 针对赛题各部分的调研结果:
 
-第一题: 在ubuntu系统中,系统采用grub配置方式来完成挂载根目录,boot目录以及指定的内核文件和initrd文件,所以可以通过自定义grub菜单信息和系统默认启动项 结合A/B分区升级策略来完成。保证用户应用配置可以在升级过程中拉取系统当前的usr,etc等用户配置相关文件对备用系统分区进行一个覆盖。
+初赛阶段:在ubuntu系统中,系统采用grub配置方式来完成挂载根目录,boot目录以及指定的内核文件和initrd文件,所以可以通过自定义grub菜单信息和系统默认启动项 结合A/B分区升级策略来完成。保证用户应用配置可以在升级过程中拉取系统当前的usr,etc等用户配置相关文件对备用系统分区进行一个覆盖。
+
+决赛阶段考虑:在初赛使用A/B策略完成OTA更新的时候出现问题如下:
+1:在使用A/B分区策略的时候,麒麟系统每次在更换rootfs分区的时候系统启动总是在initrfams界面出现UUID问题,但是此问题在普通Ubuntu系统没有出现
+![图片说明](./AB分区问题.png)
+在查找问题与技术老师交流后得出须要修改麒麟本身系统文件进行调整
+2:AB分区策略,对系统分配的储存空间要求较高,总体来说会造成冗余问题
+根据以上问题,在进行充分的调研后决定调整策略为让系统进入救援模式,在救援模式下对文件系统进行更新。
 
 # 系统架构设计
 客户端 : 安装在嵌入式操作系统设备上,通过C语言对系统的脚本控制完成设备OTA的升级过程。
@@ -45,14 +52,13 @@ OTA传输协议:如HTTP、HTTPS、FTP等,以及OTA升级过程中的安全
 # 项目开发流程
 客户端
 1:首先完成linux系统对kernel,initrd文件系统升级,再完成对rootfs文件系统升级
-2:通过新增grub菜单项修改指定的Kernel和Initrd镜像文件系统路径完成对kernel和initrd的更新,然后通过进入系统救援模式,在救援模式下完成对rootfs的文件自动化脚本更新并监控监测。
-3:升级包的制作采用增量升级只更新不同的部分,相同的部分不会纳入到升级包中
-4:使用c++编写通信进程,通过不断轮询服务端的锚点内容进行控制客户端的更新动作
+2:通过新增grub菜单项修改指定的Kernel和Initrd镜像文件系统路径完成对kernel和initrd的更新,然后通过进入系统救援模式,在救援模式下完成对rootfs的文件自动化脚本更新。
+3:使用c++编写通信进程,通过不断轮询服务端的锚点内容进行控制客户端的更新动作。
 
 前后端
 1:实现升级包管理,支持用户上传升级包
 2:维护文件树的系统,来实现升级包的制作实现最小升级包更新
-
+3:升级包的制作采用增量升级只更新不同的部分,相同的部分不会纳入到升级包中
 
 # 实践过程的总结和进展
 初赛:
@@ -77,6 +83,9 @@ OTA传输协议:如HTTP、HTTPS、FTP等,以及OTA升级过程中的安全
 提取码:gmvx
 截止到2024.5.30
 
+决赛视频
+线下演示
+
 # 关键问题和解决方案
 初赛:
 1:问题1:解决内核和initrd文件系统更新
@@ -95,13 +104,24 @@ OTA传输协议:如HTTP、HTTPS、FTP等,以及OTA升级过程中的安全
 1:如何进入系统救援模式,根据调研发现,一个是通过修改grub配置设置默认启动项为saved,一种是通过指令的方式让下次重启进入救援模式。采用指令方式。
 2:如何在系统救援模式下执行自动化更新脚本,脚本通过shell脚本编写,只要执行这个脚本就可以完成需要的执行的内容与功能,然后调查发现可以通过增加一个服务单元,设置在系统进入救援模式后自动执行某个路径的脚本,并且在更新完成后还可以自动设置下次进入正常图形化界面并重启。
 3:如何让服务端获取并操控客户端的动作实现静默更新,客户端采用c++编写通信进程的方式,通过设置轮询的方式不断访问服务端的某个锚点来获取服务器对客户端下达的指令
+
+救援模式策略好处
+独占性访问:在救援模式下,系统通常以单用户模式启动,没有多用户的进程在运行。这减少了可能的文件锁定或正在使用的文件导致的更新冲突。
+减少系统负载:救援模式下系统处于最低负载状态,几乎没有不必要的服务在运行,确保了更新过程中不会因为其他任务影响到性能。
+稳定的更新环境:在救援模式中,许多系统服务和守护进程没有启动,这减少了更新过程中潜在的干扰,减少了因文件被占用而导致更新失败的风险。
+简化的恢复路径:如果更新过程出现问题,救援模式下可以更容易地执行回滚操作或切换到备用的 rootfs,因为系统处于最小化状态,没有多余的服务和进程需要考虑。
+最小化的潜在损害:救援模式通常不会挂载所有文件系统或启动所有服务,即使更新失败,影响面也相对有限。
+场景:对于一些嵌入式系统或不允许长时间停机的系统,使用救援模式进行 rootfs OTA 更新可以在最短的时间内完成必要的系统更新,同时确保系统的一致性和完整性。
+
 # 团队分工
 前端: 周翼
+负责前端开发,核心完成对于新概念(维护文件树)的实现操作,以及差分升级构建最小升级包
 
 后端:谭开文
+负责后端开发,核心完成对于前端和客户端的接口调用,以及储存差分升级升级包和文件树。与前端一起完成差分升级功能
 
 客户端:陈艺谋
-负责嵌入式设备的本地的脚本的编写通过网络通信的方式与后端服务器进行升级包的资源下载,完成对三种文件系统的更新.采用系统救援模式策略对系统进行升级,测试升级后系统是否正确运行 检测到系统异常情况 进行回滚操作
+负责嵌入式设备的本地的脚本的编写通过网络通信的方式与后端服务器进行升级包的资源下载,完成对三种文件系统的更新.采用系统救援模式策略对系统进行升级。
 
 
 
@@ -143,7 +163,7 @@ sudo mount --bind /run /mnt/rootfs/run
 
 7:升级完成等待重启
 
-# 决赛:麒麟系统成功完成第一题第二题
+# 决赛OTA核心更新步骤
 1:首先轮询服务端获取指令
 2:开始更新之前,备份当前根目录的内容到指定目录下
 3:修改grub配置新增菜单项,指向新的kernel和initrd镜像文件。(与初赛原理相同)
-- 
GitLab