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 阶段提供的两种特殊工作模式,分别面向“刷写”和“修复”场景。

Android 启动硬件基础分层链路 BootROM SoC 内部固化 · 不可修改 Bootloader 引导分区 · 可解锁替换 Linux Kernel + ramdisk boot 分区 · init 进程 校验加载 校验加载 启动介质(Boot Medium) eMMC / UFS / NAND Flash / SD 卡 / USB(Fastboot 下载) 存放 boot、system、vendor、recovery 等分区镜像 读取分区 Fastboot 模式 通过 USB 与主机通信 刷写分区、解锁、查看变量 Recovery 模式 独立最小系统 OTA 升级、恢复出厂、清缓存 组合键进入 组合键进入 信任链:BootROM → Bootloader → Kernel → Android;Fastboot 与 Recovery 是 Bootloader 提供的两种特殊工作模式 启动介质决定镜像存放位置,Bootloader 决定从哪个分区加载下一阶段

二、BootROM:芯片内的第一段代码

BootROM 是 SoC 厂商在流片时固化在芯片内部的一段只读代码,地址固定、不可擦写。设备上电或复位后,CPU 的第一条指令就来自 BootROM。它的主要职责包括:初始化最基本的时钟与内存控制器、检测启动模式(如从 eMMC、SD 卡还是 USB 启动)、从启动介质中读取一级引导程序(如 SPL 或 Preloader)到 SRAM 中执行,并在安全启动开启时对其签名进行校验。

BootROM 通常还内置了紧急下载模式(如高通 EDL、联发科 BROM),当设备变砖时可通过特定工具与 BootROM 通信,把引导程序重新写入。这也是“救砖”的最后一道防线。由于 BootROM 不可修改,它的漏洞往往影响面极大,是安全研究关注的重点。

BootROM 阶段内存极小,通常只加载几十 KB 到几百 KB 的一级引导程序,因此它不会直接加载完整内核。

三、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 启动控制中非常典型的设计。

误区:很多人认为“解锁 Bootloader 就等于能随便刷机”。实际上,解锁只是允许刷入未签名镜像,若分区表、AVB 校验或 slot 配置不匹配,仍可能导致设备无法启动。

六、复盘与排障思路

当设备无法正常开机时,可以按启动链路自下而上排查:先确认是否能进入 Fastboot 或 Recovery,以判断 BootROM 与 Bootloader 是否正常;再检查 boot 分区镜像是否完整、AVB 校验是否通过;最后才怀疑 system 或用户数据问题。掌握这条链路,就能把“开不了机”拆解为可定位的阶段性问题,而不是盲目刷机。

  • 能进 Fastboot,说明 BootROM 与 Bootloader 基本正常。
  • 能进 Recovery,说明内核与 ramdisk 可加载,问题多在 system 或 data。
  • 两者都进不去,需考虑 BootROM 紧急下载模式救砖。
  • 刷机前务必确认设备型号、分区布局与镜像匹配。