`

Android刷机原理之recovery内部工作原理

阅读更多

现在Android版本更新太快,2.1是最普遍的版本,不过马上都开始升级2.2版本了,目前网路上提供了很多自制作的andorid ROM,通过刷机工具进行刷机,最普遍的是利用android的recovery机制进行update,现将recovery的

内部工作原理摘录如下(摘自recovery源码注释,等有空时候我来翻译下)

 

/*
 * The recovery tool communicates with the main system through /cache files.
 *   /cache/recovery/command - INPUT - command line for tool, one arg per line
 *   /cache/recovery/log - OUTPUT - combined log file from recovery run(s)
 *   /cache/recovery/intent - OUTPUT - intent that was passed in
 *
 * The arguments which may be supplied in the recovery.command file:
 *   --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
 *   --set_encrypted_filesystem=on|off - enables / diasables encrypted fs
 *
 * After completing, we remove /cache/recovery/command and reboot.
 * Arguments may also be supplied in the bootloader control block (BCB).
 * These important scenarios must be safely restartable at any point:
 *
 * FACTORY RESET
 * 1. user selects "factory reset"
 * 2. main system writes "--wipe_data" to /cache/recovery/command
 * 3. main system reboots into recovery
 * 4. get_args() writes BCB with "boot-recovery" and "--wipe_data"
 *    -- after this, rebooting will restart the erase --
 * 5. erase_root() reformats /data
 * 6. erase_root() reformats /cache
 * 7. finish_recovery() erases BCB
 *    -- after this, rebooting will restart the main system --
 * 8. main() calls reboot() to boot main system
 *
 * OTA INSTALL
 * 1. main system downloads OTA package to /cache/some-filename.zip
 * 2. main system writes "--update_package=CACHE:some-filename.zip"
 * 3. main system reboots into recovery
 * 4. get_args() writes BCB with "boot-recovery" and "--update_package=..."
 *    -- after this, rebooting will attempt to reinstall the update --
 * 5. install_package() attempts to install the update
 *    NOTE: the package install must itself be restartable from any point
 * 6. finish_recovery() erases BCB
 *    -- after this, rebooting will (try to) restart the main system --
 * 7. ** if install failed **
 *    7a. prompt_and_wait() shows an error icon and waits for the user
 *    7b; the user reboots (pulling the battery, etc) into the main system
 * 8. main() calls maybe_install_firmware_update()
 *    ** if the update contained radio/hboot firmware **:
 *    8a. m_i_f_u() writes BCB with "boot-recovery" and "--wipe_cache"
 *        -- after this, rebooting will reformat cache & restart main system --
 *    8b. m_i_f_u() writes firmware image into raw cache partition
 *    8c. m_i_f_u() writes BCB with "update-radio/hboot" and "--wipe_cache"
 *        -- after this, rebooting will attempt to reinstall firmware --
 *    8d. bootloader tries to flash firmware
 *    8e. bootloader writes BCB with "boot-recovery" (keeping "--wipe_cache")
 *        -- after this, rebooting will reformat cache & restart main system --
 *    8f. erase_root() reformats /cache
 *    8g. finish_recovery() erases BCB
 *        -- after this, rebooting will (try to) restart the main system --
 * 9. main() calls reboot() to boot main system
 *
 * ENCRYPTED FILE SYSTEMS ENABLE/DISABLE
 * 1. user selects "enable encrypted file systems"
 * 2. main system writes "--set_encrypted_filesystem=on|off" to
 *    /cache/recovery/command
 * 3. main system reboots into recovery
 * 4. get_args() writes BCB with "boot-recovery" and
 *    "--set_encrypted_filesystems=on|off"
 *    -- after this, rebooting will restart the transition --
 * 5. read_encrypted_fs_info() retrieves encrypted file systems settings from /data
 *    Settings include: property to specify the Encrypted FS istatus and
 *    FS encryption key if enabled (not yet implemented)
 * 6. erase_root() reformats /data
 * 7. erase_root() reformats /cache
 * 8. restore_encrypted_fs_info() writes required encrypted file systems settings to /data
 *    Settings include: property to specify the Encrypted FS status and
 *    FS encryption key if enabled (not yet implemented)
 * 9. finish_recovery() erases BCB
 *    -- after this, rebooting will restart the main system --
 * 10. main() calls reboot() to boot main system
 */

分享到:
评论

相关推荐

    recovery 刷机工具

    本篇将详细介绍recovery刷机工具的原理、用途以及如何使用它来root手机和刷入新的recovery。 一、recovery的定义与功能 1. 定义:recovery是Android操作系统中的一个独立部分,不依赖于主系统运行。当设备启动时,...

    android_recovery_介绍,just mark

    在本文中,我们将深入探讨Android Recovery的工作原理、功能以及如何利用它来提升Android设备的管理和维护能力。 Android Recovery的核心功能包括: 1. **系统升级**:当新的系统更新可用时,Recovery可以执行OTA...

    ubuntu下recovery.img打包解包工具

    在Ubuntu操作系统中,对Android设备的`recovery.img`文件进行打包和解包是一项常见的任务,这主要涉及到Android系统的定制和刷机过程。`recovery.img`是Android系统中的一个关键部分,它负责在设备启动时执行恢复...

    RECOVERY文件

    这个过程通常需要对Android系统的内部工作原理有一定的了解,并且需要谨慎操作,因为错误的操作可能导致设备变砖。 首先,让我们了解什么是RECOVERY。RECOVERY是Android系统中的一个独立运行环境,它不在常规的用户...

    34-002-T-九联unt401h-MV310强刷版本2 附刷机教程说明 当贝桌面纯净版

    总的来说,刷机是一项涉及硬件、软件和操作技巧的综合性任务,需要对设备的内部工作原理有一定的理解,并且具备一定的技术基础。在进行刷机操作时,必须仔细阅读教程,遵循安全步骤,同时要有耐心和解决问题的能力。

    twrp 3.1.1.2recovery源码

    源码是软件开发的核心,对于TWRP 3.1.1.2源码的分析可以帮助开发者理解其内部工作原理,进行二次开发或者为特定设备适配。源码通常包含编译脚本、C++代码、资源文件等,开发者可以在这个基础上修改、优化以满足不同...

    一键刷回官版(3.11)Recovery.rar

    通过"一键刷回"工具,用户无需深入了解Android系统的底层工作原理,只需按照指示进行,就能轻松完成系统恢复,从而享受官方稳定版带来的流畅体验。然而,对于不熟悉这一过程的用户来说,寻求专业指导或在有经验的...

    联想K860 SZB刷机包格式封包工具源码

    5. 手机刷机原理,包括分区管理、文件系统和权限控制。 6. 源代码阅读和理解,以及可能的代码修改和定制。 通过深入学习和实践,用户不仅可以掌握刷机包的制作,还能提升对移动设备系统和编程技术的理解。

    android源码开发实战8.02.zip

    在Android源码开发实战8.02的课程中,我们将深入探索Android操作系统的内部机制,了解并实践如何基于源码进行应用开发。这个压缩包包含了8.02版的资料,是针对Android Oreo(API级别26)的深度学习资源。通过这个...

    huaweiEC6108

    在提供的文件名称列表中,我们可以看到一些关键的系统文件,这些文件对于理解华为悦盒EC6108V9的内部工作原理至关重要: 1. **file_contexts**:这是一个在Linux系统中用于定义文件安全上下文的文件,通常在Android...

    制作ROM教程编译篇.doc

    【制作ROM教程编译篇】 制作手机ROM,即刷机包,是许多手机爱好者和开发者热衷的...在这个过程中,你不仅会掌握Android系统的工作原理,还能提升你的编程和调试技巧。如果你对此感兴趣,那么开始你的ROM制作之旅吧!

    手机的分区信息详解.pdf

    《手机的分区信息详解》 ...每个分区都有其特定的功能,理解这些分区的工作原理对于进行系统级别的操作,如刷机、优化性能、故障排查等至关重要。正确理解和操作这些分区,可以提升手机的使用体验和安全性。

    InstallOTA

    总的来说,实现Android OTA升级需要对Android系统的内部工作原理有深入理解,包括分区结构、签名机制、恢复系统以及相关的编程接口。在实践中,你可能还需要考虑如何处理错误情况、回滚机制以及用户通知等问题,以...

    img文件浏览器 修改IMG文件

    标题中的“img文件浏览器 修改IMG文件”指的是一个专门设计用于浏览和编辑IMG文件的应用程序...通过这个工具,用户可以深入学习Android系统的工作原理,提升自己的技能,并且在安全范围内自由地优化和定制自己的设备。

    SP_Flash_Tool_src_5.1844源代码C

    源代码是软件开发的基础,对于SP_Flash_Tool而言,了解其内部工作原理和功能实现机制至关重要。这个版本的源代码包含C语言编写的模块,它涉及到了与MTK芯片通信、固件解析、数据校验、加载和烧录等多个关键环节。...

    安卓系统平板电脑名词解释.docx

    了解这些安卓平板电脑的名词解释,用户可以更深入地了解其工作原理,更好地利用设备的各项功能,并在必要时自行进行系统维护和升级。然而,对于不熟悉这些概念的用户,建议在专业人士指导下进行操作,以避免可能的...

    G7 home键点亮

    这通常涉及到刷入第三方ROM或模块,这是一种高级的安卓用户操作,需要对手机的内部工作原理有一定了解,并且有可能会失去官方保修。 "刷ROM包"是安卓社区中常见的术语,指的是替换手机原始的系统镜像,以安装具有...

    BQ_TWRP_9.0_ENCRYPT:TWRP中的工厂加密

    这种加密方式通常基于Android的全盘加密(Full Disk Encryption, FDE)原理,但可能针对TWRP进行了定制优化,以满足用户在刷机和自定义系统时的特殊需求。 标签 "Makefile" 暗示了这个项目使用Makefile来构建和编译...

Global site tag (gtag.js) - Google Analytics