recovery mode
1. 系统的启动模式
1.1 Android系统的启动模式
一般的android系统具有以下几种启动模式(适用于Android系统的手机),它们的进入方式和描述如下所述:
进入方法:按住menu键,按电源键启动手机,直至手机启动完成松开menu键
描述:和正常启动一样,但没有登记Google,所以不能访问Market或使用你的Google账号
描述:可以从SD卡上安装新的系统映像(DREAIMG.NBH),只需再按一次电源键。为获取root权限,对手机进行降级,就是使用这个模式。
描述:可以打开命令解释程序(shell),刷新映像文件(flash image),执行备份等。当然这一切取决于你手机上的recovery image版本。
进入方法:按住返回键,按电源键启动手机,直至屏幕出现FASTBOOT字样后松开返回键
1.2 系统的启动模式
由下图可知Android系统启动后可能进入的模式有以下几种:
1. MAGIC KEY(组合键):组合键:若用户在启动刚开始按了指定的recovery组合键,系统会直接进入Recovery模式。
2. Recovery模式:进入系统“设置”->“系统”,有
2. Recovery模式中的三个部分
Recovery的工作需要整个软件平台的配合,从通信架构上来看,主要有三个部分。
l Bootloader:除了正常的加载启动系统之外,还会通过读取MISC分区(BCB)获得来至Main system和Recovery的消息。
3. Recovery模式中的两个通信接口
在Recovery服务中上述的三个实体之间的通信是必不可少的,它们有以下两个通信接口。
3.1 主系统和Recovery通过/cache下的文件通信
Recovery通过/cache/recovery/目录下的三个文件与main system通信。具体如下
l /cache/recovery/command:这个文件保存着Main system传给Recovery的命令行,每一行就是一条命令,支持一下几种的组合。
--send_intent=anystring //write the text out to recovery/intent
在Recovery结束时在finish_recovery函数中将定义的intent字符串作为参数传进来,并写入到/cache/recovery/intent中;
-update_package=root:path //verify install an OTA(On The Air) package file
Main system将这条命令写入时,代表系统需要升级,在进入Recovery模式后,将该文件中的命令读取并写入BCB中,然后进行相应的更新update.zip包的操作。
--wipe_data //erase user data(and cache),then reboot。
--wipe_cache //wipe cache(but not user data),then reboot。
--set_encrypted_filesystem=on|off - enables / diasables encrypted fs
--just_exit - do nothing; exit and reboot
l /cache/recovery/intent:Recovery传递给Main system的信息。作用不详。
installPackage() 重启设备安装指定升级包,在/cache/recovery/command里写入”--update_package=/path/xxx.zip”
rebootWipeUserData() 重启设备并清除user data分区,这个操作也成为“工厂复位”,
在/cache/recovery/command里写入”--wipe_data”
rebootWipeCache() 重启进入Recovery模式,清除cache分区,在/cache/recovery/command里写入”--wipe_data”
verifyPackage() 这个接口主要是用于校验下载回来的的升级包是否符合Android的签名认证。
接口调用后,系统会重启,转入Recovery mode,然后recovery进程会去读取/cache/recovery/command里的指令去执行相应的操作,是安装升级包还是恢复出厂设置等。
3.2 Bootloader与Recovery通过BCB(Bootloader Control Block)通信
l status字段:在完成相应的更新后,Bootloader会将执行结果写入到这个字段。
l recovery字段:可被Main System写入,也可被Recovery服务程序写入。该文件的内容格式为:
4 Recovery模式的基本流程
2. Main system向/cache/recovery/command写入"--wipe_data";
3. Main system 重启进入Recovery模式;
4. get_args() 函数向 BCB写入"boot-recovery"和"--wipe_data",然后开始擦除;
-- after this, rebooting will restart the erase --
5. erase_volume() 重新格式化/data分区
6. erase_volume() 重新格式化/cache分区
7. finish_recovery() 清除BCB,然后call reboot()进入Main system。
recovery mode相关推荐
- innodb force recovery
innodb force recovery的6种设置: 1.innodb force recovery=1,即使发现了损坏页面也继续让服务器继续运行,这个选项对于备份或者转存当前数据尤为有用 2.in ...
- oracle block media recovery,Oracle非归档模式Media Recovery错误之--ORA-26040
11.转储对应的logfile 14:35:48 SYS@ prod>alter system dump logfile '/dsk1/oradata/prod/redo01a.log': Sy ...
- 中兴V880使用手记之五——刷入recovery
Recovery是安卓系统的一个特殊工作模式,也就是一个刷机的工程界面,给安卓手机刷入Recovery相当于给系统安装了一个dos界面,可以在未开机的状态下,实现系统更新.还原出厂设置.清除手机缓存等 ...
- Oracle 10g配置RMAN RECOVERY CATALOG
Oracle的RMAN配置信息默认存放在target数据库的控制文件中,当然也可以配置一个recovery catalog服务器来存储这些信息,下面是控制文件和恢复的特性比较,一般来说维护10台以下的 ...
- Postgresql 物理热备份 -- PITR 时间点恢复(Point In Time Recovery)
时间点恢复(Point In Time Recovery) 转载于:https://www.cnblogs.com/xibuhaohao/p/11114412.html
- oracle闪回 分区,Oracle 闪回区(Oracle Flash recovery area)
闪回区已经有了好几载的岁月了,在10g的时候就被推出一直延续到现在.Oracle闪回区是为RMAN准备的,尽管抛开它我们可以同样完成数据库备份恢复的相关工作,Oracle依旧强烈推荐使用且它让其成为R ...
- 【转】Android Recovery模式
原文网址:http://leox.iteye.com/blog/975303 (muddogxp 原创,转载请注明) Recovery简介 Android利用Recovery模式,进行恢复出厂设置,O ...
- XIV(5)-- Data Recovery Protection (XDRP)
和大多数存储系统一样,XIV也提供多地容灾的解决方案.XIV Data Recovery Protection (XDRP)有三种实现方式, Synchronous Mirroring; ASynch ...
- 微软宣布Azure Migrate和Site Recovery服务增强功能
近日,微软宣布了Azure Migrate和Azure Site Recovery服务的几项增强功能,包括用于存储发现和评估元数据的额外地理区域,以及用于迁移的其他受支持选项. 结合使用Azure M ...
- 三星 android recovery,三星recovery模式怎么操作
满意答案 zhjzh69 2015.08.12 采纳率:48% 等级:9 已帮助:820人 首先说下进入recovery的方法: 1.将手机完全关机后,按住音量键下+电源键,进入bootload ...
最新文章
- C++中内存分配、函数调用和返回值问题
- linux文件系统添加pcm,嵌入式linux中PCM音频编程实践
- (三)HTML 规范
- iptables 命令记录
- 推荐好用的linux系统(manjaro)
- JAVA大厂高频面试题及答案
- mysql不同的类的个数_Mysql-SQL优化-统计某种类型的个数_MySQL
- android模拟点击滑动,模拟Android的view点击和滑动监听
- 小程序 图片加载慢卡
- 单片机之汇编语言和C语言(以PIC单片机为例)
- Spark的基本工作流程
- 七个问题透视百度智慧商业平台
- python实现jacknife交叉验证
- vscode能写winform窗体吗_vs code 写C#心得
- standard、singleTop、singleTask和singleInstance原理分析
- 韦东山老师的单片机核心课程学习笔记(一)
- 禁用backspace键的后退功能
- UVA12627:Erratic Expansion(奇怪的气球膨胀)
- 海上计算距离为什么用海里,而不用公里?
- linux系统如何为软件升级,Linux如何升级软件版本
热门文章
- 上海电力大学计算机专业全国排名,上海电力大学怎么样 最好的专业有哪些
- 泰坦尼克号数据_泰坦尼克号数据可视化分析
- 20.6.5算法心得 一元二次方程解法
- python 将excel 数字日期转化为正常
- python爬视频网站数据_Python爬虫:B站排行榜视频播放量,视频评论量等数据采集...
- AWT:实现简单的java计算器
- 信奥中的数学:卷积、傅立叶变换
- 微信小程序防止恶意点击、多次点击
- linux怎么共享打印机驱动程序,Linux下使用局域网中windows 共享打印机
- win10系统映像恢复