现在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刷机工具的原理、用途以及如何使用它来root手机和刷入新的recovery。 一、recovery的定义与功能 1. 定义:recovery是Android操作系统中的一个独立部分,不依赖于主系统运行。当设备启动时,...
在本文中,我们将深入探讨Android Recovery的工作原理、功能以及如何利用它来提升Android设备的管理和维护能力。 Android Recovery的核心功能包括: 1. **系统升级**:当新的系统更新可用时,Recovery可以执行OTA...
在Ubuntu操作系统中,对Android设备的`recovery.img`文件进行打包和解包是一项常见的任务,这主要涉及到Android系统的定制和刷机过程。`recovery.img`是Android系统中的一个关键部分,它负责在设备启动时执行恢复...
这个过程通常需要对Android系统的内部工作原理有一定的了解,并且需要谨慎操作,因为错误的操作可能导致设备变砖。 首先,让我们了解什么是RECOVERY。RECOVERY是Android系统中的一个独立运行环境,它不在常规的用户...
源码是软件开发的核心,对于TWRP 3.1.1.2源码的分析可以帮助开发者理解其内部工作原理,进行二次开发或者为特定设备适配。源码通常包含编译脚本、C++代码、资源文件等,开发者可以在这个基础上修改、优化以满足不同...
总的来说,刷机是一项涉及硬件、软件和操作技巧的综合性任务,需要对设备的内部工作原理有一定的理解,并且具备一定的技术基础。在进行刷机操作时,必须仔细阅读教程,遵循安全步骤,同时要有耐心和解决问题的能力。
通过"一键刷回"工具,用户无需深入了解Android系统的底层工作原理,只需按照指示进行,就能轻松完成系统恢复,从而享受官方稳定版带来的流畅体验。然而,对于不熟悉这一过程的用户来说,寻求专业指导或在有经验的...
5. 手机刷机原理,包括分区管理、文件系统和权限控制。 6. 源代码阅读和理解,以及可能的代码修改和定制。 通过深入学习和实践,用户不仅可以掌握刷机包的制作,还能提升对移动设备系统和编程技术的理解。
在Android源码开发实战8.02的课程中,我们将深入探索Android操作系统的内部机制,了解并实践如何基于源码进行应用开发。这个压缩包包含了8.02版的资料,是针对Android Oreo(API级别26)的深度学习资源。通过这个...
在提供的文件名称列表中,我们可以看到一些关键的系统文件,这些文件对于理解华为悦盒EC6108V9的内部工作原理至关重要: 1. **file_contexts**:这是一个在Linux系统中用于定义文件安全上下文的文件,通常在Android...
【制作ROM教程编译篇】 制作手机ROM,即刷机包,是许多手机爱好者和开发者热衷的...在这个过程中,你不仅会掌握Android系统的工作原理,还能提升你的编程和调试技巧。如果你对此感兴趣,那么开始你的ROM制作之旅吧!
《手机的分区信息详解》 ...每个分区都有其特定的功能,理解这些分区的工作原理对于进行系统级别的操作,如刷机、优化性能、故障排查等至关重要。正确理解和操作这些分区,可以提升手机的使用体验和安全性。
总的来说,实现Android OTA升级需要对Android系统的内部工作原理有深入理解,包括分区结构、签名机制、恢复系统以及相关的编程接口。在实践中,你可能还需要考虑如何处理错误情况、回滚机制以及用户通知等问题,以...
标题中的“img文件浏览器 修改IMG文件”指的是一个专门设计用于浏览和编辑IMG文件的应用程序...通过这个工具,用户可以深入学习Android系统的工作原理,提升自己的技能,并且在安全范围内自由地优化和定制自己的设备。
源代码是软件开发的基础,对于SP_Flash_Tool而言,了解其内部工作原理和功能实现机制至关重要。这个版本的源代码包含C语言编写的模块,它涉及到了与MTK芯片通信、固件解析、数据校验、加载和烧录等多个关键环节。...
了解这些安卓平板电脑的名词解释,用户可以更深入地了解其工作原理,更好地利用设备的各项功能,并在必要时自行进行系统维护和升级。然而,对于不熟悉这些概念的用户,建议在专业人士指导下进行操作,以避免可能的...
这通常涉及到刷入第三方ROM或模块,这是一种高级的安卓用户操作,需要对手机的内部工作原理有一定了解,并且有可能会失去官方保修。 "刷ROM包"是安卓社区中常见的术语,指的是替换手机原始的系统镜像,以安装具有...
这种加密方式通常基于Android的全盘加密(Full Disk Encryption, FDE)原理,但可能针对TWRP进行了定制优化,以满足用户在刷机和自定义系统时的特殊需求。 标签 "Makefile" 暗示了这个项目使用Makefile来构建和编译...