第3章 刷机工具与固件准备:FastBoot工具获取、固件包完整性校验、分区表解读
适用场景
- 设备已进入FastBoot模式(通过组合键或adb reboot bootloader),需要烧录系统固件。
- 首次搭建刷机环境或更换主机时,需要获取正确版本的FastBoot工具。
- 下载来自厂商、第三方社区或CI构建的固件包后,必须验证其完整性,防止损坏或篡改。
- 烧录前需要确认分区表结构(如boot、system、vendor、userdata等)以确保刷写目标正确。
前置条件
- 主机操作系统:Windows 10/11、macOS 10.15+ 或 Linux(Ubuntu 20.04+ 推荐)。
- USB驱动已安装(Windows下需安装Google USB Driver或设备厂商驱动)。
- 已知设备平台架构(ARM64、x86_64等)和固件包命名规则。
- 具备SHA256/SHA1校验工具(如sha256sum、CertUtil -hashfile)。
- 具备分区表读取工具(如gdisk、parted或fastboot getvar all)。
操作步骤
- 获取FastBoot工具
- 方法A(推荐):从平台工具包下载
platform-tools-latest-*.zip,解压后将目录加入PATH。 - 方法B(Linux/macOS):通过包管理器安装
sudo apt update && sudo apt install android-tools-fastboot # Debian/Ubuntu brew install android-platform-tools # macOS Homebrew - 方法C(独立二进制):从AOSP镜像站下载单个
fastboot二进制并赋予执行权限。
验证安装:在终端执行fastboot --version,应输出版本号及编译信息。 - 方法A(推荐):从平台工具包下载
- 下载固件包并验证完整性
- 从官方源或信任的镜像站下载固件压缩包(如
firmware-ota.zip或images-only.tar.gz)。 - 获取官方发布的校验和文件(通常为
.sha256sum、.md5或.asc签名)。 - 计算本地文件的哈希值
sha256sum firmware-ota.zip # 或 CertUtil -hashfile firmware-ota.zip SHA256 - 与官方哈希值逐字符比对,若不匹配则重新下载。
- 若有GPG签名,使用对应公钥验证签名有效性。
哈希校验不通过时,禁止使用该固件刷机,否则可能导致变砖或功能异常。 - 从官方源或信任的镜像站下载固件压缩包(如
- 解读分区表
- 方法A:通过FastBoot获取分区布局
fastboot getvar partition-size:boot fastboot getvar partition-type:system # 或一键输出所有分区信息 fastboot getvar all - 方法B:解析固件包内的分区表文件(如
partition-table.img或gpt_backup.bin)gdisk -l partition-table.img # 或 sgdisk --print partition-table.img - 方法C:读取设备当前分区表(仅限已rec或fastboot环境)
fastboot oem gptinfo # 部分设备支持 - 重点关注分区名、起始扇区、大小及类型UUID。典型分区包括:
xbl、abl、boot、system、vendor、userdata。
分区表解读是刷写前最重要的步骤之一,避免将A/B槽位分区混淆,或误将镜像写入错误偏移。 - 方法A:通过FastBoot获取分区布局
输入输出物
| 类型 | 名称 | 说明 | 来源/去向 |
|---|---|---|---|
| 输入 | 固件压缩包(.zip/.tar.gz) | 包含完整刷机镜像 | 厂商/社区下载 |
| 输入 | 校验和文件(.sha256sum / .asc) | 用于完整性验证 | 固件下载页 |
| 输入 | 分区表文件或设备原始分区信息 | 确定烧录布局 | 设备/固件包内 |
| 输出 | 已验证的固件镜像(.img / .bin) | 可安全用于烧录 | 本地工作目录 |
| 输出 | 分区表解析报告(文本/表格) | 记录分区对应关系 | 刷机记录附件 |
| 输出 | FastBoot工具二进制(或路径确认) | 刷机执行环境 | PATH或指定目录 |
责任边界
| 角色 | 职责 | 交付物 |
|---|---|---|
| 刷机操作工程师 | 下载固件、校验哈希、解读分区表、配置FastBoot环境 | 校验报告、分区表记录 |
| QA/测试工程师 | 复核固件哈希与官方一致性,确认分区表与设备匹配 | 审核签字记录 |
| 固件提供方(厂商/开发) | 发布正确哈希值及签名,维护分区表文档 | 发布清单、PGP公钥 |
记录材料
- 《固件完整性验证记录表》:包含固件文件名、算法、计算值、官方值、比对结果、操作人、日期。
- 《分区表解析记录》:设备型号、固件版本、分区列表(名称、起始、大小、类型),以及fastboot getvar all原始输出。
- 《FastBoot工具版本记录》:操作系统、工具来源、版本号、安装路径。
异常处理
| 异常现象 | 可能原因 | 处理措施 |
|---|---|---|
| fastboot命令未找到 | 未安装或PATH未配置 | 重新安装platform-tools,或手动添加PATH |
| 哈希值不匹配 | 下载不完整、文件损坏、镜像被篡改 | 更换网络重下,确认下载源,联系固件发布方 |
| 签名验证失败(GPG) | 公钥未导入、签名过期、固件被篡改 | 导入正确公钥,检查签名有效性,重新获取合法固件 |
| 分区表显示异常(扇区数0、名称乱码) | 分区表文件损坏、设备未正确进入FastBoot | 重新进入FastBoot模式,更换USB端口,重新dump |
| fastboot getvar all卡住无输出 | USB驱动问题、设备未识别 | 检查USB驱动,重插线,重启设备及主机 |
验收标准
- ✓ FastBoot工具可正常运行,
fastboot --version输出正确版本号。 - ✓ 固件压缩包的SHA256校验值与官方公布值完全一致。
- ✓ 分区表解析结果与设备官方分区布局文档一致(关键分区大小、偏移无误)。
- ✓ 所有异常场景已记录并闭环(重试通过或找到替代方案)。