第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)。

操作步骤

  1. 获取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,应输出版本号及编译信息。
  2. 下载固件包并验证完整性
    • 从官方源或信任的镜像站下载固件压缩包(如firmware-ota.zip或images-only.tar.gz)。
    • 获取官方发布的校验和文件(通常为.sha256sum、.md5或.asc签名)。
    • 计算本地文件的哈希值
      sha256sum firmware-ota.zip
      # 或
      CertUtil -hashfile firmware-ota.zip SHA256
    • 与官方哈希值逐字符比对,若不匹配则重新下载。
    • 若有GPG签名,使用对应公钥验证签名有效性。
    哈希校验不通过时,禁止使用该固件刷机,否则可能导致变砖或功能异常。
  3. 解读分区表
    • 方法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槽位分区混淆,或误将镜像写入错误偏移。

输入输出物

类型名称说明来源/去向
输入固件压缩包(.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校验值与官方公布值完全一致。
  • ✓ 分区表解析结果与设备官方分区布局文档一致(关键分区大小、偏移无误)。
  • ✓ 所有异常场景已记录并闭环(重试通过或找到替代方案)。
刷机工具与固件准备流程 获取FastBoot工具 下载固件包 SHA256/Sign冲突 失败:重新下载 成功:继续下一步 不匹配 匹配 解读分区表 验证分区信息 刷机准备就绪 关键检查项 • 下载源可信 • 哈希逐位对比 • 分区表与设备匹配 • FastBoot版本≥对应版本