理论上,所有的Android设备都存在着Fastboot/Bootloader模式,不过,由于Android操作系统的开源特性,各厂商的对 自家的相关Android设备都有着各自不同的Fastboot/Bootlader模式。当然,并非所有的厂商的都会对旗下设备的Fastboot /Bootloader模式进行锁定。然而,大多数情况下,它们的Fastboot/Bootloader模式是锁定的。但是,值得称道的是,现在越来越多的厂商已渐渐向开发的Fastboot/Bootloader模式过渡,如HTC(HTC官方旗舰店)、Sony Ericsson(索尼爱立信官方旗舰店)等。因为它们虽然仍对新发布的设备锁了Fastboot/Bootloader模式,但它们已于官方发布了解锁旗下设备的Fastboot/Bootloader模式的教程与相关应用或工具。
那么,Fastboot/Bootloader模式是什么呢?从字面上来说,Fastboot/Bootloader是代码,其为引导程序的含义。它在任何的操作系统开始运行之前执行。Fastboot /Bootloader的概念是普遍性的,实际上,它适用于包括PC(Personal Computer)即个人电脑、轻便性电脑、智能手机、平板电脑或其他相关设备的所有的操作系统。Fastboot/Bootloader基本的作用为加 载操作系统的内核与大多数的调试或修改环境模式。在你的设备中,Bootloader引导程序在任何的应用程序启动之前启动。它是一个特别的单元,每一个 主板上都有着各自的Bootloader。对于众多的Android设备而言,它们的处理硬件有着很大的不同,由于Android的开源,各厂商都开发着 各自的Bootloader引导程序,因此它们各自有着不同的第三方自定义的系统Rom固件。这一点,在Apple的iOS设备上不曾见到,因为统一的硬件与软件每一个Android设备有着一个Fastboot/Bootloader模式,它们引导着操作系统的核心的正常启动。但是,我们需要知道的 是,Android操作系统是一个开源的平台,它们的硬件平台有很大的不同,对于硬件运行环境上,每一个制造厂商有着它们自己的 Fastboot/Bootloader模式。 比如,Motorola(摩托罗拉官方旗舰店)在旗下Android设备中加载着“eFuse”的指令,当你并没有进行过任何的解锁Fastboot/Bootloader模式而试图升级或安装或更新一个自定义的系统Rom固件时,它可能会损坏你的Motorola Android设备
然而,为什么Bootloader有锁呢?关于这个问题,其实是很好理解的,尽管Android操作系统是一个开源的平台,但每一个制造厂商都想有着绝对的控制权,为了与其他厂商有着区别, 它们各自都会定制自家的用户界面、应用、引导程序等等。基于Bootloader引导程序有锁的原因,我们很大部分不可能可以直接的升级或安装或更新一个 自定义的系统Rom固件,因为设备不能引导。这是需要相当注意的,否则极易损坏设备。想必,为什么要解锁Fastboot/Bootloader模式?这个疑问,已很简单了吧。你想ROOT你的设备,你想要一个自定义的系统Rom固件,你想要一个更加好用的第三方ROM固件等等。这些首先要有一个可以随意引导的程序,即自由的或称之为无锁的Fastboot/Bootloader模式我们需要注意的一些问题:1、解锁Fastboot/Bootloader模式时,可能会使保修相关服务失效2、在解锁Bootloader的过程中,可能会使设备恢复到出厂设备,即会移除包括设备内置存储中的应用程序、联系人、信息等等重要资料,请先作好备份3、在解锁Bootloader的过程中,可能会损坏设备
对于一个android手机用户加软件工程师,刷机而不知道它的内部原理,那是很痛苦的。本着学习的心态,还是去研究了一番。
首先,你要知道智能手机就是一台小电脑,如果你恰好用的是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是一个小型操作系统并且有手机这样现成的设备,我们可以基于它做些有趣的事,比如移植网络协议及无线网络连接逻辑,然后开发一个命令行版的新浪微博客户端,这样就可以用自己改造的系统发微博了。当然,先改一个hello world版的recovery再说。也许还可以基于这些实践写一些帮助学习操作系统的教程。
Recovery 本身的本质也是一个简单Linux加一个Google 开发简单图形界面。它跟你在用的内核的boot.img分区的格式是完全一样的。他的作用在于当你的产品里的内核有问题时,你可以切换到Recoverty这个小操作系统里用工具重新下载内核。因此如果打比方的话,象PC机的可引导的U盘修复盘。
因为Recovery本身功能比较单一,所以一般直接用Google的开发那个,但是也有著名的ROM组CM开发的Recovery,界面更为友好。 Recovery刷机包是称为Google Update 格式。在用Recovery恢复时,刷机包通常放在SD卡里,所以这里刷机一般称为卡刷。这种方法的优点就是不需要PC机即可以完成刷机。fastboot 主要是用来与bootloader的USB通讯的PC命令行工具。他一般主要也用来向bootloader传送刷机文件进行文件分区重烧。 因此在使用时,必须有一个PC机并且USB线要始终联着。所以这种方式称为线刷。 用fastboot需要bootloader 支持,所以不是每一家公司产品都支的这个功能的。recovery过程主要有两个作用 :factory reset 和 OTA install。一般Android系统都有两个分区 /boot /recovery。这两个分区都可以引导系统。recovery mode从本质上来看就像是一个袖珍版的Linux。Android的上层结构(虚拟机)可以调用一个特定的类( RecoverySystem ) 来写入命令参数以提供重启之后recovery模式所必需的命令参数。
简而言之,recovery模式其实方便了开发者升级系统和擦除相应的分区( /data和/cache )。在手机方面,这个功能可以体现在刷机的过程上。不过,对于一般用户来说,这个recovery mode对于开发者意义更大。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、传输速率以及屏幕显示效果等进行测试。进入方式因手机厂商设置不同而不同,一般是在拨号界面输入一定的数字符号。
特殊模式说明
Downloading模式(俗称挖煤模式)
三星安卓手机刷官方系统时使用该模式,配合电脑端odin软件进行。当两者配合使用时可对手机系统分区、内核、recovery等进行刷写。一般进入方法为音量键下+HOME键+开机键。
FTM模式(工厂测试模式)
该模式对用户而言一般可用来刷机,当然部分机型需要配合电脑端RSD软件进行,但该模式相对不稳定,因此建议用户使用recovery模式进行刷机。进入方法一般为音量键下+开机键直至出现FTM字样即可。
T卡模式
中兴手机刷官方系统使用的模式。一般将系统image文件夹(文件夹内需要有image.bin文件)拷贝至SD卡中并将SD卡插入手机,手机关机状态下进入T卡模式即可自动识别到系统文件并自动进行刷入。一般进入方式为音量键上+开机键+返回键。
SD卡升级模式
该模式为华为刷官方系统时使用。一般将dload文件夹拷贝至SD卡中并将SD卡插入手机,手机关机状态下,同时按住音量键上+音量键下+开机键,即可自动刷入。
PS:当手机识别不到SD卡时,该模式会显示粉屏,俗称“粉屏模式”。
AP模式(或BP模式)
该模式存在于部分机型中,如moto defy等,其作用等同于fastboot模式,都需要配合电脑端软件进行刷机操作