如何使用手机recovery模式修复复系统

再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
威锋网7月10日消锋网7月10日消息,《植物大战僵尸2》 如今...
威锋网7月10日消息,《植物大...
近日,开发商 Esquilax Games ..
说到方块游戏,相信有很多朋友应该还会记得 Gavina Games 早...
威锋网7月10日消息,《植物大...
近日,开发商 Esquilax Games ..
说到方块游戏,相信有很多朋友应该还会记得 Gavina Games 早...
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
您需要通过验证再能继续浏览 3秒后开始验证
威锋旗下产品
Hi~我是威威!
 粤公网安备 11号
新三板上市公司威锋科技(836555)
增值电信业务经营许可证:
Powered by Discuz!Recovery简介
Android利用Recovery模式,进行恢复出厂设置,OTA升级,patch升级及firmware升级。
升级一般通过运行升级包中的META-INF/com/google/android/update-script脚本来执行自定义升级,脚本中是一组recovery系统能识别的UI控制,文件系统操作命令,例如write_raw_image(写FLASH分区),copy_dir(复制目录)。该包一般被下载至SDCARD和CACHE分区下。如果对该包内容感兴趣,可以从http://forum./showthread.php?t=442480下载JF升级包来看看。
升级中还涉及到包的数字签名,签名方式和普通JAR文件签名差不错。公钥会被硬编译入recovery,编译时生成在:out/target/product/XX/obj/PACKAGING/ota_keys_inc_intermediates/keys.inc
G1中的三种启动模式
MAGIC KEY:
camera + power:bootloader模式,ADP里则可以使用fastboot模式
home + power:recovery模式
Bootloader正常启动,又有三种方式,按照BCB(Bootloader Control Block, 下节介绍)中的command分类:
command == 'boot-recovery' → 启动recovery.img。recovery模式
command == 'update-radio/hboot' → 更新firmware(bootloader)
其他 → 启动boot.img
Recovery涉及到的其他系统及文件
CACHE分区文件
Recovery 工具通过NAND cache分区上的三个文件和主系统打交道。主系统(包括恢复出厂设置和OTA升级)可以写入recovery所需的命令,读出recovery过程中的LOG和intent。
/cache/recovery/command: recovery命令,由主系统写入。所有命令如下:
--send_intent=anystring - write the text out to recovery.intent
--update_package=root:path - verify install an OTA package file
--wipe_data - erase user data (and cache), then reboot
--wipe_cache - wipe cache (but not user data), then reboot
/cache/recovery/log:recovery过程日志,由主系统读出
/cache/recovery/intent:recovery输出的intent
MISC分区内容
Bootloader Control Block (BCB) 存放recovery bootloader message。结构如下:
struct bootloader_message {
char command[32];
char recovery[1024];
command可以有以下两个值
“boot-recovery”:标示recovery正在进行,或指示bootloader应该进入recovery mode
“update-hboot/radio”:指示bootloader更新firmware
recovery内容
“recovery\n
&recovery command&\n
&recovery command&”
其中recovery command为CACHE:/recovery/command命令
两种Recovery Case
FACTORY RESET(恢复出厂设置)
用户选择“恢复出厂设置”
设置系统将&--wipe_data&命令写入/cache/recovery/command
系统重启,并进入recover模式(/sbin/recovery)
get_args() 将 &boot-recovery&和&--wipe_data&写入BCB
erase_root() 格式化(擦除)DATA分区
erase_root() 格式化(擦除)CACHE分区
finish_recovery() 擦除BCB
OTA INSTALL(OTA升级)
升级系统下载 OTA包到/cache/some-filename.zip
升级系统写入recovery命令&--update_package=CACHE:some-filename.zip&
重启,并进入recovery模式
get_args() 将&boot-recovery& 和 &--update_package=...& 写入BCB
install_package() 作升级
finish_recovery() 擦除 BCB
** 如果安装包失败 ** prompt_and_wait() 等待用户操作,选择ALT+S或ALT+W 升级或恢复出厂设置
main() 调用 maybe_install_firmware_update()
如果包里有hboot/radio的firmware则继续,否则返回
将 &boot-recovery& 和 &--wipe_cache& 写入BCB
将 firmware image写入cache分区
将 &update-radio/hboot& 和 &--wipe_cache& 写入BCB
bootloader自身更新firmware
bootloader 将 &boot-recovery& 写入BCB
erase_root() 擦除CACHE分区
main() 调用 reboot() 重启系统
Recovery模式流程
/init → init.rc → /sbin/recovery →
main():recovery.c
ui_init():ui.c [UI initialize]
gr_init():minui/graphics.c [set tty0 to graphic mode, open fb0]
ev_init():minui/events.c [open /dev/input/event*]
res_create_surface:minui/resource.c [create surfaces for all bitmaps used later, include icons, bmps]
create 2 threads: progress/input_thread [create progress show and input event handler thread]
get_args():recovery.c
get_bootloader_message():bootloader.c [read mtdblock0(misc partition) 2nd page for commandline]
check if nand misc partition has boot message. If yes, fill argc/argv.
If no, get arguments from /cache/recovery/command, and fill argc/argv.
set_bootloader_message():bootloader.c [set bootloader message back to mtdblock0]
Parser argv[] filled above
register_update_commands():commands.c [ register all commands with name and hook function ]
registerCommand():commands.c
Register command with name, hook, type, cookie.
Commands, e.g: assert, delete, copy_dir, symlink, write_raw_image.
registerFunction():commands.c
Register function with name, hook, cookie.
Function, e.g: get_mark, matches, getprop, file_contains
install_package():
translate_root_path():roots.c [ &SYSTEM:lib& and turns it into a string like &/system/lib&, translate the updater.zip path ]
mzOpenZipArchive():zip.c [ open updater.zip file (uncompass) ]
handle_update_package():install.c
verify_jar_signature():verifier.c [ verify signature with keys. verify manifest and zip package archive ]
verifySignature() [ verify the signature file: CERT.sf/rsa. ]
digestEntry():verifier.c [ get SHA-1 digest of CERT.sf file ]
RSA_verify(public key:keys.inc, signature:CERT.rsa, CERT.sf's digest):libc/rsa.c [ Verify a 2048 bit RSA PKCS1.5 signature against an expected SHA-1 hash. Use public key to decrypt the CERT.rsa
to get original SHA digest, then compare to digest of CERT.sf ]
verifyManifest() [ Get manifest SHA1-Digest from CERT.sf. Then do digest to MANIFEST.MF. Compare them ]
verifyArchive() [ verify all the files in update.zip with digest listed in MANIFEST.MF ]
find_update_script():install.c [ find META-INF/com/google/android/update-script updater script ]
handle_update_script():install.c [ read cmds from script file, and do parser, exec ]
parseAmendScript():amend.c [ call yyparse() to parse to command ]
exeCommandList():install.c
exeCommand():execute.c [ call command hook function ]
erase DATA/CACHE partition
prompt_and_wait():recovery.c [ wait for user input: 1) reboot 2) update.zip 3) wipe data ]
ui_key_xxx get ALT+x keys
1) do nothing
2) install_package('SDCARD:update.zip')
3) erase_root() → format_root_device() DATA/CACHE
may_install_firmware_update():firmware.c [ remember_firmware_update() is called by write_hboot/radio_image command, it stores the bootloader image to CACHE partition, and write update-hboot/radio
command to MISC partition for bootloader message to let bootloader update itself after reboot ]
set_bootloader_message()
write_update_for_bootloader():bootloader.c [ write firmware image into CACHE partition with update_header, busyimage and failimage ]
finish_recovery():recovery.c [ clear the recovery command and prepare to boot a (hopefully working) system, copy our log file to cache as well (for the system to read), and record any intent
we were asked to communicate back to the system. ]
Recovery模式流程图
以下流程图绘制了系统从启动加载bootloader后的行为流程。
本文已收录于以下专栏:
相关文章推荐
Android系统Recovery工作原理之使用update.zip升级过程分析(六)---Recovery服务流程细节
         Recovery服务毫无疑问是Recovery...
阅读完上一篇文章: http://blog.csdn.net/andyhuabing/article/details/0;
我们已经清楚了如何进入正常模式和Recovery模式已有深刻理解...
最近做Recovery的规范及操作指导文档,花了一些时将此流程搞清。
Android利用Recovery模式,进行恢复出厂设置,OTA升级,patch升级及firmware升级。而在进入Recover...
android recovery 模式下出于安全的考虑,一般禁止adb  和adb shell 登陆。如果需要在recovery  模式下debug ,会带来很大的不方便。
首先配置recovery...
platform: imx6q
os: Android5.1
branch: l5.1.1_2.1.0-ga
原生source code是无法通过adb进入recovery mode的,提示err...
Android recovery分析(二)---增量升级包的编译流程
Android 的Recovery机制
1. 系统的启动模式 1
1.1 Android系统的启动模式 1
1.2 系统的启动模式 2
2. Recovery模式中的三个部分 3...
BIOS是英文&Basic Input Output System&的缩略语,直译过来后中文名称就是&基本输入输出系统&。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保...
Chromium除了远近闻名的多进程架构之外,它的多线程模型也相当引人注目的。Chromium的多进程架构是为了解决网页的稳定性问题,而多线程模型则是为了解决网页的卡顿问题。为了达到这个目的,Chro...
Android手机开机后,会先运行 bootloader。Bootloader
会根据某些判定条件(比如按某个特殊键)决定是否进入 recovery模式。Recovery模式会装载recovery
...
他的最新文章
讲师:姜飞俊
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)安卓Recovery模式该怎么用?
18:29:38 本文行家:
& & & & &安卓系统出了名的常刷机,说起刷机就不能不谈Recovery模式,这项操作在刷机过程中是重要的一道步骤。& & & & &Recovery是什么东西呢?& & & & &一般称为刷机模式或工程模式,也可以理解为电脑的GHOST。在这个模式下你可以直接用sd 卡上的zip 的rom 升级或者备份你的系统,老版本的recovery 只有三个选项,无法备份系统,只能用update.zip这个文件名的文件升级,不能用任何文件名的zip文件升级。新版本已经多出很多选项可以供你操作。如何进入Recovery模式?& & & & &每部Android设备进入Recovery模式的方法不同。具体组合键按法可以百度查询。或者在进去安卓后重启机器,有些系统重启时可以选择Reboot和recovery。进入recovery后如何操作?& & & & &当你顺利进去recovery模式后,大部分手机按音量键来上下选择,接听键确认,电源键返回,具体操作方法每款机器都不相同。recovery里的对应选项的说明这里就拿我的平板做范例:2.apply update from sdcard——从SD卡中安装更新.5.install zip from sdcard——从sd卡根目录的.zip ROM 刷机包刷机.7.mounts and storage——挂载存储器.8.advanced——高级.打开第一页从上倒下分别是:1.Reboot system now——重启.2.apply update from sdcard——从SD卡中安装更新.& & & &&2.1 Install /sdcard/update.zip——把要更新包的文件名字改为update.zip后,放置于SD根目录下更新。3.Wipe data/factory reset——清除内存数据和缓存数据.(刷机前建议清除此项)恢复出厂设置,所有数 & & & & & & & & & & & & & & & & & & & & & & & & & &据丢失4.Wipe cache partition——清楚缓存分区.(刷机前建议清除此项)5.install zip from sdcard——从sd卡根目录的.zip ROM 刷机包刷机.& & & & 5.1&choose ZIP from sdcard——从存储卡选择ZIP 格式更新包刷入ROM,这里是可以让你自选在不同文件 & & & & & & & & & 夹、不同文件名的ROM 文件刷入.6.Backup and Restore——备份和还原.7.mounts and storage——挂载存储器.& & & & &7.1&mounts USB&&storage——可以用电脑通过USB读取SD卡.8.advanced——高级.& & & & &8.1&wipe dalvik cache——清空DalvikVM 缓存。(刷机前建议清除此项)& & & & &8.2&wipe battery stats——清空电池状态。(刷机前建议清除此项)这个选项主要就是把电池状态恢复至最初状态。这会让电池显示和使用更准确,有些以前的用户就在使用时遇到电池使用不准确的问题,这个清空选项可以解决这个问题。还是非常需要的。什么是dalvik:当Android 启动时,DalvikVM 监视所有的程序(APK 文件)和框架,并且为他们创建一个依存关系树。DalvikVM 通过这个依存关系树来为每个程序优化代码并存储在Dalvik 缓存中。这样,所有程序在运行时都会使用优化过的代码。这就是当你刷一个新的ROM 时,有时候第一次启动时间非常非常长的原因。当一个程序(或者框架库)发生变更,DalvikVM 将会重新优化代码并且再次将其存在缓存中。所以清空DalvikVM 缓存相当必要的。
百科的文章(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。如需转载,请注明来源于。
电子机械专业毕业后从事质量安全检测工作多年,喜欢电子器械 ,后成为安卓系统死忠,早年长期使用过塞班、wm等各种系统,后从g1上市便入手使用,至今更换并深入研究过各种安卓机型。期间动手为自己损坏的手机更换各种部件,累积了丰富的使用与维修经验。之后长期为手机杂志报刊撰写安卓使用心得等文章,并担任安卓中文网编辑一职.查看: 108208|回复: 52
[奇兔教程] 如何使用recovery进行双清
签到天数: 287 天[LV.8]以坛为家I
主题好友奇兔币
马上注册,玩转你的爱机。
才可以下载或查看,没有帐号?
本帖最后由 小林 于
14:53 编辑
把手机进入,各个手机进入recovery的方法不同,三星手机一般是扣电池后5秒再装上,不要开机,同时按住音量上键+Home键+电源键,屏幕亮起后松开电源键,其他两个键继续按。
其他品牌机型进入recovery的方法具体请自行百度。如:A390t进入recovery。
不同手机的recovery的界面可能不同,不必一样,但是一定要有【wipe data/factory reset】,【wipe cache partition,&&中文版的叫【清除数据】【清除缓存】,有这两个就够了,我们这里讲的是双清。
用音量键移动选择,用电源键确(三星部分手机是用Home键确定)。
1:移动选择wipe data/factory reset,然后确定。
主界面.png (75.38 KB, 下载次数: 310)
wipe data/factory reset
16:32 上传
2:接着选择Yes——delete all user data,然后确定。
清除数据确认.png (64.58 KB, 下载次数: 257)
16:36 上传
3:执行完成后,选择wipe cache partition,然后确定。
清除cache.png (75.86 KB, 下载次数: 237)
16:38 上传
4:进入后选择Yes-Wipe Cache,然后确定。(有的手机没有这一步,这是正常的,不影响)
清除cache.png (75.86 KB, 下载次数: 274)
Yes-Wipe Cache
16:42 上传
5:执行完成后,选择第一项reboot system now,手机自动重启,双清完成,等待重启进入系统既可,双清后第一次进入系统会比较慢,属正常现象。
<p id="rate_522" onmouseover="showTip(this)" tip="很给力!&奇兔币 + 1
" class="mtn mbn">
<p id="rate_047" onmouseover="showTip(this)" tip="淡定&奇兔币 + 1
" class="mtn mbn">
<p id="rate_614" onmouseover="showTip(this)" tip="很给力!&奇兔币 + 2
" class="mtn mbn">
签到天数: 5 天[LV.2]偶尔看看I
主题好友奇兔币
小白, 积分 59, 距离下一级还需 41 积分
小白, 积分 59, 距离下一级还需 41 积分
刷机后一直停留在recovery模式重启还是一样停留在recovery模式怎么回事?急,求回复!
该用户从未签到
主题好友奇兔币
小白, 积分 14, 距离下一级还需 86 积分
小白, 积分 14, 距离下一级还需 86 积分
楼主,双清后还是重复开机动画怎么办?
签到天数: 4 天[LV.2]偶尔看看I
主题好友奇兔币
小白, 积分 39, 距离下一级还需 61 积分
小白, 积分 39, 距离下一级还需 61 积分
双清还是进不去啊!!!一样的郁闷!晕!呵呵!
签到天数: 47 天[LV.5]常住居民I
主题好友奇兔币
大成, 积分 3993, 距离下一级还需 1007 积分
大成, 积分 3993, 距离下一级还需 1007 积分
楼主的帖子就是这么给力!
签到天数: 718 天[LV.9]以坛为家II
主题好友奇兔币
该用户从未签到
主题好友奇兔币
小白, 积分 14, 距离下一级还需 86 积分
小白, 积分 14, 距离下一级还需 86 积分
&&双清还是进不去啊...郁闷死了.
签到天数: 1 天[LV.1]初来乍到
主题好友奇兔币
小白, 积分 19, 距离下一级还需 81 积分
小白, 积分 19, 距离下一级还需 81 积分
还是不行么
该用户从未签到
主题好友奇兔币
小白, 积分 11, 距离下一级还需 89 积分
小白, 积分 11, 距离下一级还需 89 积分
双清后还是重复开机动画怎么办
该用户从未签到
主题好友奇兔币
小白, 积分 18, 距离下一级还需 82 积分
小白, 积分 18, 距离下一级还需 82 积分
发帖在100以上的活跃用户
注册会员通过邮箱验证主题达到10贴
管理员的身份代表专属勋章
注册会员通过邮箱验证主题达到10贴
站长推荐 /3
手机刷机成砖了怎么办?手机开不了机怎么办?整理一批各种品牌手机官方固件为大家手机救砖,以下大约有几千款手机官方固件线刷包。
MTK智能手机原则上是没有真正的死砖头的,除非是硬件问题!这个是后话了,本文提及的死砖头,基本表现:数据线连接电脑没“任何”反应,接充电线,充电灯不亮!
本期为大家详细演示一下奇兔线刷大师一键线刷救砖的流程。
奇兔线刷大师是奇兔官方专门为线刷量身打造的一款软件,既可以进行日常更新系统的线刷,还可以在由于各种原因导致系统崩溃后进行线刷修复。
Powered by

我要回帖

更多关于 华为系统recovery模式 的文章

 

随机推荐