2. 启动硬件基础
Android 设备的启动并不是从 Linux 内核开始的,而是从一颗芯片内部固化的只读代码开始。理解 BootROM、Bootloader、Fastboot、Recovery 以及启动介质之间的关系,是分析“设备为什么能开机”“为什么能进 Fastboot”“为什么能刷机”这类问题的前提。本节从硬件与固件的角度,梳理 Android 启动链路中最底层的几个关键角色。
一、启动链路的分层结构
典型 Android 设备的启动过程可以抽象为一条自上而下的信任链:芯片上电后先执行 BootROM,由它加载并校验一级引导程序;一级引导程序继续加载二级引导程序;最终由 Bootloader 加载 boot 分区中的 Linux 内核与 ramdisk,内核再启动 init 进程,进入 Android 用户空间。每一层都负责验证下一层的完整性,形成安全启动(Secure Boot)的基础。
需要强调的是,BootROM 是固化在 SoC 内部的,用户无法修改;Bootloader 通常烧写在设备的引导分区中,部分设备允许解锁后替换;而 Fastboot 与 Recovery 则是 Bootloader 阶段提供的两种特殊工作模式,分别面向“刷写”和“修复”场景。
二、BootROM:芯片内的第一段代码
BootROM 是 SoC 厂商在流片时固化在芯片内部的一段只读代码,地址固定、不可擦写。设备上电或复位后,CPU 的第一条指令就来自 BootROM。它的主要职责包括:初始化最基本的时钟与内存控制器、检测启动模式(如从 eMMC、SD 卡还是 USB 启动)、从启动介质中读取一级引导程序(如 SPL 或 Preloader)到 SRAM 中执行,并在安全启动开启时对其签名进行校验。
BootROM 通常还内置了紧急下载模式(如高通 EDL、联发科 BROM),当设备变砖时可通过特定工具与 BootROM 通信,把引导程序重新写入。这也是“救砖”的最后一道防线。由于 BootROM 不可修改,它的漏洞往往影响面极大,是安全研究关注的重点。
三、Bootloader:启动链的枢纽
Bootloader 是运行在 BootROM 之后、内核之前的一段引导程序,常见实现有 U-Boot、LK(Little Kernel)以及厂商自研方案。它承担的任务比 BootROM 丰富得多:初始化 DDR、显示、USB、按键等外设;读取分区表;根据启动标志决定进入正常启动、Fastboot 还是 Recovery;加载并校验 boot 分区中的内核与 ramdisk;最后跳转到内核入口。
Bootloader 还是“解锁”操作的执行者。设备出厂时通常处于锁定状态,只允许加载经过厂商签名的镜像。执行 fastboot flashing unlock 后,Bootloader 会清除用户数据并允许刷入自定义镜像,但同时也会触发安全警告。是否允许解锁,取决于厂商策略与设备型号。
# 查看当前设备状态
fastboot devices
fastboot getvar unlocked
fastboot getvar current-slot
# 解锁 Bootloader(会清除数据)
fastboot flashing unlock
# 刷写 boot 分区
fastboot flash boot boot.img
fastboot reboot
四、Fastboot 与 Recovery:两种特殊模式
Fastboot 是 Bootloader 提供的一种基于 USB 的刷写协议。设备进入 Fastboot 模式后,主机端通过 fastboot 命令与设备通信,可以执行分区刷写、擦除、解锁、查看变量等操作。它不依赖 Android 系统,因此即使系统无法启动,只要 Bootloader 完好,仍可通过 Fastboot 修复。
Recovery 则是一个独立的最小系统,通常由内核加一个精简的 ramdisk 组成,存放在 recovery 分区(A/B 设备中可能集成在 boot 中)。它提供 OTA 升级、恢复出厂设置、清除 cache/dalvik、挂载分区等能力。官方 Recovery 只允许刷入签名 OTA 包,而第三方 Recovery(如 TWRP)则提供更自由的刷机与备份功能。
| 对比项 | Fastboot | Recovery |
|---|---|---|
| 运行位置 | Bootloader 内部 | 独立内核 + ramdisk |
| 通信方式 | USB + fastboot 协议 | 屏幕 + 按键 / adb sideload |
| 典型用途 | 刷分区、解锁、救砖 | OTA 升级、恢复出厂、清缓存 |
| 依赖系统 | 不依赖 Android | 不依赖 Android |
| 进入方式 | 组合键或 adb reboot bootloader |
组合键或 adb reboot recovery |
五、启动介质与分区布局
启动介质是存放所有镜像的物理载体,常见有 eMMC、UFS、NAND Flash,部分设备还支持从 SD 卡或 USB 启动。介质上按分区表划分为 boot、recovery、system、vendor、userdata、misc 等分区。Bootloader 依据分区表与启动标志(misc 分区中的 BCB 命令)决定下一步加载哪个分区。
例如,当系统收到 OTA 升级指令时,会向 misc 分区写入 boot-recovery 命令并重启,Bootloader 读取到该标志后进入 Recovery,由 Recovery 完成升级。这种“通过 misc 传递启动意图”的机制,是 Android 启动控制中非常典型的设计。
六、复盘与排障思路
当设备无法正常开机时,可以按启动链路自下而上排查:先确认是否能进入 Fastboot 或 Recovery,以判断 BootROM 与 Bootloader 是否正常;再检查 boot 分区镜像是否完整、AVB 校验是否通过;最后才怀疑 system 或用户数据问题。掌握这条链路,就能把“开不了机”拆解为可定位的阶段性问题,而不是盲目刷机。
- 能进 Fastboot,说明 BootROM 与 Bootloader 基本正常。
- 能进 Recovery,说明内核与 ramdisk 可加载,问题多在 system 或 data。
- 两者都进不去,需考虑 BootROM 紧急下载模式救砖。
- 刷机前务必确认设备型号、分区布局与镜像匹配。