一般在升级过程,都会提示用户,请勿断电,不管是android的STB,TV还是PHONE,或者是其他的终端设备,升级过程,基本上都可以看到“正在升级,请勿断电”,然后有个进度条,显示升级的进度。

但是从系统安全的角度考虑,如果用户真断电了,我们仍然需要能够从异常掉电的情况中,恢复系统或者继续升级。

我们先理解下recovery的过程,我们升级过程,其实分为两个阶段,升级包校验过程,以及升级包更新过程

2.1 校验过程掉电

在升级包校验过程,是recovery对升级包zip的完整性以及合法性进行校验,不会写入任何数据,此时掉电,系统不受任何影响

2.2 更新升级包过程掉电

更新过程,会从升级包zip中提取数据,写入到flash的分区中,此时如果掉电,可能系统就被写坏了,在第一节中,我们了解了,其实我们是有两个系统的:

Android启动: uboot  -> boot -> system

Recovery启动:uboot -> recovery

也就是我们在recovery中,可以更新android系统需要所有的分区,但是发现有个问题,recovery本身依赖uboot以及recovery分区,那么recovery如果在更新uboot或者recovery分区过程掉电,那么掉电之后recovery是无法正常启动的。

我们分为三种情况讨论:

更新掉电区间

  2.2.1 更新logo boot system等分区过程掉电

此过程,recovery系统仍然OK,我们重新上电之后,可以继续进入recovery系统升级即可。

  2.2.2 更新recovery分区掉电。

Google原生的recovery分区升级是在android中完成的,recovery更新android,android更新recovery,无论何时,都有一个系统正常,保证了系统不会变砖,recovery更新android的流程。

Recovery通过update.zip更新除recovery分区外的所有分区。

Android通过/system/etc/install-recovery.sh 把/system/etc/recovery-resource.dat更新到recovery分区

2.2.3更新uboot掉电

Uboot是我们系统的启动分区。如果损坏就无法启动,目前国内,基本上厂商都是使用的是emmc flash,emmc包含有BOOT0 BOOT1 USER部分的,一般我们会存储三份uboot镜像,这样其实我们,在emmc上面是存储了三份uboot,如果升级掉电,损坏了其中一个,还有两个uboot是可以启动的,所以不用担心,更新uboot掉电导致的无法启动问题。

有些人就有疑问了,如果是nand flash那么就没有BOOT0 BOOT1了,怎么来保证呢,其实道理是相同的,我们可以在nand flash上面存储两份uboot,这样如果损坏了其中一个,还有一个uboot是好的。

目前来看,国内做android设备的厂商,基本上都是使用的emmc,emmc等同于nand +坏块管理模块,所以emmc比nand的价格高一些,但是少了坏块的处理,并且最终都是由消费者买单,所以普遍上厂商都乐于使用emmc存储。

2.3 总结

升级校验过程掉电,不影响系统本身。

升级更新过程掉电,可以保证重新上电之后进入recovery继续升级。对于特殊分区,像uboot分区,我们需要特殊进行备份处理。

2.4 备注

上面讲到的是整包升级掉电,还有一个特殊的升级,就是差分包升级,如果是差分包升级过程掉电呢,还可以继续升级吗?我们在下一节中详解。

android recovery升级过程中掉电处理的更多相关文章

  1. Android Recovery升级原理

    摘要 Recovery模式指的是一种可以对安卓机内部的数据或系统进行修改的模式(类似于windows PE或DOS).也可以称之为安卓的恢复模式,在这个所谓的恢复模式下,我们可以刷入新的安卓系统,或者 ...

  2. android recovery 升级之USB设备挂载

    Recovery升级过程,通常会从两个地方获取升级包update.zip升级,一般在线升级,会把升级包下载到cache分区,本地升级会从usb或者tf卡中升级.本文讨论下,本地USB升级时,无法挂载U ...

  3. Android Studio使用过程中常见问题及解决方案

    熟悉Android的童鞋应该对Android Studio都不陌生.Android编程有两个常用的开发环境,分别是Android Studio和Eclipse,之前使用比较多的是Eclipse,而现在 ...

  4. Android ListView滑动过程中图片显示重复错乱闪烁问题解决

    最新内容建议直接访问原文:Android ListView滑动过程中图片显示重复错乱闪烁问题解决 主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及L ...

  5. WDCP从php5.2升级到5.3的办法,以及升级过程中iconv错误的处理

    从wdcp官方论坛我们可以找到一个询问升级的帖子,然后管理员在回复中也提供了升级方法: cd /tmp wget -c http://dl.wdlinux.cn:5180/soft/php-5.3.1 ...

  6. Android APP 调试过程中遇到的问题。

    调试过过程中APP安装完启动后有的时候会异常退出,报这个错误.有的时候可以直接启动.查找不到原因.网上说把commit方法替换成commitAllowingStateLoss() 也无效. Andro ...

  7. recovery 升级过程LED灯闪烁

    Android设备在进入recovery升级的过程,我们在屏幕上面可以看到升级的机器人动画,以及升级的进度显示.这仅限于有屏幕的设备,比如平板PAD,电视TV等,对与没有屏幕的盒子BOX,那么在不接入 ...

  8. 编译recovery及过程中的部分错误解决

    你必须使用32位或64位Ubuntu系统,关于如何建立编译环境和同步源码的指导,请自己查找有关指导的文章. 1, 安装所需要的包 2, 建立编译的环境,并同步CWM所需的源码,CyanogenMod源 ...

  9. recovery 升级过程执行自定义shell命令

    有时候我们需要,在升级的过程中,执行一些shell命令,来完成我们的一些需求,利用升级过程,进行一些特殊化的操作,思路如下: 第一: 把我们需要执行的命令,写成一个test.sh脚本,然后在recov ...

随机推荐

  1. SUDO:/ETC/SUDOERS 可被任何人写 解决方案

    问题一: sudo: /etc/sudoers is world writablesudo: no valid sudoers sources found, quittingsudo: unable ...

  2. Python模拟微博登陆,亲测有效

    今天想做一个微博爬个人页面的工具,满足一些不可告人的秘密.那么首先就要做那件必做之事!模拟登陆-- 代码是参考了:https://www.douban.com/note/201767245/ 我对代码 ...

  3. vue.js多页面开发环境搭建

    利用 vue-cli 搭建的项目大都是单页面应用项目,对于简单的项目,单页面就能满足要求.但对于有多个子项目的应用,如果创建多个单页面,显示有点重复,特别是 node_modules 会有多份相同的. ...

  4. Nginx + Uswgi + Django的部署

    Nginx + Uswgi + Django的部署 待更新 https://code.ziqiangxuetang.com/django/django-static-files.html https: ...

  5. underscore.js源码解析【对象】

    // Object Functions // ---------------- // Keys in IE < 9 that won't be iterated by `for key in . ...

  6. HDFS集群数据不均衡处理

    一.概述 公司使用是自己搭建的hadoop集群,版本2.7.3,最近发现出现了hdfs数据存储不均衡的现象,其中有一个datanode使用了65%,而有一个只使用了20%.hadoop集群使用的时间长 ...

  7. VueJs开发笔记—IDE选择和优化、框架特性、数据调用、路由选项及使用

    一.IDE的选择: VsCode和WebStorm都是不错的选择,说一下两者的优缺点,调试便捷性来说两者不相上下. WebStorm缺点:性能方面VsCode远好于WebStorm: WebStorm ...

  8. 将H5页面的应用打包成APP(苹果和安卓版本)

    今天在清理手机上的应用时看到了“联名会员”这个“app”,我感觉只是个H5页面,不是一个原生的APP,但看起来和原生APP一模一样,心想,如果以后我开发了H5应用是不是可以把它搞成APP形式供别人下载 ...

  9. FFmpeg封装格式处理

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10506636.html FFmpeg封装格式处理相关内容分为如下几篇文章: [1]. F ...

  10. POJ 1860 Currency Exchange(如何Bellman-Ford算法判断图中是否存在正环)

    题目链接: https://cn.vjudge.net/problem/POJ-1860 Several currency exchange points are working in our cit ...