进入Recovery之前的关机流程

进入Recovery之前的关机流程

作者:李志强       2016-02-22

欢迎转载,请注明出处 http://www.cnblogs.com/kaios/p/5208523.html

Recovery模式和Android的正常模式是独立的,通常在Recovery模式中完成的工作包括,Fota升级,SD卡升级,以及恢复出厂设置这三个功能。这三个功能中Fota升级的升级包通常上由Fota的上层应用来下载的,而存放的位置一般上/cache分区或者/data分区。如果是存放在cache分区,那么没有问题,正常升级即可。如果升级包是被存放在了data分区,在android引入了data分区加密功能之后,这个就会有问题。如果data分区被加密过,那么在recovery下说无法通过文件系统来直接访问存放中data分区中的升级包的。那么在data分区被加密的情况下,recovery是怎么读取存放中data分区中的升级包呢?这就是本文要讲述的,这进入Recovery模式之前的关机流程中,其实还做了一些额外的处理。如果要重启进入recovery模式进行sd卡升级或者恢复出厂设置,则会走的是正常的关机进入recovery流程,如下流程图:

Fota应用在下载完Fota升级包之后是通过调用RecoverySystem提供的installPackage接口来启动升级。在这个接口中首先会创建一个文件/cache/recovery/uncrypt_file这个文件是一个标志文件,创建这个文件则表示该次关机流程是为了fota升级而启动的。并且这个文件中保存着升级包的路径,这个路径会中uncrypt服务中被用到。这里提到了uncrypt服务,如上流程图所示,这个服务就是为了解决中data区加密的情况下,recovery读取data分区存放的升级包的问题。

uncrypt是一个可执行的程序,编译后生成在out/.../system/bin/目录下,对应的代码为bootable/recovery/uncrypt/*,而和这个可执行程序有关的服务有两个如下:

 1 ...
 2
 3 service uncrypt /system/bin/uncrypt
 4     class main
 5     disabled
 6     oneshot
 7
 8 service pre-recovery /system/bin/uncrypt --reboot
 9     class main
10     disabled
11     oneshot
12
13 ...
时间: 2024-11-04 03:18:37

进入Recovery之前的关机流程的相关文章

Android Framework层Power键关机流程(二,关机流程)

二,关机流程 从前一篇博文我们知道,当用户长按Power键时会弹出(关机.重新启动,飞行模式等选项)对话框,我们点击关机,则会弹出关机确认对话框.那么从选项对话框到关机确认对话框又是一个什么流程呢.以下我们在简单分析一下: showGlobalActionsDialog()-->showDialog()-->handleShow()-->createDialog()-->onPress()-->shutdown() PhoneWindowManager.java void s

Linux系统启动流程分析与关机流程

Linux 系统启动流程分析 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立终端. 用户登录系统. init程序的类型: SysV: init, CentOS 5之前, 配置文件: /etc/inittab. Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf. Systemd: systemd, CentOS 7,配置文件: /usr/lib/

Shutdown(关机)流程

梳理了下关机流程,比开机流程简单很多,大概流程如下:

CentOS 7系统详细开机启动流程和关机流程

名称 bootup - 系统启动流程 描述 在系统启动过程中要涉及多个不同的组件.按下开机按钮后,首先BIOS/UEFI做最基本的硬件自检与初始化, 然后加载预设/手动选择的磁盘/网络上的引导加载器(例如GRUB2),引导加载器进一步从磁盘/网络上加载操作系统内核(例如Linux). 对于Linux来说,内核将会(可选的)解压一个initrd(initial RAM disk)镜像(可以用dracut类的工具生成), 并执行由"rdinit="内核引导参数指定的init程序(例如sys

Android 关机流程 从kernel到framework

Android6.0关机流程 Android系统关机有如下方式:1.定时关机.2.命令行输入reboot重启.3.长按电源键出现关机对画框等,本文以长按电源键为例来分析基于Android 6.0的高通源码. 长按电源键会启动Android系统的按键消息处理机制.每个activity具有一个phonewindow对象,每个phonewindow对象具有一个DecorView对象,每个DecorVier又被设置到一个ViewRoot对象中(如图一).每个activity创建的时候会通过ViewRoo

(转)CentOS 7系统详细开机启动流程和关机流程

CentOS 7系统详细开机启动流程和关机流程 原文:http://blog.csdn.net/yuesichiu/article/details/51350654 名称 bootup - 系统启动流程 描述 在系统启动过程中要涉及多个不同的组件.按下开机按钮后,首先BIOS/UEFI做最基本的硬件自检与初始化, 然后加载预设/手动选择的磁盘/网络上的引导加载器(例如GRUB2),引导加载器进一步从磁盘/网络上加载操作系统内核(例如Linux). 对于Linux来说,内核将会(可选的)解压一个i

Android Framework层Power键关机流程(一,Power长按键操作处理)

一:Android处理Power按键长按操作 在Framework层中,Android4.x对Power键(KeyEvent.KEYCODE_POWER)的操作,我们从PhoneWindowManager开始分析,在分析前我这里打印了该方法的堆栈调用信息.大家可以参考一下. public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags) { ...... android.uti

android关机流程

关机过程的主要实现在ShutdownThread.java中在关机过程中,主要做了三件事:1.发送关机广播 有的模块可能需要监听手机关机事件,所以在关机时发送关机广播,通知相关模块处理.2.关闭一些主要服务进程 而在关机过程中为了不损坏手机性能,记录当前一些状态,需要将一些模块服务进程先关闭,然后才进行关机3.通过PowerManagerService调用底层进行关机 原文地址:https://www.cnblogs.com/lixiangfu/p/10400278.html

Android系统Recovery工作原理之使用update.zip升级过程分析(六)---Recovery服务流程细节【转】

本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465439  Android系统Recovery工作原理之使用update.zip升级过程分析(六)---Recovery服务流程细节            Recovery服务毫无疑问是Recovery启动模式中最核心的部分.它完成Recovery模式所有的工作.Recovery程序对应的源码文件位于:/gingerbread0919/bootable/recovery/recovery