=============================================
恢复出厂设置流程概括:
一. 设置模块中进行恢复出厂设置操作,系统一共做了两件事:
1. 往 /cache/recovery/command 文件中写入命令字段:
2. 重启系统
二. 重启系统会必须进入 recovery 模式
进入 recovery 模式的几种方式
1. 通过读取 /cache 分区中文件 /cache/recovery/command 内容进入
2. 通过按键操作进入 (G1 通过同时按 HOME 和 挂断键)
以上两种方式进入都需要 blob的支持
三. 所以恢复出厂设置,进入 recovery 模式,必须做以下几件事情:
1. blob 必须能从 recovery 分区中装载内核和文件系统
2. flash 必须有 cache 分区 和 recovery 分区
3. 必须编译提供 recovery.img 烧录到 recovery 分区
recovery.img 解析:
1. 理解 recovery.img
在制作 recovery 镜像之前,我们必须理解什么是 recovery 以及 它有哪些内容,这里省略,文章:
<<recovery.img与boot.img简单对比分析>> 对 recovery 做了很好的解释,地址:
http://www.hiapk.com/bbs/thread-6391-1-1.html
2. 制作 recovery.img
因为在文件: ./vendor/marvell/littleton/BoardConfig.mk 中有:
TARGET_NO_KERNEL := true
导致我们目前在编译 cupcake 的时候,默认没有生成 recovery.img,
要生成 recovery.img 必须屏蔽 TARGET_NO_KERNEL := true
创建目录: vendor/marvell/littleton/recovery/res
拷贝编译好的内核到目录:vendor/marvell/littleton
cp /tftpboot/zImage20100202 vendor/marvell/littleton/kernel
如果不创建res目录和拷贝内核将会出现以下错误:
No private recovery resources for TARGET_DEVICE littleton
make: *** 没有规则可以创建“out/target/product/littleton/kernel”需要的目标“vendor/marvell/littleton/kernel”
命令: make recoveryimage 单独生成 recovery.img
out/host/linux-x86/bin/mkbootimg --kernel out/target/product/littleton/kernel //
--ramdisk out/target/product/littleton/ramdisk-recovery.img //
--output out/target/product/littleton/recovery.img
恢复出厂设置,内核相关部分:
2009年 12 月23 日falsh 分区情况
0x00000000-0x00100000 : /"Bootloader/" --1M
0x00100000-0x00500000 : /"Kernel/" --4M 0x400000
0x00500000-0x06500000 : /"system/" --96M 0x6000000
0x06500000-0x09500000 : /"userdata/" --48M 0x3000000
0x09500000-0x0f500000 : /"systembackup/" --96M
0x0f500000-0x0fd00000 : /"massstorage/" --8M
0x0fd00000-0x0ff00000 : /"massstorage2/" --2M
0x0ff00000-0x10000000 : /"massstorage3/" --1M
在目前的内核中我们还没有使用 cache 分区 和 recovery 分区,所以修改内核配置文件:
arch/arm/mach-pxa/include/mach/part_table.h
把以下分区:
0x09500000-0x0f500000 : /"systembackup/" --96M
0x0f500000-0x0fd00000 : /"massstorage/" --8M
改为:
0x09500000-0x0f500000 : /"cache/" --96M
0x0f500000-0x0fd00000 : /"recovery/" --8M
让 android 系统能正常挂载和使用 cache recovery 分区。
烧写编译好的 recovery.img 到 recovery 分区;
烧写地址已经更新,具体参考文件:
http://192.168.2.148/smartphone/td0901/release/images/readme.txt
=====================================
烧写 cache 分区
nanderase -z 0x09500000 0x6000000
tftp recovery.img
nandwrite -y 0x80800000 0x09500000 <cache.img actual length>
烧写 recovery 分区
nanderase -z 0xf500000 0x800000
tftp recovery.img
nandwrite -y 0x80800000 0xf500000 <recovery.img actual length>
======================================
恢复模式流程分析
完成了以上准备工作,当我们按特定的组合键或者恢复出厂设置,那么就会进入 recovery 模式:
从 recovery 模式的 init.rc 文件可以看出,它仅仅启动了几个服务
service recovery /sbin/recovery
service adbd /sbin/adbd recovery
以下是 recovery 流程分析,主函数在文件:
bootable/recovery/recovery.c
int main(int argc, char **argv)
...
ui_init(); //初始化ui
get_args(&argc, &argv);
...
void ui_init(void)
{
gr_init();
ev_init();
...
pthread_create(&t, NULL, progress_thread, NULL);
pthread_create(&t, NULL, input_thread, NULL);
}
recovery 模式有简单的交互式界面,它是通过 ui_init(),ev_init()等一些列操作,
完成字符ui界面和按键事件等初始化。input_thread 线程里面处理按键事件。
函数 get_args 会读取 /cache/recovery/command 文件,并根据命令字段进行相应操作,
因为进行恢复出厂设置的时候 /cache/recovery/command 的内容为 --wipe-data
所以它会擦除 data 和 cache 分区:
erase_root(/"DATA:/")
erase_root(/"CACHE:/")
分区擦除后,系统重启,然后进入正常开机流程,重新使用 system 分区的内容完成开机初始化,此过程
跟我们第一次烧写软件过程一致。
如果是按 home 键 和 挂机键开机,那么进入 字符选择界面,函数为:
static void prompt_and_wait()
{
char** headers = prepend_title(MENU_HEADERS);
for (;;) {
finish_recovery(NULL);
ui_reset_progress();
int chosen_item = get_menu_selection(headers, MENU_ITEMS, 0);
// device-specific code may take some action here. It may
// return one of the core actions handled in the switch
// statement below.
chosen_item = device_perform_action(chosen_item);
switch (chosen_item) {
case ITEM_REBOOT:
//系统重启
return;
case ITEM_WIPE_DATA:
//擦除数据分区
break;
case ITEM_WIPE_CACHE:
//擦除 cache 分区
break;
case ITEM_APPLY_SDCARD:
//通过防止 update.zip 包到 sdcard 根目录实现系统升级
break;
}
}
}
======================================
分享到:
相关推荐
Android Recovery运行流程主要涉及系统恢复、更新等功能的执行,它是基于Android系统的紧急恢复程序。MTK(MediaTek)是智能手机和移动设备常用的芯片解决方案提供商,而8217平台则是其产品线中的一款芯片。Recovery...
### Android Recovery原理详解 #### Recovery概述 Android Recovery模式是Android操作系统的一个重要组成部分,主要用于设备的维护、升级以及恢复。此模式允许用户执行一系列高级任务,比如恢复出厂设置、执行OTA...
无论你是技术小白还是资深电脑用户,都可以通过其直观的界面和清晰的操作流程,快速上手进行文件恢复。 首先,EasyRecovery的核心功能在于其深度扫描能力。它能够深入硬盘的每个角落,寻找被标记为已删除但实际上并...
### 华为通用官方Recovery恢复教程 #### 一、背景与目的 随着智能手机功能的日益强大,越来越多的用户选择对自己的设备进行Root操作以获得更高级别的系统控制权。然而,在进行Root操作后,可能会导致华为手机的...
"刷入recovery工具"是一款专门用于更新或替换手机Recovery的软件,它简化了操作流程,让用户无需专业知识也能完成刷入工作。网络上通常会有详细的图文教程,指导用户一步步进行。 四、刷入步骤概览 1. 准备工作:...
以上就是自制recovery的基本流程,虽然这个过程可能有些复杂,但是一旦掌握,将极大地增强你对Android设备的掌控力,让你能更自由地定制和优化你的手机系统。请务必谨慎操作,遵循安全指南,避免不必要的风险。
在IT行业中,Recovery是一种特殊的系统模式,用于修复、备份或恢复手机系统。"Recovery解包打包工具_mkboot"是专为一加社区设计的一款工具,它主要用于处理与一加设备Recovery相关的操作,包括对Recovery映像的解包...
"Z5 mini 中文recovery" 是针对中兴努比亚Z5 mini智能手机的一个特殊系统恢复环境,通常称为中文版的Recovery Mode。Recovery Mode是一种特殊的系统状态,用户可以在其中执行一系列高级操作,如安装更新、备份数据、...
在这个过程中,我们看到的"小米6一键刷入recovery(需要先解bl锁).bat"文件是一个批处理脚本,它通常包含了一系列自动化命令,帮助用户简化刷入Recovery的流程。这个脚本可能包含了运行ADB(Android Debug Bridge)和...
4. 用户友好:界面简洁,操作流程直观,适合各种用户群体。 四、使用Excel Password Recovery的步骤 1. 下载并安装“Excel Password Recovery”软件。 2. 打开软件,选择待恢复的Excel文件。 3. 选择合适的恢复...
安卓手机Recovery模式详解 Recovery模式可以说是安卓手机的高级模式,其功能相当强大。在安卓手机无法格式化SD卡的情况下,进入Recovery模式即可轻松格式化SD卡。另外,再刷机、双wipe等方面均需要进入到该模式下...
下面是 Recovery 模式的流程图: [流程图] Li Shaoyan, April 30, 2010.Android Recovery 模式 Recovery 模式是 Android 系统中的一种特殊模式,用于进行恢复出厂设置、OTA 升级、patch 升级及 firmware 升级。...
- **操作流程**:刷入Recovery通常需要进入手机的Fastboot模式,使用USB连接电脑并运行刷入工具。具体步骤应按照工具附带的指南进行,避免误操作。 - **安全检查**:在下载任何工具和ROM包时,务必确保来源可靠,...
EasyRecovery Enterprise就是这样的一款软件,它无需激活或付费,能够直接对已删除的数据进行恢复,大大简化了用户操作流程,降低了数据恢复的门槛。 EasyRecovery是由Ontrack公司开发的一款专业级数据恢复软件,其...
总的来说,"htcg14 recovery"为HTC G14用户提供了一个强大的系统恢复解决方案,尤其适合那些熟悉Android系统和刷机流程的进阶用户。通过自定义Recovery,用户能够更好地管理和维护自己的设备,享受更加个性化的...
在本压缩包中,包含的是小米助手的最新官方版本及相关刷机资源,特别是针对小米5手机的Recovery系统刷新功能。Recovery是Android系统中的一个重要组成部分,它在手机正常启动之外提供了一个安全模式,用于安装更新、...
【华为,荣耀官方recovery1.0】 在智能手机领域,特别是Android系统中,"recovery"是一个非常重要的概念。华为和荣耀作为知名的Android设备制造商,为用户提供了官方的recovery工具,即“华为,荣耀官方recovery1.0...
【红米Note3全网通一键刷入recovery工具】是一个专为红米Note3全网通版设计的软件包,主要用于更换或更新手机的recovery...对于不熟悉Android系统或刷机流程的用户,建议寻求专业人士的帮助或在安全的环境中进行尝试。
在安卓系统中,Recovery模式是一个非常重要的工具,它允许用户执行系统级别的操作,如备份、恢复、安装更新以及修复手机。这篇详细的文章将深入探讨Recovery模式的概念、功能、如何进入以及如何利用它来优化你的安卓...
小米8 Recovery工具是一款专为小米8手机设计的实用软件,旨在帮助用户轻松刷入第三方Recovery系统。Recovery是Android设备中的一个重要组成部分,它在系统启动时提供了一个特殊的环境,用于执行更新、备份、恢复数据...