`
carywei
  • 浏览: 191959 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

recovery代码流程转载

 
阅读更多

===== 应用流程 =====
====>frameworks/base/services/java/com/android/server/MasterClearReceiver.java
RecoverySystem.rebootWipeUserData(context);

====>framesworks/base/core/java/android/os/RecoverySystem.java
rebootWipeUserData ===> bootCommand(context, "--wipe_data");
bootCommand写参数"--wipe_data"到/cache/recovery/command后,
调用pm.reboot("recovery");

====>frameworks/base/core/java/android/os/Power.java
reboot ===> rebootNative

====>frameworks/base/core/jni/android_os_Power.cpp
JNI 映射
{ "rebootNative", "(Ljava/lang/String;)V", (void*)android_os_Power_reboot },
android_os_Power_reboot ===> __reboot

====>bionic/libc/arch-arm/syscalls/__reboot.S
ldr r7, =__NR_reboot  // bionic/libc/include/sys/linux-syscalls.h
b  __set_syscall_errno

#define __NR_reboot  (__NR_SYSCALL_BASE + 88)

===== 内核流程 =====
====>kernel/arch/arm/kernel/calls.S
/* 88 */    CALL(sys_reboot)

====>kernel/sys.c
sys_reboot定义在kernel/include/linux/syscalls.h,实现在kernel/kernel/sys.c

在这里,判断buffer的内容,用一个寄存器记录是否是recovery mode,以便boot loader去查询。
sys_reboot会调用kernel_restart
kernel_restart调用每一个架构特定的machine_restart, 即machine_restart执行每个架构特定的函数

====>kernel/arch/arm/kernel/process.c
machine_restart==>arm_pm_restart==>arm_machine_restart==>arch_reset

====>kernel/arch/arm/mach-tegra/include/mach/system.h
arch_reset

===== bootloader流程 =====
机器重启, 重新进入bootloader。bootloader首先会读寄存器的内容, 根据这个值决定是否进入recovery模式或者其它模式。
bootloader然后加载recovery内核。

===== recovery应用流程 =====
recovery内核中的init.rc会运行recovery

recovery应用会读取cache/recovery/command
读取参数后执行相应操作, 这里参数是--wipe_data, 放在cache/recovery/command里

把DATA和CACHE清空后重启系统,此时内核重启时写的寄存器参数RB_AUTOBOOT跟前面不同的
bionic/libc/include/sys/reboot.h
#define RB_AUTOBOOT     LINUX_REBOOT_CMD_RESTART
不会再让bootloader进入recovery模式,而是正常启动。

分享到:
评论

相关推荐

    android recovery代码分析

    下面是Android Recovery代码的分析。 main函数 main函数是Recovery应用程序的入口点,在gingerbread/bootable/recovery/recovery.c文件中定义。该函数是Recovery应用程序的主函数,当编译Recovery时,会生成一个名...

    android recovery运行流程(基于MTK 8217平台)

    Recovery的启动服务主要代码位于/android4.2.2/bootable/recovery/*目录下的recovery.cpp文件中。这个文件定义了Recovery的主要行为,包括根据cache/recovery/command参数擦除SD卡或cache数据等。而显示UI和画面配置...

    Android刷Recovery

    源码可以在GitHub等开源平台找到,例如AOSP(Android Open Source Project)项目中包含了Recovery的相关代码。 7. 工具介绍: Odin是针对三星设备的刷机工具,支持刷入Recovery、固件等。Fastboot是Android设备的...

    自制recovery简易教程

    以上就是自制recovery的基本流程,虽然这个过程可能有些复杂,但是一旦掌握,将极大地增强你对Android设备的掌控力,让你能更自由地定制和优化你的手机系统。请务必谨慎操作,遵循安全指南,避免不必要的风险。

    recovery刷入中兴v955一键代码刷入

    【标题】"recovery刷入中兴v955一键代码刷入"涉及的主要知识点是Android设备的系统恢复模式(recovery mode)以及如何通过代码和工具进行刷入操作。在Android系统中,recovery模式是一种特殊的系统状态,用户可以在...

    iCare Data Recovery v7.9.2.zip

    iCare Data Recovery是一款国外流行的简单数据恢复软件。它能够恢复已删除的文件、被格式化的文件和分区时损失的文件。对于引导区损坏而导致的数据遗失,也可以通过它找到。恢复被病毒删除的文件,更是不在话下。...

    android recovery原理讲解

    ### Android Recovery原理详解 #### Recovery概述 Android Recovery模式是Android操作系统的一个重要组成部分,主要用于设备的维护、升级以及恢复。此模式允许用户执行一系列高级任务,比如恢复出厂设置、执行OTA...

    Android Recovery介绍

    下面是 Recovery 模式的流程图: [流程图] Li Shaoyan, April 30, 2010.Android Recovery 模式 Recovery 模式是 Android 系统中的一种特殊模式,用于进行恢复出厂设置、OTA 升级、patch 升级及 firmware 升级。...

    EasyRecovery.zip

    无论你是技术小白还是资深电脑用户,都可以通过其直观的界面和清晰的操作流程,快速上手进行文件恢复。 首先,EasyRecovery的核心功能在于其深度扫描能力。它能够深入硬盘的每个角落,寻找被标记为已删除但实际上并...

    android-recovery移植汉化

    获取 Recovery 源代码** - 推荐使用 ClockworkMod (CWM) Recovery,这是一个广泛使用的开源项目。 - 可以通过 CWM 官方网站或 GitHub 获取最新版本的源代码。 **2. 获取设备相关配置文件** - 以 Nexus 7 的 CM...

    华为通用官方recovery恢复教程(同样适用于第三方recovery刷入)

    ### 华为通用官方Recovery恢复教程 #### 一、背景与目的 随着智能手机功能的日益强大,越来越多的用户选择对自己的设备进行Root操作以获得更高级别的系统控制权。然而,在进行Root操作后,可能会导致华为手机的...

    刷入recovery工具

    "刷入recovery工具"是一款专门用于更新或替换手机Recovery的软件,它简化了操作流程,让用户无需专业知识也能完成刷入工作。网络上通常会有详细的图文教程,指导用户一步步进行。 四、刷入步骤概览 1. 准备工作:...

    小米6刷入recovery工具

    在这个过程中,我们看到的"小米6一键刷入recovery(需要先解bl锁).bat"文件是一个批处理脚本,它通常包含了一系列自动化命令,帮助用户简化刷入Recovery的流程。这个脚本可能包含了运行ADB(Android Debug Bridge)和...

    recovery软件

    - **recovery.img**:这是具体的recovery镜像文件,包含了recovery系统的代码和数据,通过刷入此文件到设备的特定分区,实现更换或升级recovery。 6. **刷入流程**:通常包括解锁设备Bootloader、安装驱动、运行刷...

    小米助手(刷Recovery工具及小米5recovery.img)最新官方版

    Recovery.img是一个镜像文件,包含了Recovery系统的完整代码和功能。通过这个工具,用户可以安装第三方Recovery,比如TWRP或CWM,从而实现更多的自定义选项,如安装非官方ROM、备份和恢复系统等。 "高通机型线刷...

    Z5 mini 中文recovery

    "Z5 mini 中文recovery" 是针对中兴努比亚Z5 mini智能手机的一个特殊系统恢复环境,通常称为中文版的Recovery Mode。Recovery Mode是一种特殊的系统状态,用户可以在其中执行一系列高级操作,如安装更新、备份数据、...

    Recovery解包打包工具_mkboot

    在IT行业中,Recovery是一种特殊的系统模式,用于修复、备份或恢复手机系统。"Recovery解包打包工具_mkboot"是专为一加社区设计的一款工具,它主要用于处理与一加设备Recovery相关的操作,包括对Recovery映像的解包...

    小米2a秋大最新recovery

    Recovery.img文件是Recovery模式的核心,它包含了运行Recovery环境所需的所有代码和资源。当你下载并安装了“小米2A秋大最新Recovery”,实际上就是在替换手机原有的Recovery系统,以获得更强大的功能。这个Recovery...

    如何进入Recovery模式

    安卓手机Recovery模式详解 Recovery模式可以说是安卓手机的高级模式,其功能相当强大。在安卓手机无法格式化SD卡的情况下,进入Recovery模式即可轻松格式化SD卡。另外,再刷机、双wipe等方面均需要进入到该模式下...

    Excel Password Recovery 含sn

    4. 用户友好:界面简洁,操作流程直观,适合各种用户群体。 四、使用Excel Password Recovery的步骤 1. 下载并安装“Excel Password Recovery”软件。 2. 打开软件,选择待恢复的Excel文件。 3. 选择合适的恢复...

Global site tag (gtag.js) - Google Analytics