先说说对升级的理解吧。系统升级是软件更新及BUG修复的主要方式,升级的主要原理就是数据搬移的过程,把我们需要的数据,从某个地方,更新到另外的一个地方。这个过程就叫做升级。一般是当我们系统有了新的功能增加,或者是现有的功能出现缺陷或者漏洞无法正常运行时,我们需要进行系统升级。最终达到修复系统缺陷漏洞,增加新功能的目的。

从升级的方式来看,升级主要分为两大类,本地升级及远程升级,我们常说的OTA(over the air)也就是远程升级。显而易见,我们通过名字也就能明白,本地升级就是从本地获取升级数据,从而进行系统升级,本地升级常见的包括USB升级,SD卡升级,UART串口升级等,远程升级常见的有WEB升级,HTTP升级,TS流升级等。

上面所描述的升级方式,基本上都是根据升级数据获取的途径来定义的。获取到数据之后,我们要把数据写入到哪里呢,那么这里就涉及到了存储设备,我们常用的flash存储包括NOR, NAND, EMMC等,在项目立项的时候,都会选择一个或者多种组合形式的flash存储设备。这几种flash都有各自的特色,NOR相对容量较小,读取速度快,启动速度快,在现在大容量盛行时代,使用的场景较少,NAND flash相对NOR flash,容量方面就大了很多,适合存储较多的数据,NAND写入之前必须执行擦除动作,才能写入,这是跟NAND只能把1写0决定的。并且NAND flash是有坏块的,那么读写的时候,要跳过坏块部分。EMMC其实也是NAND的一种,通常也称作INAND,EMMC对NAND来说,不用擦除再写,不用考虑坏块,能够自己管理坏块,比NAND使用起来更方便。上面只是大致简单的介绍下这几种flash存储设备,想了解更多的可以自行深入的学习了解。

说完升级数据来源及flash存储设备,我们再来看看数据格式,升级的时候,并非只是单纯的数据搬移,针对不同类型的数据有不同的处理方式,常见的有RAW,UBI,EXT4等,一般普通镜像都是raw格式,NAND上面使用的ubi fs, EMMC上面使用的ext4 fs。raw原意是未被处理的数据,针对raw数据,我们直接数据搬移即可,针对ubi及ext4格式,我们需要特殊处理。同样是raw镜像,我们在nand与emmc上面的处理方式也不同,写nand的时候,我们需要按照block size的最小单位大小,先擦擦,再按照page size最小单位写入。而emmc则不需要这么麻烦。及时是相同的存储设备,我们对char device(字符设备)与block device(块设备)的处理方式也不相同。

也就是说,我们对某个分区镜像更新时,需要根据数据类型(raw/ubi/ext4等)存储设备类型(nand/emmc等)字符设备类型(char/block等)综合考虑,采用对应的方式,更新数据。后面将对,每种不同的场合分析,如何更新。有兴趣的也可以自己研究,本文只是做大致的分析。

分析完升级方式,flash存储,及数据格式后,我们列几点升级的设计注意点:

(1)对升级的源数据,采用只读的方式获取。

(2)对重要的分区,可以采用分区备份的机制保护。

(3)升级过程禁止所有的输入中断,包括串口,按键,IR等。

(4)升级前数据完整性校验及安全性校验。

(5)对存在镜像加密的时候,在升级前对加密镜像合法性校验。

(6)设计异常掉电保护机制,防止升级过程掉电。

(7)升级过程任意掉电,重新上电都能够继续升级或者恢复原系统。

(8)升级流程可配置化,能够修改升级包改变升级流程。

(9)升级过程自动化,尽可能少的人为操作。

(10)升级出错立马退出并提示出错信息。

(11)升级日志尽可能完整的记录升级的每个过程及关键点信息。

(12)记录最近5次的升级日志,方便升级跟踪。

recovery&linux系统升级数据更新分析总结的更多相关文章

  1. 《Unix/Linux网络日志分析与流量监控》获2015年度最受读者喜爱的IT图书奖

    <Unix/Linux网络日志分析与流量监控>获2015年度最受读者喜爱的IT图书奖.刊登在<中华读书报>( 2015年01月28日 19 版) 我的2015年新作刊登在< ...

  2. Linux Bluetooth内核分析

    目录 1. 初始化 2. hci部分 Linux提供了对Bluetooth的支持,核心代码位于net/bluetooth 1. 初始化 主要由subsys_initcall调用函数bt_init()来 ...

  3. Linux之kernal分析与启动20160610

    说一下LINUX内核的分析与启动: 一. 内核启动流程,据此配置内核(机器ID) 1.1 修改Makefile 1.2 选择默认配置 : make s3c2410_defconfig 1.3 make ...

  4. linux源码分析2

    linux源码分析 这里使用的linux版本是4.8,x86体系. 这篇是 http://home.ustc.edu.cn/~boj/courses/linux_kernel/1_boot.html  ...

  5. Linux网络地址转换分析

    Linux网络地址转换分析 地址转换用来改变源/目的端口,是netfilter的一部分,也是通过hook点上注册相应的结构来工作. Nat注册的hook点和conntrack相同,只是优先级不同,数据 ...

  6. linux串口驱动分析

    linux串口驱动分析 硬件资源及描写叙述 s3c2440A 通用异步接收器和发送器(UART)提供了三个独立的异步串行 I/O(SIO)port,每一个port都能够在中断模式或 DMA 模式下操作 ...

  7. Linux input子系统分析

    输入输出是用户和产品交互的手段,因此输入驱动开发在Linux驱动开发中很常见.同时,input子系统的分层架构思想在Linux驱动设计中极具代表性和先进性,因此对Linux input子系统进行深入分 ...

  8. Linux系统IO分析工具之iotstat常用参数介绍

    Linux系统IO分析工具之iotstat常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1>.安装iostat [root@flume115 ~]# yum - ...

  9. Linux系统IO分析工具之iotop常用参数介绍

      Linux系统IO分析工具之iotop常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在一般运维工作中经常会遇到这么一个场景,服务器的IO负载很高(iostat中的 ...

随机推荐

  1. 一个系统部署多个tomcat实例

    一.添加环境到/etc/profile. JAVA_HOME=/usr/java/jdk1.8.0_111 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HO ...

  2. HashTable原理与源码分析

    本文版权归 远方的风lyh和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作,如有错误之处忘不吝批评指正! HashTable内部存储结构 HashTable内部存储结构为数组+单向链 ...

  3. shell脚本--echo和printf打印输出

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 注:本文关于引号等特殊符号的处理仅仅只是几个例子,想要彻底搞明 ...

  4. ES6 使用数据类型Set求交集、并集、差集

    前言 ES6新增了数据类型Set,它是一种类似数组的数据结构.但它和数组的不同之处在于它的成员都是唯一的,也就是说可以用来去除数组重复成员. Set本身是一个构造函数用来生成Set数据结构. cons ...

  5. 跨域学习笔记2--WebApi 跨域问题解决方案:CORS

    自己并不懂,在此先记录下来,留待以后学习... 正文 前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题.本篇主要从实例的角度分享下CORS解决跨 ...

  6. Web网站配置Gzip,压缩js css文件

    启用apache的gzip 找到httpd.conf,打开文件找到对mod_deflate的注释 #LoadModule deflate_module modules/mod_deflate.so 去 ...

  7. [转][Angularjs]$http.post与$.post

    本文转自:https://www.cnblogs.com/wolf-sun/p/6878868.html 摘要 在angularjs发送post请求的时候,确实很困惑,在传递json数据的时候,总会遇 ...

  8. .NET Framework 平台构造基础

    CLR 公共语言运行库 执行给定编译代码单元所需的外部服务集合,它提供了一个定义明确的运行库层,可以被支持.NET的所有语言和平台所共享. 库 mscoree.dll:公共对象运行库执行引擎 当用户程 ...

  9. Android Material Design控件使用(二)——FloatButton TextInputEditText TextInputLayout 按钮和输入框

    FloatingActionButton 1. 使用FloatingActionButton的情形 FAB代表一个App或一个页面中最主要的操作,如果一个App的每个页面都有FAB,则通常表示该App ...

  10. (7)Microsoft office Word 2013版本操作入门_常用技巧

    1.自定义快速功能栏调整:常用功能按钮可以设置显示到此处.(如图所示的另存为和插入批注功能) 2.word中截图功能: 2.1 截图插入后的图片,可以进行设置  选中图片---点击[格式]可以设置图片 ...