1.1 Fastboot介绍
Fastboot是host端的工具,用于操作基于Android的target上的flash分区。 Fastboot与target上的bootloader之间使用fastboot protocol进行通讯,host和target之间需要通过USB线连接。Fastboot还可以用位于host上的kernel image和 root filesystem来启动。
Fastboot可以加快开发进度而不是启动速度,之所以能加快开发进度是因为fastboot可以使手动烧写nand的步骤变得自动化。
1.1.1 Fastboot模式
为了使用fastboot,需要把手机重启进入到一个特殊的”fastboot”模式。首先,把手机关机,然后通过按Magic Key来把手机启动到“fastboot”模式,例如在HTC的G1手机需要按”Home” + “Camera”键来启动fastboot模式。Fastboot的启动画面如下图所示。
Fastboot工具是Android的一部分,它会在编译Android的过程中被编译出来。它位于 <android source location>/out/host/{os}_{arch}/bin/fastboot。
1.1.2 Fastboot命令
在host上通过运行fastboot -h可以来了解fastboot所提供的功能。
$ fastboot -h
usage: fastboot [ <option> ] <command>
commands:
update <filename> reflash device from update.zip
flashall flash boot + recovery + system
flash <partition> [ <filename> ] write a file to a flash partition
erase <partition> erase a flash partition
getvar <variable> display a bootloader variable
boot <kernel> [ <ramdisk> ] download and boot kernel
flash:raw boot <kernel> [ <ramdisk> ] create bootimage and flash it
devices list all connected devices
reboot reboot device normally
reboot-bootloader reboot device into bootloader
options:
-w erase userdata and cache
-s <serial number> specify device serial number
-p <product> specify product name
-c <cmdline> override kernel commandline
-i <vendor id> specify a custom USB vendor id
1) 重启G1:
$ fastboot reboot
2) 刷所有分区:以下命令会在当前目录寻找各种所有的image文件,并且在刷完所有分区后重启手机
$ fastboot flashall
3) 刷指定分区:
$ fastboot flash {partition} {file.img}
如:fastboot flash system path-to-system/system.img
4) 擦除分区:
$ fastboot erase {partition}
如:fastboot erase system
5) 刷完整的系统: 创建一个包含boot.img, system.img和recovery.img的zip压缩包,并且运行:
$ fastboot update {update.zip}
6) 刷自定义开机画面:(替代默认的白色"T-Mobile G1"画面):
$ fasboot flash splash1 mysplash.rgb565
注意开机画面文件需要一个特定格式,参考:Custom boot image
*通常需要完全恢复的操作是:
$ fastboot flash boot boot.img
$ fastboot flash system system.img
$ fastboot flash userdata data.img
$ fastboot flash recovery recovery.img
7) 从Host上启动
这个命令需要在Host上提供一个kernel image和一个rootfs image.
fastboot boot <kernel> [ <ramdisk> ]
Ex: fastboot boot linux-2.6/arch/arm/boot/zImage root-image/recovery.img-ramdisk.cpio.gz