4、Fastboot常用命令:fastboot devices、fastboot reboot、fastboot flash、fastboot erase、fastboot boot
好,咱们进入正题。Fastboot 这工具,说白了你得跟它「对话」。怎么对话?就是靠这几个核心命令。我当年刚接触时,记了一堆命令,后来发现真正天天用的,翻来覆去就这五六个。
今天我把最常用的五个命令掰开揉碎讲给你听。你把这几个玩熟了,刷机、救砖、调试基本就够用了。
4.1 fastboot devices:先看看设备在不在
这是最基础的一步。你连上手机,敲什么命令之前,都得先确认设备是否被识别。
fastboot devices
如果设备正常,你会看到类似这样的输出:
ABCDEF12345678 fastboot
前面那串是设备的序列号,后面跟着状态。如果啥都没显示,或者显示 waiting for any device,那说明驱动没装好,或者线有问题。
fastboot devices。确认设备在线了,再干下一步。别问我为什么——有一次我直接刷分区,刷到一半才发现设备早断了,差点变砖。
另外,如果你插了多个设备,这个命令会把所有在 fastboot 模式下的设备都列出来。你可以用 -s 参数指定操作哪个:
fastboot -s ABCDEF12345678 flash boot boot.img
4.2 fastboot reboot:重启,但不止一种方式
刷完东西,总得重启吧?最简单的:
fastboot reboot
这会让设备正常重启到系统。但有时候你想重启到别的模式,比如:
- 重启到 bootloader:
fastboot reboot-bootloader - 重启到 recovery:有些设备支持
fastboot reboot recovery
我个人最常用的是 reboot-bootloader。为什么?因为有时候刷完一个分区,我想接着刷另一个,直接重启到 bootloader 比拔线重插快多了。
fastboot reboot recovery。有些厂商把 recovery 的入口藏得很深。如果你敲了没反应,别慌,手动按组合键进 recovery 就行。
4.3 fastboot flash:刷分区,核心中的核心
这个命令是 fastboot 的灵魂。它的格式很简单:
fastboot flash <分区名> <镜像文件>
举个例子:
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash vendor vendor.img
你可能会问:分区名有哪些?常见的我列个表:
| 分区名 | 作用 | 常见镜像 |
|---|---|---|
| boot | 内核 + ramdisk | boot.img |
| system | 系统文件 | system.img |
| vendor | 厂商定制 | vendor.img |
| userdata | 用户数据 | userdata.img |
| recovery | 恢复模式 | recovery.img |
| cache | 缓存 | cache.img |
这里有个坑,我踩过好几次:刷 system 分区时,一定要确认镜像大小和分区大小匹配。如果镜像太大,刷到一半会报错,设备可能直接变砖。
fastboot getvar partition-size:system 查了分区大小,重新做了镜像才救回来。
另外,现在很多新设备用了 逻辑分区(dynamic partitions),刷法有点不一样。你得用 fastboot flash --slot=all 或者先 fastboot delete-logical-partition 再重新创建。这个后面细讲,你先记住有这么回事。
4.4 fastboot erase:擦除分区数据
有时候你不需要刷整个镜像,只想清空某个分区。比如:
fastboot erase cache
fastboot erase userdata
这个命令会把分区里的数据全部清掉,但分区本身还在。说白了就是格式化。
什么时候用?
- 刷完系统后,想清一下 cache 分区,避免旧缓存干扰。
- 想恢复出厂设置,直接
fastboot erase userdata比进系统设置里重置快多了。 - 调试时,想模拟一个「干净」的环境。
fastboot erase userdata 会清掉你所有的应用、照片、联系人。操作前一定确认数据已经备份。我见过有人刷机前忘了备份,erase 完才想起来孩子照片全在里面……那叫一个惨。
另外,有些分区是不能 erase 的。比如 bootloader 分区,你把它擦了,设备就真成砖了——没有 bootloader,连 fastboot 都进不去。
4.5 fastboot boot:临时启动,不刷入
这个命令很实用,但很多人不知道。它的作用是:临时加载一个镜像启动,但不写入分区。
fastboot boot boot.img
设备会重启,用你指定的 boot.img 启动。但下次正常重启,它还是用原来的内核。
这有什么用?
- 测试新内核:你编译了一个新内核,想看看能不能正常启动。用
fastboot boot试一下,如果翻车了,重启就恢复原样。 - 临时进 recovery:有些设备 recovery 分区坏了,你可以
fastboot boot recovery.img临时进 recovery 做操作。 - 救砖:设备起不来了,但 fastboot 还能用。你可以先
fastboot boot一个已知能用的内核,把数据救出来,再慢慢修。
fastboot boot 测试,发现是某个驱动没加载对。改完参数再编译,确认没问题了才 fastboot flash 写进去。这习惯帮我省了不少事。
嗯,这里要注意:fastboot boot 只支持 boot.img 这种格式。如果你想临时加载 recovery,也得是 recovery.img。它不能直接加载 system.img 或者 vendor.img。
知识体系一览
这五个命令的关系,我画了张图帮你理一理:
你看,这五个命令其实是一条工作流。先确认设备在不在,然后刷或者擦,最后重启。boot 命令是个「安全网」,让你在正式写入前先试试水。
好了,这五个命令你记住了吗?下次你连上设备,先敲个 fastboot devices 试试手。别怕敲错,fastboot 没那么容易把设备搞坏——除非你乱 erase bootloader 分区。