首页 > 其他分享 >FastBoot BootLoader Recovery 模式学习

FastBoot BootLoader Recovery 模式学习

时间:2022-12-07 13:35:55浏览次数:47  
标签:BootLoader Recovery FastBoot fastboot 模式 mode Android bootloader recovery

概念简单介绍

fastboot 是一种协议,是一种通过USB连接与bootloader通讯的机制。它被设计的非常容易实现,适用于Linux、Windows或者macOS等多种平台。fastboot是Android系统提供的一种较recovery更底层的通过USB更新文件系统的方式。
Android开发包提供了fastboot.exe工具用于与Android系统通信,主要完成分区镜像烧录、分区擦除、设备重启、获取设备状态信息等操作。当需要通过fastboot协议与Android系统交互时,Android系统需要启动到bootloader模式,此时只有最基础的硬件初始化,包括按键、USB、存储系统、显示等模块,以支持分区镜像的写入和系统启动模式的切换。

Bootloader 是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装载到内存中然后跳转到操作系统所在的空间,启动操作系统运行。可以理解为它是一个独立的程序,如同Application程序一样,虽然Bootloader的体量小,但是“五脏俱全”,启动代码、中断、主程序(Boot_main函数)、操作系统(非必须)都有。

Recovery 本身的本质也是一个简单Linux加一个Google 开发简单图形界面。它跟你在用的内核的 boot.img 分区的格式是完全一样的。他的作用在于当你的产品里的内核有问题时;你可以切换到Recoverty这个小操作系统里用工具重新下载内核。因此如果打比方的话,更像PC机的可引导的U盘修复盘。
recovery过程主要有两个作用:factory reset 和 OTA install。一般Android系统都有两个分区 /boot /recovery。这两个分区都可以引导系统。recovery mode从本质上来看就像是一个袖珍版的Linux。Android的上层结构(虚拟机)可以调用一个特定的类( RecoverySystem ) 来写入命令参数以提供重启之后recovery模式所必需的命令参数。简而言之,recovery模式其实方便了开发者升级系统和擦除相应的分区( /data和/cache )。

image

Linux Kernel启动流程

image
A1:上电后执行BootROM代码,探测启动媒介,查找第一阶段的引导加载程序bootloader;
A2:一旦boot媒介顺序确定,Boot ROM会试着装载bootloader的第一阶段到内部RAM中,一旦bootloader就位,BootROM 代码会跳到并执行bootloader; B1:bootloader第一阶段会检测和设置外部 RAM;
B2:一旦外部RAM可用,系统会准备装载主bootloader,把它放到外部RAM 中;
B3:bootloader第二阶段是运行的第一个重要程序,它包含了设置文件系统,内存,网络支持和其他的代码;
B4:一旦bootloader完成这些特殊任务,开始寻找Linux内核,它会从boot媒介上装载 Linux内核,把它放到 RAM 中,同时它也会在内存中为内核替换一些在内核启动时读取的启动参数;
B5:跳到Linux内核。
fastboot就是在bootloader阶段中运行的。进入fastboot模式一般有两种方式,一种是在关机状态通过按键进入,另外一种是在Android系统启动之后通过adb指令进入到bootloader模式。
通过按键方式进入fastboot模式的过程:bootloader完成硬件初始化之后,启动Linux内核时,启动流程会检测按键,如果检测到对应的按键组合则将启动模式设置为fastboot模式。

Android 启动模式

Android系统相对开源,因此允许用户对手机系统进行一定修改即刷机。因此对应不同的功能以及权限,其一般具备6个不同模式,分别为一般启动模式(normal mode)、安全模式(safe mode)、恢复模式(recovery mode)、引导模式(bootloader mode)、fastboot模式和诊断模式(diagnostic mode)

一般启动模式(normal mode)

这个模式的功能是正常启动手机,开启方法为关机状态下按电源键启动。该模式即俗称的开机,进入正常的系统,即用户正常使用手机的系统。

安全模式(safe mode)

此模式和正常启动一样,但没有登记Google,所以不能访问Market或使用你的Google账号。进入方法一般为按住“menu”键,按电源键启动手机,直至手机启动完成松开“menu”键。该系系统因不同厂家设置而不同,进入方法也有所不同。

恢复模式(recovery mode)

该模式下使用音量键上下进行选择,电源键进行确定,当然现在市面上已经出现触摸版的第三方recovery模式,允许用户使用触屏进行操作。该模式具有相对较高的修改权限,可进行打开命令解释程序(shell),刷新映像文件(flash image),执行备份等。该模式可根据用户的需要进行修改,因此有官方recovery模式以及第三方recovery模式。第三方recovery模式可以识别第三方rom包,因此可以用来刷机。而官方recovery一般不能识别第三方zip文件。进入方式一般为就是音量键上+电源键。

引导模式(bootloader mode)

该模式的功能是从SD卡上安装新的系统映像(DREAIMG.NBH),其中包括刷系统以及recovery,具有很高的修改权限。该模式基本每款手机都拥有,但其命名不一定相同。大多数Android手机解锁或获取root权限都使用模式进行。进入方法一般为音量键下+开机键。

fastboot模式(fastboot mode)

该模式主要是在电脑上使用fastboot命令来刷新映像文件,并可以进行清理数据等一定的操作。进入方法一般为按住音量键下+开机键启动手机,直至屏幕出现FASTBOOT字样后松开返回键。

诊断模式(diagnostic mode)

该模式是为了测试手机各项功能的模式,一般在购买新手机时会使用到该模式以便对手机CPU、传输速率以及屏幕显示效果等进行测试。进入方式因手机厂商设置不同而不同,一般是在拨号界面输入一定的数字符号。

标签:BootLoader,Recovery,FastBoot,fastboot,模式,mode,Android,bootloader,recovery
From: https://www.cnblogs.com/cokefentas/p/16962799.html

相关文章

  • 蓝牙AppLoader BootLoader升级指南
    一新旧Bootloader的区别在SiliconLabs的GeckoSDKv4.0版本之前,AppLoader是放在Gecko BootLoader和应用程序App之间的一个独立的程序。在GeckoSDKv4.1中,对于2系列......
  • 自制操作系统 Step 2 —— Bootloader(一)
    部分内容来源于《一个60位操作系统的设计与实现》此博客仅记录学习过程。一、BIOS引导原理BIOS自检结束后会根据启动选项设置选择启动设备,即检测软盘的第0磁头-第......
  • Perturbation-Recovery Method for Recommendation
    目录概符号说明一个基于ODE的统一框架BSPMBSPM-LMBSPM-EM实验ChoiJ.,HongS.,ParkN.andChoS.Perturbation-recoverymethodforrecommendation.arXivprepri......
  • bootloader
    1/*Includes------------------------------------------------------------------*/2#include"main.h"3#include"declare.h"4#include"user_flash.h......
  • 如何修复处于recovery挂起状态的数据库
    检查数据库的状态数据库的状态有:online、offline、restoring、recovering、suspect、emergency、recoverypendingSELECTname,state_descfromsys.databases 可能......
  • window11 fastboot 驱动
     首先一定要安装一下官方的驱动获取GoogleUSB驱动程序 | Android开发者 | AndroidDevelopers这个其实包括adb和boorloader两个驱动。找到自己的设备,如果......
  • 63.innodb_force_recovery 参数
    innodb_force_recovery参数影响了整个innodb_存储引恢复的状况,该参数默认值是0,代表当发生需要恢复时,进行所有的恢复操作,当不能进行有效恢复时,如果数据页发生corruption......
  • bootloader_kernel_根文件系统的编译运行
    bootloader_kernel_������������������������������编译运行bootloader_kernel_根文件系统bootloaderPOST:电脑上电首首先自检(POST=PowerOnSelfTest)。然后加载运行bootloader。MBR分区电脑加载bo......
  • [nrf52][SDK17] 如何使用官方BootLoader
    所需文件已经编译完毕,直接放入指定目录。**\nRF5_SDK_17.0.2_d674dde\external\micro-ecc​​micro-ecc.rar​​BootLoader工程位置xx\nRF5_SDK_17.0.2_d674dde\examples\d......
  • Disaster Recovery and High Availability 101
    标题:DisasterRecoveryandHighAvailability101原文:https://blog.rabbitmq.com/posts/2020/07/disaster-recovery-and-high-availability-101/时间:2020-07-07在这篇......