Recovery 流程简介
Recovery 流程简介
Adroid 系统中的 Recovery 模式主要为用户提供了 OTA 升级和恢复出厂设置两大功能,用户可以通过 setting 中的系统软件更新和恢复出厂设置来进入到 recovery 模式。下面分别介绍一下 recovery 模式中的这两个主要功能。
一、OTA 升级
在 android 系统中〃可以通过以下两种方式进行系统升级:
1. 在线升级:通过在线下载升级包的方式实现升级
2. 离线升级:通过把 update.zip 文件放到 SD 卡的根目录下〃执行 Setting--->About phone---->System software update 来实现升级。通常升级采用的都是这种方式。
二、OTA 升级流程
下面介绍一下 OTA 的升级流程。
1. 用户选择系统软件更新时〃setting app 会先向/cache/recovery/command 文件写入“--update_package=/sdcard/update.zip",接着执行PowerMananger.reboot("recovery");这样系统会重新启动并进入到 recovery 模式。
2. ui->Init();在 recovery 中有自己的一套 UI 显示〃主要是一个 menu〃用户可以根自己的需要来执行相应的操作〃包括 wipe data/cache〃reboot 等。
3. install_package正开始升级的部分〃
流程如下:
1.ensure_path_mount():先判断所传的 update.zip 包路径所在的分区是否已经挂如果没有则先挂载。
2.load_keys():加载密钥文件
3.verify_file():对升级包 update.zip 包进行签名验证。
4.mzOpenZipArchive():打开升级包.
5.try_update_binary():先根据我们上一步获得的 zip 包信息〃以及升级包的绝对路径将 update_binary 文件拷贝到内存文件系统的/tmp/update_binary 中。以便后面使用。
6.pipe():创建管道〃用于下面的子进程和父进程之间的通信。
7.fork():创建子进程〃在这个子进程中〃通过解析 update-script 中的脚本来实现升级过程。在升级过程中〃父子进程进行通信〃父进程主要显示升级的进度。