android刷机工具 原理,Android刷机原理之recovery内部工作原理

本文详细解析了Android系统的Recovery模式,涉及刷机流程、常用命令如数据擦除、包安装及加密文件系统设置。重点介绍了Factory Reset、OTA更新和加密FS操作的交互过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值