• [Android] 以HTC Wildfire为例讲解Android的几种启动模式

    日期:2010-10-09 | 分类:Android | Tags:

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://anriqing.blogbus.com/logs/77409931.html

    Note: 以下内容是我自己的学习、理解,如果您有不同看法,欢迎批评指正。

     

    根据我对Android的理解,Android系统大致支持这几种启动模式:Normal, Bootloader, Fastboot, Recovery, Factory(其中Bootloader和Fastboot也可以归为一类),这些命名是我自己根据实际情况起的名字。这里先简单介绍一下这几种模式:

    1. Normal: 即正常启动到OS的模式,对于不同的Android设备来说,一般都是按下电源键开机即可。

    2. Bootloader: 即启动到Bootloader。对于Linux来说,目前最常见的Bootloader是GRUB,对Android OS来说,常见的Bootloader是uBoot,不过不同的公司会使用自己的Bootloader,比如HTC的Bootloader是HBoot。另外,Bootloader一般会分为两阶段,IPL(Initial Program Loader)和SPL(Second Program Loader)。

    3. Fastboot: Fastboot是SPL的一项特殊功能,即可以通过USB将Android设备与Windows/Linux主机连接起来,然后通过Android SDK的tools目录下的工具Fastboot来对Android设备进行一些操作,比如清除userdata分区(挂载点为/data),cache分区(挂载点为/data),甚至是boot分区和system分区(挂载点为/system),flash update.zip更新文件和一些.img文件。不过一般来说,即使支持Fastboot的Android设备,Fastboot默认也是被锁住的。

    4. Recovery: 即启动到恢复模式,进入Recovery模式可以进行恢复出厂设置(所作操作为format /data和/cache两个分区),执行更新update.zip(一般可以更新Bootloader/boot/Recovery/system这四种image)。

    5. Factory: 即进入工厂恢复模式,该模式一般用于重烧整个ROM上的image。

     

    我自己的手机是HTC Wildfire(野火),所以下面我会以HTC Wildfire为例来讲解这几种启动模式,下面先看一下HTC Wildfire的相关实体键:

    HTC Wildfire机身上有4个键,分别为电源键,音量调大键, 音量调小键以及光学键(也有人称轨迹球,拍照键)。

     

    下面讲解HTC Wildfire如何进入不同启动模式(其它Android设备请自行摸索或者Google):

    1. Normal:

    HTC Wildfire按一下电源键即可正常开机。

    这里也提一下重启的方法:Wildfire同时按下电源键+音量调小键+光学键可以重启。

    另外,在Windows/Linux下,也可以借助Android SDK的tools目录下的工具adb来操作让Android设备重启,具体命令为”adb reboot”。

     

    2. Bootloader:

    HTC Wildfire同时按下电源键+音量调小键开机即可进入Bootloader。下图为HTC Wildfire进入Bootloader后的画面,在该模式下,电源键相当于选择键,音量调大键相当于向上选择,音量调小键相当于向下选择。

    另外,在Windows/Linux下,也可以借助Android SDK的tools目录下的工具adb来操作让Android设备进入Bootloader,具体命令为”adb reboot Bootloader”。但是,HTC Wildfire实际进入的是Fastboot。

     

    3. Fastboot:

    HTC Wildfire同时按下电源键+光学键开机即可进入Fastboot。下图为HTC Wildfire进入Fastboot后的画面,在该模式下,电源键相当于选择键,音量调大键相当于向上选择,音量调小键相当于向下选择。第一行的”S-ON”代表security-on,也就是Fastboot被锁住了。

     

    4. Recovery:

    HTC Wildfire进入Bootloader后,按音量调小键向下选择”Recovery”,然后按下电源键即可进入Recovery模式。下图为HTC Wildfire进入Recovery模式的画面(已经root过,不是Wildfire进入Recovery模式的默认画面了),在该模式下,电源键相当于返回键,音量调大键相当于向上选择,音量调小键相当于向下选择,光学键相当于确认。

    另外,在Windows/Linux下,也可以借助Android SDK的tools目录下的工具adb来操作让Android设备进入Bootloader,具体命令为”adb reboot Recovery”。

    再另外,在Recovery模式下,ClockworkMod的Recovery image可以使用adb,应该是该image内置了adbd。

     

    5. Factory:

    HTC Wildfire同时按下电源键+音量调大键即可进入工厂模式。进入该模式后,初始是黑屏的。

    Ps:Wildfire的这种模式是否就是工厂模式,目前我还有得到确认。不过有一个很有意思的实验,将HTC Wildfire通过USB数据线跟Linux系统连接起来,然后在终端下使用”lsusb”命令来查看系统所认到的设备,USB设备都会有对应的Vendor ID和Device ID,分别指示设备制造商和设备ID。”lsusb”的结果就会显示这两组ID。将HTC Wildfire分别开启到这几种不同的模式,再来通过”lsusb”命令来查看这两组ID时,我们会看到以下结果:

    a. Normal: 0BB4:0C8B

    b. Bootloader: 0BB4:0C94

    c. Fastboot: 0BB4:0FFF

    d. Recovery: 0BB4:0C8B

    e. Factory: 05c6:9002

    可以看到,前四种模式下的Vendor ID都是0BB4,而第五种模式下确实05c6,这很有趣。事实上,0BB4是HTC的USB设备Vendor ID,而05c6则是Qualcomm的USB设备Vendor ID(可以从文末我给的链接去证实),而HTC Wildfire采用的就是Qualcomm的芯片。所以根据硬件ID信息我推测这第五种模式应该是工厂模式,用于重烧整个ROM上的image。

     

    相关链接如下:

    1. SPL: http://code.google.com/p/android-roms/wiki/SPL

    2. Fastboot: http://wiki.cyanogenmod.com/index.php?title=Fastboot

    3. USB ID查询:http://www.linux-usb.org/usb.ids


    收藏到:Del.icio.us