Android系统升级

来源:互联网 发布:php程序员来晒工资 编辑:程序博客网 时间:2024/05/01 01:16

【整理】Android-Recovery Mode(recover模式详解)

 

 

一、前提条件

      要进行Android系统升级,必须首先进入recovery模式,进入recovery模式的方式有:

     1. 通过读取 /cache 分区中文件 /cache/recovery/command 内容进入,当然在重启之前已经向文件 /cache/recovery/command 写入了命令字段
     2. 通过按键操作进入 (G1 通过同时按 HOME 和 挂断键)
    以上两种方式进入都需要 blob的支持

二、基本升级过程

       Android 升级分为两种,一种是对系统中单个文件升级,一种是对 mtd 整个分区进行升级,升级包是用 zip 格式压缩的经过签名的压缩文件。升级过程主要流程描述如下:

      1. bootloader 发现用户按住升级键或/cache/recovery/command中有对应字段,将 recovery.img 作为 ramdisk 读取到内存。

      2. 内核根据 ramdisk 中的 init.rc 执行 recovery 脚本。 Recovery 脚本在 sdcard 中找到升级文件后调用 recovery 程序依次做以下操作:

      1) 检查升级文件的数字签名是否可靠。检查签名使用的本地密钥为 /res/keys

      2) 如果签名合法则执行提取压缩包中 META-INF/com/google/android/update-binary 文件重命名到 /tmp/update_binary 并执行该文件。

      3) update_binary 解析压缩文件中的 META-INF/com/google/android/updater-script 文件并执行。其升级进度通过管道回传给 recovery 程序。升级 / 更新可以直接覆盖目标文件,也可采用二进制补丁形式以减少升级文件的容量,采用的工具为 bsdiff 和 imgdiff 。对于补丁包升级形式,升级数据源可靠性鉴别的依据为 sha1 校验和数据长度比对。具体要求为: 1 升 级包提供的目标文件的 sha1 值和目标文件计算值符合,即目标正确。 2 进行补丁后的文件 sha1 值和长度符合升级包提供的补丁后的目标文件的长度和 sha1 数值,保证结果正确。两项有一项不符合则升级过程停止。为保证第二项操作不损毁最终目标,打补丁的文件会先临时存储到 cache 中,等到结果比对正确才进行实际写入 / 替换目标文件操作。所以此过程要求 cache 目录必须有足够空间能够保存临时文件。

三、recovery.img与boot.img的比较

 

  从上图可知:
   1) recovery.img其实已经是进入了Linux系统。

   2) recovery.img为了具有恢复系统的能力,比普通的boot.img目录结构中:
       1、多了/res/images目录,在这个目录下的图片都是恢复时我们看到的背景画面。
       2、多了/sbin/recovery二进制程序,这个就是恢复用的程序
       3、/sbin/adbd不一样,应该和恢复有关。

   3) Android系统中的初始化程序(init)和初始化配置文件(default.prop、init.trout.rc、init.rc、init.goldfish.rc、)都不一样。这就是系统没有进入图形界面而进入了类似文本界面,并可以通过简单的组合键进行恢复的原因。

   Android可以通过Recovery模式,实现恢复出厂设置、OTA升级、patch升级及firmware升级。在关机后,同时按下home + power键可以进入recovery模式。
大部分升级(包括刷机)都可以通过一个SD卡中的"updata.zip"文件升级包进行傻瓜式升级(步骤简单的升级)。而这一过程就是在系统进入Recovery模式后,通过升级程序运行升级包中“META-INF/com/google/android/update-script脚本来执行各种不同的自定义升级,脚本中是一组recovery模式下系统能识别的UI控制命令和文件系统操作命令,例如write_raw_image(烧写FLASH分区)、copy_dir(复制目录)等等。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 gla错加92号油 怎么办 95和98混加了怎么办 沥青车可以停在居民区怎么办 汽油进到眼睛了怎么办 汽油进了眼睛里怎么办 眼睛里面进了汽油怎么办 脱硫塔里的二氧化硫高怎么办 恐怖黎明铁匠选错怎么办 堡垒之夜草变色怎么办 火柴没有擦的了怎么办 乙醚倒进下水道了怎么办 乙醚和水不分层怎么办 乙醚闻多了头晕怎么办 爱乐维吃了便秘怎么办 刮完滑石粉墙面很软怎么办 被硫酸泼到皮肤怎么办 头磕了一下头晕怎么办 家里有事与工作不能请怎么办 撞了头头晕想吐怎么办 猫不小心摔一下怎么办 一氧化二氮中毒怎么办 电脑开机变慢了怎么办 怎么办抚顺韦德健身卡 预售健身卡合法吗怎么办 被浓硫酸泼到怎么办 婴儿误喝了生水怎么办 宝宝喝了生水拉肚子怎么办 因妈妈喝生水宝宝拉肚子怎么办 喝了几口生水怎么办 不小心吃到蟑螂怎么办 吃了有蛆的樱桃怎么办 不小心误食了蛆怎么办 吃了有蟑螂的汤怎么办 调节天平时指针向右怎么办 香薰蜡烛融化了怎么办 香薰蜡烛挂壁怎么办y 粗蜡烛只烧中间怎么办 紫薯馒头变绿怎么办 小孩手开水烫了怎么办 被油烫伤了怎么办才不留疤 烫伤水泡蹭破了怎么办