Fastboot,BootLoader,Recovery详解

首先,智能手机就是一台小电脑,如果你恰好用的是linux系统,那可以说两者在系统层面没有区别。因为android就是linux内核外加java虚拟机。当你开机时,机器首先要启动,CPU最先执行的一段程序就是BootLoader,这和电脑上的BIOS是一个玩意儿。它所做的事情就是初始化硬件,CPU时钟之类的,以及加载内核文件。
BootLoader可以分为两个阶段。在阶段一,做了一些初始化,在阶段二,如果发现按键有特殊的组合,比如htc g2是回退键和开机键,就会进入fastboot模式。
这里要说的是,内核还没有加载,所以更谈不上多进程任务调度之类的概念,机器只是在顺序执行一条条的指令。

BootLoader既然要做硬件初始化之类的,必然和硬件相关,所以它的代码并非通用的,不同的硬件需要不同的BootLoader代码,各大厂商可能都有自己的,并且加入开机画面之类的。
最常听说的是uboot和hboot,后者是htc的bootloader。我们常说的刷机,是不会动bootloader的,只会动这之后的系统部分。

再说fastboot,它是bootloader后期进入的一个特殊阶段。可以通过数据线与电脑连接,然后在电脑上执行一些命令,如刷系统镜像到手机上。fastboot可以理解为实现了一个简单的通信协议,接收命令并更新镜像文件,其他什么的干不了。

如果没有进入fastboot,bootloader继续执行,如果又发现有特殊的按键组合,比如htc g2上是home键和开机键,则会进入recovery模式。分析recovery.img镜像文件就会发现,它里面包含了一个kernel以及一个可执行程序recovery,以及一些初始化文件。从某种意义来说,这就是一个小型操作系统,和正常启动进入的系统的kernel是一样的,只是init及之后干的事情不同。这里的kernel和我们常说的linux内核还是有差异的,linux内核是包括kernel以及调度器内存管理等除显示界面外完整系统。而kernel只是指内核init进程启动前的那一段逻辑。

在recovery模式下,会加载了部分文件系统,所以才可以读sdcard中的update.zip进行刷机,当然,也可以清除cache和用户数据。

讲到这里,我想说的是,既然recovery是一个小型操作系统并且有手机这样现成的设备,我们可以基于它做些有趣的事,比如移植网络协议及无线网络连接逻辑,然后开发一个命令行版的新浪微博客户端,这样就可以用自己改造的系统发微博了。

Recovery模式(卡刷)

在系统进行定制时,编译系统会编译出一份ZIP的压缩包,里面是一些系统分区镜像,提供给客户进行手动升级、恢复系统。需要提前将压缩包内置到SDcard,在Recovery模式进行。

进入Recovery方法:将手机完全关机后,按住音量键下(上)+电源键,进入BootLoader界面。用音量加减来控制光标,电源键来进行确认(有的机器只能用音量下键进行选择,上键是确认键)。说明:有的机器可能没有预装Recovery。

Fastboot模式(线刷)

在安卓手机中Fastboot是一种比Recovery更底层的刷机模式,直接使用USB数据线连接手机,打开开发者模式,向手机硬盘写入”.img”镜像文件,这就是所谓的线刷,与Recovery模式相比Fastboot需要掌握一些烧机命令,对于某些系统卡刷来说,线刷更可靠,安全。

Fastboot环境搭建

如下图,进入我们安装的Android SDK目录下就可以看到adb、fastboot的脚本了,也可以先配置环境变量就不用每次这么麻烦。其实很多刷机工具、刷机脚本都是围绕此工具进行刷机的,使用的也就是adb、fastboot命令,只不过别人将各种情况判断写成程序而已。

fastboot具体位置:

Fastboot刷机命令

adb devices                  查看手机是否连接上
adb reboot bootloader     将手机重启到bootloader模式(有些厂商解锁只能在bootloader搞)
fastboot flashing unlock  解锁设备
fastboot reboot fastboot  进入fastboot模式(个别设备厂商只需要这步操作即可解锁设备)
fastboot devices          查看Fastboot模式下连接的手机
fastboot flash system ./TB-Q706F_USR_S100145_2206010003_V5.0_DEV_system.img   某镜像单独刷入安卓系统
fastboot erase userdata  擦除userdata数据
fastboot erase metadata  擦除metadata数据
fastboot reboot    Fastboot模式下重启手机

刷机准备-解锁BootLoader

使用 Fastboot 刷机需要先解锁BootLoader,否则无法刷机。解锁BootLoader的方法是在开发者模式中开起OEM unlocking开关,步骤如下:

(1)进入设置-->关于手机,多次点击版本号,即可打开开发者模式;

(2)进入系统-->开发者选项,打开“使用开发者选项”,打开“USB”调试选项,打开“OEM解锁”,点击启动;

界面图如下:

刷机步骤

1. 进入fastboot模式

开发者模式打开OEM开关后,连接 USB ,有两种方式进入fastboot模式:

(1)第一种方式:手机使用adb reboot fastboot,即可进入如下界面;

在如上图所示的界面中,按音量上下键调节到“Reboot to bootloader”,进入如下界面,显示“FastBoot Mode”,即已进入FastBoot模式

FastBoot能理解为BootLoader的某个选项,两者可以互相切换

fastboot reboot bootloader

bootloader reboot fastboot

(2)第二种方式:手机关机后,长按“音量下键+电源键”,即可进入如上图的fastboot模式;

注意:不论是fastboot flashing unlock解锁还是fastboot flashing lock上锁,都是需要先进入fastboot模式的,否则命令行就会一直处于如下状态:

2. 解锁设备

使用命令fastboot flashing unlock,手机会进入如下界面,按音量下键调节到“UNLOCK THE BOOTLOADER”,如下图第二个选项(红框处,别选错了);

命令行显示解锁完成,如下图:

 3. 刷入分区镜像

以往安卓系统镜像以系统分区化分为了多个:boot.img、system.img、recovery.img等,每个分区镜像单独刷入安卓系统,例如:fastboot flash system system.img;

在Android 10以后,系统分区镜像就合并成了super.img一个镜像包,直接使用

fastboot flash super super.img命令即可,而HMD刷机包中有一个flash_all.sh脚本,直接执行该脚本即可;

4. 设备上锁

刷完之后,重新给设备上锁,命令是:fastboot flashing lock

注意:要执行上述命令,需要先使设备进入fastboot模式,采用步骤1中的方法,此时进入Fastboot模式,设备状态是“unlocked”,即“已解锁”状态,如下图:

在该界面执行完fastboot flashing lock命令后会进入如上右图界面,选择“LOCK THE BOOTLOADER”开始解锁;

5. 退出fastboot

有些测试机执行完上锁操作后,会自动重启;

其他测试机退出fastboot的几种方式:

(1)长按电源键强制关机,重启后即可回到正常开机界面;

(2)使用命令:fastboot continue;

Fastboot刷机相关推荐

  1. android刷机方法,介绍一种android的裸刷机方法(fastboot刷机实质)

    fastboot刷机的前提是你的开发板uboot良好并能正常启动进入fastboot模式,你的开发版的nand分区已存在.对于Android的uboot而言, 已经实现了fastboot命令,当你进入 ...

  2. 玩转Android10源码开发定制(二)刷机操作之fastboot刷机演示

    一.演示软硬件环境 PC配置:Window10 64bit 手机型号:pixel 2 手机代号:walleye 二.配置adb和fasboot  1.从以下地址下载windows系统运行的androi ...

  3. 华为U8220 fastboot刷机

    首先到这里下载手机驱动(http://driver.zol.com.cn/link/40/396540.shtml),接着安装驱动. 确保你有如下分区img文件: 分区                 ...

  4. fastboot刷机方法

    Fastboot刷机步骤: 1.在电脑D盘创建一个fastboot文件夹 2 .然后把fastboot里面的文件解压到 D:\fastboot\(只要里面的四个文件) 3

  5. FastBoot 刷机方法

    极力推荐Android 开发大总结文章:欢迎收藏 程序员Android 力荐 ,Android 开发者需要的必备技能 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...

  6. FastBoot 刷机使用方法

    和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一.Fastboot 简介 二.Fastboot 刷机准备 三.Fastboot 刷机命令 四.其他刷机 ...

  7. 玩转Android10源码开发定制(二)之基于Pixel 3手机超级详细演示fastboot刷机

    玩转Android10源码开发定制(二)之基于Pixel 3手机超级详细演示fastboot刷机 本节主要内容: Pixel 3通过fastboot方式刷入Android 11.0官方工厂镜像 Pix ...

  8. Android fastboot 刷机步骤及解锁

    1.adb reboot bootloader 2.fastboot format cache //清除cache分区 3.fastboot format userdata //清除userdata分 ...

  9. FastBoot 刷机教程

    本篇文章主要介绍 Android 开发中的 FastBoot 部分知识点,通过阅读本篇文章,您将收获以下内容: 一.Fastboot 简介 欢迎关注微信公众号:程序员Android 微信公众号:Pro ...

  10. FASTBOOT刷机的方法

    见好多论坛朋友对FASTBOOT刷机相当困惑和不解,抑或是相当害怕使用fastboot刷机.不管是什么原因,我只需要告诉你,其实用fastboot很简单,也很快捷. 下面把我自己总结的一些方法写出来, ...

最新文章

  1. 2022-2028年中国超韧尼龙行业市场调查分析及未来前景分析报告
  2. Trie(前缀树/字典树)及其应用
  3. linux项目变量存放,linux 堆、栈、全局变量存放
  4. boost::dag_shortest_paths用法的测试程序
  5. RabbitMQ 的安装----windows环境
  6. ffmpeg基础使用
  7. isapi mysql_Windows 2008R2以ISAPI和Fastcgi方式安装配置IIS、PHP、Mysql环境
  8. TortoiseGit客户端安装及使用(上传代码到git@osc
  9. java虚拟机 什么语言_Java虚拟机是用什么语言写的?
  10. Java到底能干什么?有哪些实际用途?
  11. PC式硬盘录像机常见故障剖析,监控卡常见问题(一)
  12. android m3u8 合并,M3u8合并APP
  13. Structure of a Google Docs document 谷歌文档的结构
  14. ESP8266安卓TCP客户端开发(含全部源码)
  15. 【转载】刘未鹏的C++学习历程 + 小诗一首
  16. 综合架构-高可用服务
  17. dst发育筛查有意义吗_Dst发育筛查是什么?
  18. airpodspro窃听模式_AirPods怎么开启助听模式 实时收听设置方法介绍
  19. oracle建表语句设置主键,oracle 表添加主键 primary key
  20. [python]数字金额转换成大写金额

热门文章

  1. 亚马逊服务器实现代理
  2. 常见计算机软件故障有哪些,电脑常见问题有哪些,电脑硬件/软件常见问题及处理方法...
  3. 综合运用(烤地瓜,搬家具)
  4. 微信小程序--图片相关问题合辑
  5. MATLAB Appdesigner开发独立桌面App全流程(三):App的简单美化、打包、安装及卸载
  6. android_iphone和java三个平台一致的加密方法_Android、iPhone和Java三个平台一致的加密工具...
  7. c语言常用延时程序,新手常用单片机延时程序
  8. 思维题 数颜色(洛谷 P3939)
  9. u8g2库中文以及图片的显示入门
  10. 7-1 校园角色类设计-1 / -2 PTA