发布于 

谷歌Pixel刷机教程

⚠️ 风险提示

  • 刷机会清空全部数据,操作前完整备份(照片、通讯录、微信记录、OTP/Authenticator 密钥)
  • 解锁 Bootloader 通常失去保修,部分机型永久熔断保险丝(三星 Knox 0x1、小米部分机型)
  • 操作不当可能变砖,文末提供救砖思路,但不保证一定能救回
  • 电量 ≥ 60%、用原装数据线、台式机插机箱后置 USB 口
  • 本文仅用于技术学习与自有设备研究,请遵守当地法律法规

适用机型

Pixel 是安卓刷机门槛最低的机型:官方提供完整的工厂镜像(Factory Image)、官方支持解锁 Bootloader、fastboot 完全开放、没有 Knox 那样的熔断保险丝、社区(XDA / GrapheneOS / LineageOS)支持力度最大。想学安卓刷机,Pixel 是首选设备。

市场名 codename 平台 分区方案 说明
Pixel 4a sunfish 骁龙 730G A/B 老机型,很多工具的测试基准
Pixel 4a 5G bramble 骁龙 765G A/B
Pixel 5 redfin 骁龙 765G A/B
Pixel 5a barbet 骁龙 765G A/B
Pixel 6 oriole Tensor 第一代 A/B Tensor 平台起点
Pixel 6 Pro raven Tensor 第一代 A/B
Pixel 6a bluejay Tensor 第一代 A/B
Pixel 7 panther Tensor G2 A/B
Pixel 7 Pro cheetah Tensor G2 A/B
Pixel 7a lynx Tensor G2 A/B
Pixel 8 shiba Tensor G3 A/B(虚拟)
Pixel 8 Pro husky Tensor G3 A/B(虚拟)
Pixel 8a akita Tensor G3 A/B(虚拟)
Pixel 9 tokay Tensor G4 A/B(虚拟)
Pixel 9 Pro caiman Tensor G4 A/B(虚拟)
Pixel 9 Pro XL komodo Tensor G4 A/B(虚拟)
Pixel 9 Pro Fold comet Tensor G4 A/B(虚拟) 折叠屏
Pixel 9a tegu Tensor G4 A/B(虚拟)
Pixel 10 系列 以官方页面为准 Tensor G5 A/B(虚拟) 资料持续更新中

注意区分两类机型:

类型 说明 刷机影响
国际版 / 无锁版 谷歌商店直接购买,型号无运营商后缀 Bootloader 可解锁
运营商版 Verizon(VZW)、AT&T 等签约机 部分 BL 锁死,尤其 Verizon 版
# 查看自己的机型代号
adb shell getprop ro.product.device
# 预期输出:shiba

adb shell getprop ro.product.name
# 预期输出:shiba

adb shell getprop ro.build.fingerprint
# 预期输出:google/shiba/shiba:15/AP4A.250105.002/xxx:user/release-keys

⚠️ 警告:Verizon(VZW)版 Pixel 的 Bootloader 是锁死的,开发者选项里 OEM unlocking 开关灰掉,且官方不提供解锁渠道。购买二手 Pixel 时务必确认能否进 设置 → 开发者选项 看到可操作的 OEM unlocking 开关。

准备工作

工具清单

工具 用途 获取方式
Android Flash Tool(网页版) 官方一键刷机,最省事 flash.android.com(Chrome/Edge)
Android SDK Platform Tools adb / fastboot 命令行 developer.android.com/tools/releases/platform-tools
Google USB Driver Windows 驱动 developer.android.com(Windows 专用)
官方工厂镜像 完整系统包 developers.google.com/android/images
官方 OTA 包(Full OTA) 增量/完整 OTA developers.google.com/android/ota
Magisk Root 方案 GitHub: topjohnwu/Magisk
KernelSU 内核级 Root GitHub: tiann/KernelSU
Android Web Driver 工具 让网页版 Flash Tool 识别设备 随 Flash Tool 引导安装
7-Zip 解压工厂镜像 tar 7-zip.org

环境检查

# Windows PowerShell
cd D:\platform-tools
.\adb.exe version
# Android Debug Bridge version 1.0.41

.\fastboot.exe --version
# fastboot version 35.0.2-xxxxxxx

.\adb.exe devices
# List of devices attached
# 1A051FDEE00234    device

.\adb.exe reboot bootloader
.\fastboot.exe devices
# 1A051FDEE00234    fastboot
# Linux / macOS
adb version
fastboot --version

# Linux udev 规则(识别不到设备时)
sudo tee /etc/udev/rules.d/51-android.rules <<'EOF'
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
EOF
sudo udevadm control --reload-rules
sudo udevadm trigger
adb kill-server
adb devices

Pixel 的 USB VID 是 18d1(Google),fastboot 模式下同样是 18d1:d00d。

# Windows 若 fastboot devices 无输出,手动指定 Google USB Driver:
# 设备管理器 → 找到带感叹号的 "Android" 设备 → 右键更新驱动
# → 浏览我的电脑 → 选择 android_winusb.inf(在 Google USB Driver 解压目录)

开启开发者选项与 OEM 解锁

  1. 设置 → 关于手机 → 连点 版本号 7 次
  2. 设置 → 系统 → 开发者选项
  3. 打开 USB 调试
  4. 打开 OEM unlocking(关键,灰掉说明是运营商锁死机型)
# 验证
adb shell getprop ro.oem_unlock_supported
# 返回 1 → 支持解锁

数据备份

# 关键目录
adb pull /sdcard/DCIM ./backup/DCIM
adb pull /sdcard/Pictures ./backup/Pictures
adb pull /sdcard/Download ./backup/Download
adb pull /sdcard/Movies ./backup/Movies

# 联系人 / 短信 / 日历:设置 → 系统 → 备份(Google One 云备份)
# WhatsApp:设置 → 聊天 → 聊天备份(Google Drive)
# 信号 / Telegram:各自App内导出
# OTP 密钥:Google Authenticator 的 导出 → 导出账号(务必做,这是最容易忘的)

⚠️ 警告:解锁 Bootloader 会强制格式化 /data。OTP 密钥一旦丢失且没有备用恢复码,很多账号永久无法找回。先导出再解锁。

一、官方工厂镜像下载与校验

1.1 下载

官方地址:https://developers.google.com/android/images

页面按 codename 列出所有机型,每个机型下有:

版本类型 说明 适用
最新稳定版 当前正式推送版本 绝大多数人
Beta / Preview 开发者预览版 测试,可能不稳定
历史版本 页面折叠区域里的旧版本 降级、救砖、回退

每个版本提供两个文件:

shiba-ap4a.250105.002-factory-1a2b3c4d.zip
├── SHA-256 校验值(页面上直接显示,如 1a2b3c4d...)

shiba-ota-ap4a.250105.002-9f8e7d6c.zip
├── 完整 OTA 包(Full OTA),用于 adb sideload 或 fastboot update

📌 尽量下载「工厂镜像」(factory image)而非 OTA 包。工厂镜像包含完整分区镜像,可用于逐分区刷入、救砖、降级;OTA 包只能整体升级。

1.2 SHA256 校验(必须做)

下载后必须校验,工厂镜像损坏是刷机失败的常见原因。

# Linux / macOS
sha256sum shiba-ap4a.250105.002-factory-1a2b3c4d.zip
# 输出:1a2b3c4d5e6f...  shiba-ap4a.250105.002-factory-1a2b3c4d.zip
# 与下载页面上显示的 SHA-256 逐字符比对
# Windows PowerShell
Get-FileHash .\shiba-ap4a.250105.002-factory-1a2b3c4d.zip -Algorithm SHA256 | Format-List
# 输出:
# Algorithm : SHA256
# Hash      : 1A2B3C4D5E6F...
# Path      : D:\fw\...

1.3 解压工厂镜像

# 工厂镜像是双层压缩:zip → tar → 内部镜像
# 第一层:解压 zip
tar -xf shiba-ap4a.250105.002-factory-1a2b3c4d.zip     # Linux/macOS
# 或用 7-Zip 右键解压(Windows)

# 得到:
# shiba-ap4a.250105.002/
#   ├── image-shiba-ap4a.250105.002.zip      ← 真正的分区镜像
#   ├── bootloader-shiba-shiba-xxx.zip
#   ├── radio-shiba-xxx.zip
#   ├── flash-all.sh                          ← Linux/Mac 刷机脚本
#   ├── flash-all.bat                         ← Windows 刷机脚本
#   └── flash-base.sh

# 第二层:解压 image-*.zip
cd shiba-ap4a.250105.002
unzip image-shiba-ap4a.250105.002.zip -d images
ls images/

得到的镜像列表:

images/
├── android-info.txt
├── boot.img
├── bootloader-husky-xxx.img
├── dtbo.img
├── init_boot.img
├── pvmfw.img
├── radio-shiba-xxx.img
├── super_empty.img
├── system.img
├── system_ext.img
├── system_other.img
├── vbmeta.img
├── vbmeta_system.img
├── vbmeta_vendor.img
├── vendor.img
├── vendor_boot.img
├── vendor_dlkm.img
└── product.img

二、两种刷机方式对比

项目 Android Flash Tool(网页版) fastboot 命令行
入口 浏览器访问 flash.android.com 本地 platform-tools
前置条件 Chrome/Edge + 装 Web USB 驱动 装 platform-tools + 驱动
是否需下载固件 ❌ 不需要(在线拉取) ✅ 需要(2~4GB)
操作难度 ⭐ 点几下 ⭐⭐⭐ 敲命令
可控性 低(只能选整包) 高(可逐分区、可改脚本)
保留数据 可选 可选
重新上锁 BL ✅ 一键 手动 fastboot flashing lock
能否 Root ❌ 不行 ✅ 可以
能否降级 ✅ 可以 ✅ 可以
能否刷自定义 ROM ❌ 不行(只刷官方) ✅ 可以
网络依赖 强依赖(断网即失败) 无(本地文件)
适用场景 官方系统恢复、回退、上锁、新手 Root、救砖、研究、自定义 ROM

选择建议:

只想恢复官方系统、回退版本、重新上锁      →  Android Flash Tool
要 Root / 自定义 ROM / 救砖 / 研究       →  fastboot 命令行
网络差、固件要反复用多次                 →  fastboot 命令行

三、方式一:Android Flash Tool(网页版)

3.1 操作步骤

  1. 手机开启 USB 调试,连接电脑
  2. 用 Chrome 或 Edge 打开 https://flash.android.com
  3. 点击 "Get Started"
  4. 允许网页访问 USB 设备 → 弹出设备列表 → 选择你的 Pixel → 点 连接
  5. 手机屏幕会提示允许 USB 调试,勾选"一律允许"后确认
  6. 网页显示可用版本列表,选择目标版本
  7. 选择刷机选项:
选项 说明
Wipe device(清除数据) 等同于清 /data
Force flash all partitions(强制刷所有分区) 会重刷所有分区,耗时更长,救砖用
Lock bootloader(重新上锁) 刷完自动上锁,确认系统为官方
Skip if the device's Android version is the same or higher 防降级保护,取消勾选可降级
  1. 点击 Confirm → Install
  2. 手机自动进入 fastbootd 并开始刷入,网页显示进度
  3. 完成后手机自动重启
页面显示进度:
Verifying  ██████████ 100%
Flashing   ██████████ 100%
Rebooting...

最终提示: "Flash complete"

3.2 常见失败

现象 原因 处理
浏览器找不到设备 USB 驱动 / 浏览器权限 装 Google USB Driver;换 Chrome;chrome://device-log 排查
手机屏幕提示 "Allow USB debugging" 但网页无反应 授权窗口被遮挡 解锁屏幕重插
卡在 Verifying 网络问题 换网络;或改用 fastboot 本地刷
刷到一半断开 USB 线 / 口 换原装线、后置 USB 口
提示 "Device is locked" BL 未解锁 先解锁

📌 Android Flash Tool 强依赖网络。如果公司网络有 SSL 中间人代理或防火墙,基本连不上。这种情况下直接用 fastboot 本地刷。

四、方式二:fastboot 命令行

4.1 解锁 Bootloader

# 进入 fastboot(bootloader)模式
adb reboot bootloader

# 或用按键:关机后按住 音量下 + 电源键

# 确认设备已识别
fastboot devices
# 预期输出:1A051FDEE00234    fastboot

# 解锁(Pixel 全系通用)
fastboot flashing unlock

手机屏幕出现解锁确认界面:

Unlock bootloader?

If you unlock the bootloader, you will be able to install
custom operating system software on this phone.
...
Press Volume Up/Down to select: UNLOCK THE BOOTLOADER
Press Power button to confirm

用 音量键 选中 UNLOCK THE BOOTLOADER,按 电源键 确认。

# 解锁后立即重启
fastboot reboot

⚠️ 警告:确认解锁会立即清除所有数据。这是不可逆的,OTP 密钥请提前导出。

关于 fastboot oem unlock:

命令 适用 说明
fastboot flashing unlock Pixel 2 及之后所有机型 标准 fastboot 命令,推荐
fastboot oem unlock Pixel 1 及更早 / 部分老设备 新机型已废弃,执行会返回 FAILED (remote: 'oem unlock is not allowed')

4.2 验证解锁状态

fastboot getvar unlocked
# 预期输出:unlocked: yes

# 更详细的
fastboot oem device-info
# 输出示例:
# Device unlocked: true
# Device critical unlocked: false
# Charger screen enabled: false

# 查看安全启动状态
fastboot getvar secure
# secure: no   → 已解锁
# secure: yes  → 未解锁

# 系统内验证
adb shell getprop ro.boot.verifiedbootstate
# orange  → 已解锁(AVB 校验宽松)
# green   → 未解锁且校验通过
# red/yellow → 异常

4.3 flash-all 脚本解析

工厂镜像解压后根目录有两个脚本:flash-all.sh(Linux/macOS)和 flash-all.bat(Windows)。内容基本一致:

#!/bin/sh
# flash-all.sh 典型内容

fastboot flash bootloader bootloader-shiba-shiba-xxx.img
fastboot reboot-bootloader
sleep 5

fastboot flash radio radio-shiba-xxx.img
fastboot reboot-bootloader
sleep 5

# 注意这一行:
fastboot -w update image-shiba-ap4a.250105.002.zip

-w 参数的作用:

写法 行为 适用
fastboot -w update image-xxx.zip 清除 /data 和 /metadata(wipe)后刷入 第一次刷、救砖、跨版本
fastboot update image-xxx.zip 保留用户数据刷入 平刷、修复系统、小版本升级
# 保留数据刷入(编辑脚本,删掉 -w):
# 把 fastboot -w update image-shiba-ap4a.250105.002.zip
# 改为 fastboot update image-shiba-ap4a.250105.002.zip

# 或者不改脚本,直接命令行执行:
fastboot update image-shiba-ap4a.250105.002.zip

Windows 版 flash-all.bat 同理,用文本编辑器把 -w 删掉即可。

⚠️ 警告:跨 Android 大版本(如 14 → 15)务必带 -w 清除数据。保留数据跨版本升级极易导致系统应用 FC、卡开机动画。

4.4 执行 flash-all

# Linux / macOS
chmod +x flash-all.sh
./flash-all.sh
# Windows(PowerShell,注意用 .\ 且脚本名带扩展名)
.\flash-all.bat

预期输出(节选):

target reported max download size of 268435456 bytes
archive does not contain 'boot.sig'
archive does not contain 'dtbo.sig'
Sending 'bootloader_b' (12345 KB)               OKAY [  0.524s]
Writing 'bootloader_b'                          OKAY [  1.123s]
Rebooting into bootloader                       OKAY [  0.050s]
< waiting for any device >
Sending 'radio_b' (98765 KB)                    OKAY [  3.211s]
Writing 'radio_b'                               OKAY [  5.442s]
Rebooting into bootloader                       OKAY [  0.050s]
< waiting for any device >
extracting android-info.txt (0 MB) to RAM...
extracting boot.img (64 MB) to disk... took 0.321s
archive does not contain 'boot.sig'
archive does not contain 'dtbo.sig'
extracting dtbo.img (24 MB) to disk... took 0.112s
extracting vbmeta.img (0 MB) to disk... took 0.001s
...
Sending 'boot_a' (65536 KB)                     OKAY [  1.876s]
Writing 'boot_a'                                OKAY [  0.421s]
...
Rebooting                                       OKAY [  0.010s]
Finished. Total time: 143.221s

成功标志:最后一行 Finished. Total time: xxx,手机自动重启进入系统。

📌 脚本执行中会重启两次 bootloader(刷 bootloader 和 radio 后各一次),这是正常的,不要拔线。

4.5 手动逐分区刷入

想完全掌控(Root、救砖、研究)就手动刷。

# 1. 进入 fastboot
adb reboot bootloader
fastboot devices

# 2. 确认当前槽位
fastboot getvar current-slot
# current-slot: a

# 3. 刷 bootloader 和 radio(可选,但建议同版本)
fastboot flash bootloader bootloader-shiba-shiba-xxx.img
fastboot reboot-bootloader
sleep 5
fastboot flash radio radio-shiba-xxx.img
fastboot reboot-bootloader
sleep 5

# 4. 刷核心分区
cd images/
fastboot flash boot boot.img
fastboot flash init_boot init_boot.img
fastboot flash dtbo dtbo.img
fastboot flash vendor_boot vendor_boot.img
fastboot flash vendor_dlkm vendor_dlkm.img
fastboot flash vbmeta vbmeta.img
fastboot flash vbmeta_system vbmeta_system.img
fastboot flash vbmeta_vendor vbmeta_vendor.img
fastboot flash pvmfw pvmfw.img

# 5. 刷动态分区(需要进 fastbootd)
fastboot reboot fastboot
# 屏幕显示 "FASTBOOTD"
fastboot flash super super.img
# 等待较久(super.img 通常 2~3GB)

# 或者擦除 super 后刷逻辑分区
fastboot wipe-super super_empty.img
fastboot flash system system.img
fastboot flash system_ext system_ext.img
fastboot flash vendor vendor.img
fastboot flash product product.img

# 6. 清数据(可选)
fastboot erase userdata
fastboot erase metadata

# 7. 重启
fastboot reboot

4.6 分区作用表

分区 作用 A/B 刷入建议
boot 内核(kernel)+ 通用 ramdisk ✅ 常刷(Pixel 5 及更早的 Root 目标)
init_boot Android 13+ 拆出的 ramdisk(含 init) ✅ 常刷(Pixel 6 之后的 Root 目标)
vendor_boot 厂商内核模块 + DTB + vendor ramdisk ✅ 常刷(与 boot 同版本)
vendor_dlkm 可动态加载的厂商内核模块 ✅ 常刷
dtbo 设备树覆盖层(Device Tree Overlay) ✅ 常刷,硬件驱动相关
vbmeta AVB 校验元数据(顶层) ✅ Root 时必须刷
vbmeta_system system 分区的 AVB 元数据 ✅ 常刷
vbmeta_vendor vendor 分区的 AVB 元数据 ✅ 常刷
super 动态分区容器,内含 system/vendor/product/system_ext ✅ 大版本变化时刷
system 安卓系统核心(AOSP 部分) ✅(逻辑) 通常随 super 一起刷
system_ext 系统扩展(厂商私有扩展) ✅(逻辑)
vendor 厂商 HAL 实现、闭源驱动 ✅(逻辑)
product 产品特性配置 ✅(逻辑)
pvmfw Protected VM 固件(虚拟化安全) ✅ 常刷
bootloader 底层引导(Pixel 上是 coreboot/深度定制) ✅ 谨慎,刷错真砖
radio 基带固件 ✅ 需要信号就刷
persist 传感器校准、DRM 密钥、WiFi/蓝牙 MAC ❌ 共享 ⛔ 绝不刷
persist_backup persist 备份 ❌ ⛔ 绝不刷
frp Factory Reset Protection ⚠️ ❌ ⛔ 绝不刷
metadata 加密元数据 ❌ 清数据时擦
userdata 用户数据 ❌ 清数据时擦
misc 启动控制信息(BCB) ❌ 很少动
super_empty 空动态分区表,用于 wipe-super — 擦 super 时用

⚠️ 警告:永远不要刷 persist、persist_backup、frp 分区。persist 存有设备唯一的校准数据与 DRM 密钥,丢失后无法恢复:WiFi/蓝牙 MAC 变成 02:00:00:00:00:00、指纹不可用、Widevine 降为 L3、传感器失灵。

五、AVB / dm-verity:为什么刷 Root 要动 vbmeta

5.1 原理

AVB(Android Verified Boot)2.0 是安卓的启动校验链:

bootloader (硬件信任根)
    │  用内置公钥校验
    ▼
vbmeta 分区
    │  vbmeta 里存放 system/vendor/boot 等分区的哈希或哈希树描述符
    ├──► boot / init_boot   (哈希校验)
    ├──► system             (哈希树,配合 dm-verity 运行时校验)
    ├──► vendor             (哈希树)
    └──► dtbo / product ...

dm-verity 是内核里的运行时完整性校验模块:系统运行时,每次读取 system/vendor 的数据块都会用哈希树验证,发现篡改直接返回 I/O 错误。

启动状态与颜色:

verifiedbootstate 颜色 含义
green 绿 BL 锁定 + 校验通过(完全官方)
orange 橙 BL 已解锁(允许自签镜像)
yellow 黄 BL 解锁 + 使用了自签证书
red 红 校验失败(可能将无法启动)

5.2 关键命令

fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img

这条命令做了什么:

部分 作用
--disable-verity 在刷入的 vbmeta 中清除 dm-verity 标志位 → 内核不再对 system/vendor 做运行时校验
--disable-verification 清除 AVB 校验标志位 → bootloader 不再校验 vbmeta 的签名与哈希树
flash vbmeta vbmeta.img 用修改后的镜像刷入 vbmeta 分区

为什么需要它:刷入 Magisk 修补过的 init_boot 后,其哈希与官方 vbmeta 中记录的不一致。如果不禁用校验,bootloader 会拒绝启动(卡在 Google LOGO 或提示 "Your device is corrupt")。

5.3 什么时候需要禁用校验

场景 是否需要
刷 100% 官方未修改镜像 ❌ 不需要
刷 Magisk 修补的 init_boot ✅ 必须
刷自定义内核 ✅ 必须
刷自定义 ROM(LineageOS 等) ✅ 通常必须(ROM 会自带处理)
只刷 super 不动 boot ❌ 不需要
# 标准 Root 刷入流程(Pixel 8 示例)
adb reboot bootloader
fastboot getvar current-slot          # 确认槽位

# 关键:先禁用校验再刷 vbmeta
fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img

# 再刷修补后的 init_boot
fastboot flash init_boot magisk_patched-27000_xxxxx.img

fastboot reboot

刷空 vbmeta(更彻底):

# 生成一个全 0 的 vbmeta(禁用所有校验)
# 从 Google 官方 avbtool 或社区获取 vbmeta_empty.img
fastboot --disable-verity --disable-verification flash vbmeta vbmeta_empty.img

# 手动创建空 vbmeta(需要 avbtool,来自 AOSP)
avbtool make_vbmeta_image --flags 2 --padding_size 4096 --output vbmeta_disabled.img
# flags 2 = AVB_VBMETA_IMAGE_FLAGS_VERIFICATION_DISABLED

fastboot flash vbmeta vbmeta_disabled.img

⚠️ 警告:禁用 AVB 后,任何能物理接触设备的人都可以植入持久化恶意代码,且系统不会有任何提示。只在你自己的研究设备上禁用,不要在日常主力机上长期关闭。

5.4 恢复校验

# 重新刷未修改的官方 vbmeta(不带任何参数)
fastboot flash vbmeta vbmeta.img
fastboot flash vbmeta_system vbmeta_system.img
fastboot flash vbmeta_vendor vbmeta_vendor.img

# 或者直接执行 flash-all.sh 刷官方完整包

六、A/B 分区与槽位

Pixel 从 Pixel 2 起全系 A/B(无缝更新),Pixel 7 之后部分机型为虚拟 A/B。

6.1 槽位机制

概念 说明
slot _a / _b 两套分区,如 boot_a / boot_b
current-slot 当前启动的槽位
OTA 在后台写入非当前槽,重启切换
非当前槽 接收 OTA 的槽,也是 fastboot flash 的默认目标(不带后缀时)

6.2 槽位命令

# 查看当前槽位
fastboot getvar current-slot
# current-slot: a

# 切换槽位
fastboot set_active b
# 或
fastboot --set-active=b

# 切到另一个槽(OTA 失败时的救砖常用手段)
fastboot set_active other

# 查看所有槽位相关信息
fastboot getvar all 2>&1 | grep -i slot
# 输出:
# (bootloader) current-slot:a
# (bootloader) slot-retry-count:b:0
# (bootloader) slot-unbootable:b:no
# (bootloader) slot-successful:a:yes

6.3 OTA 后的注意事项

这是最容易踩的坑:

情景:你在 slot_a 上做了 Root
   → 系统推送 OTA
   → OTA 写入 slot_b(非当前槽)
   → 重启后切到 slot_b
   → slot_b 上的 init_boot 是官方未修补的
   → Root 丢失!

正确处理 OTA 的方式:

# 方法一(推荐):OTA 前保留另一个槽的 Root 镜像
# 1. 下载当前版本的工厂镜像,提取 init_boot.img
# 2. Magisk 修补,保存为 magisk_patched.img(本地留一份)

# 3. 收到 OTA 后,不要重启,先在 Magisk 里点 "安装 → 安装到未使用的槽位(OTA 后)"
#    Magisk App → 安装 → 安装到未使用的槽位(OTA之后)
# 4. 系统会提示 OTA 完成需要重启,**此时不要直接重启**
# 5. 在 Magisk 里完成修补后,再通过系统提示重启

# 方法二:OTA 后重新刷 Root 到新槽
fastboot getvar current-slot      # 假设现在是 b
fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img
fastboot flash init_boot magisk_patched.img
fastboot reboot

⚠️ 警告

  • OTA 后不要直接重启,一定要先处理 Root,否则 Root 丢失(情况不严重,但每次都要重来)
  • 刷分区时确认槽位:不带后缀的 fastboot flash boot boot.img 会刷到当前槽(多数情况正确)
  • 不要两个槽刷不同版本,会导致启动逻辑混乱
  • OTA 失败时第一反应应该是 fastboot set_active other 切回原槽

七、Root:Magisk 与 KernelSU

7.1 判断修补目标:boot 还是 init_boot

机型 / 系统 修补目标 原因
Pixel 5 及更早 boot.img ramdisk 在 boot 里
Pixel 6 / 6 Pro / 6a 及之后 init_boot.img Android 13 起 ramdisk 拆到独立分区
Android 12 的 Pixel 6 boot.img 看系统版本而非机型
# 判断方法:看官方镜像包里有没有 init_boot.img
ls images/ | grep -E "^boot|^init_boot"
# 有 init_boot.img → 修它
# 只有 boot.img   → 修它

# 或者系统内判断 Android 版本
adb shell getprop ro.build.version.release
# 13 / 14 / 15 → init_boot
# 12 及以下   → boot

7.2 Magisk 修补流程

Step 1 — 提取镜像

# 从工厂镜像提取(已解压到 images/ 目录)
cp images/init_boot.img ./

Step 2 — 手机端修补

# 传到手机
adb push init_boot.img /sdcard/Download/

# 手机上操作:
# Magisk App → 安装 → 选择并修补一个文件 → 选 init_boot.img
# 输出:/sdcard/Download/magisk_patched-27000_xxxxx.img

# 拉回电脑
adb pull /sdcard/Download/magisk_patched-27000_xxxxx.img ./magisk_patched.img

Step 3 — 刷入

adb reboot bootloader
fastboot devices

# 关键:先禁用 AVB 校验
fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img

# 刷入修补镜像
fastboot flash init_boot magisk_patched.img
# 预期输出:
# Sending 'init_boot_b' (8192 KB)              OKAY [  0.234s]
# Writing 'init_boot_b'                        OKAY [  0.089s]
# Finished. Total time: 0.401s

fastboot reboot

Step 4 — 验证

adb shell su -c id
# uid=0(root) gid=0(root) groups=0(root) context=u:r:su:s0

# Magisk App 首页应显示:
# 已安装:27.0
# Zygisk:是
# Ramdisk:是

7.3 用 magiskboot 命令行修补(电脑端)

不想用手机 App 时:

# 提取 magiskboot(在 Magisk APK 内)
unzip -o Magisk-v27.0.apk -d magisk_apk
cp magisk_apk/lib/x86_64/libmagiskboot.so ./magiskboot
chmod +x magiskboot

# 解包
./magiskboot unpack init_boot.img
# HEADER_VER      "4"
# RAMDISK         "ramdisk.cpio"
# PAGESIZE        "4096"
# CMDLINE         ""
# CHECK_LEVEL     ""

# 修补 ramdisk
./magiskboot cpio ramdisk.cpio \
  "add 0750 init magiskinit" \
  "mkdir 0750 overlay.d" \
  "mkdir 0750 overlay.d/sbin" \
  "patch"

# 重新打包
./magiskboot repack init_boot.img init_boot_patched.img

7.4 KernelSU

KernelSU 工作在内核层,比 Magisk 更难被检测。

对比 Magisk KernelSU
实现层级 用户态(修补 ramdisk + zygisk 注入) 内核态(钩子在内核 syscall 层)
前置 修补 init_boot,简单 需刷入支持 KernelSU 的内核(GKI 内核)
检测难度 较高(有用户态痕迹需隐藏) 低(无用户态痕迹)
模块生态 丰富 较少
OTA 兼容 需重新修补 需重新刷内核
# 方式一:GKI 通用内核(Pixel 6 之后都支持 GKI)
# 1. 查内核版本
adb shell uname -r
# 5.10.198-android13-4-xxxxxxx

# 2. 下载对应版本的 KernelSU 镜像(官方 releases)
# 3. 刷入(注意这里刷的是 boot,不是 init_boot)
fastboot flash boot kernelsu-boot-5.10.198-android13.img

# 方式二:自行编译内核集成 KernelSU(适合研究)
git clone https://github.com/tiann/KernelSU
# 按官方文档把 KernelSU 加入内核源码树重新编译

⚠️ 警告:KernelSU 的内核版本必须与设备 严格对应(uname -r 完整匹配)。刷错版本 = 卡开机或真砖。Pixel 的 GKI 内核版本在每次 OTA 后可能变化,每次 OTA 后都要重新刷对应版本。

7.5 Root 后的检测对抗

# 检查启动状态
adb shell getprop ro.boot.verifiedbootstate
# orange(已解锁,正常)

# 检查 Bootloader 锁定状态
adb shell getprop ro.boot.flash.locked
# 0 = 已解锁

# 检查 Play Integrity(在设备或网页测试)

常用模块(仅供研究):

模块 作用
Zygisk Next 改进版 Zygisk 框架
Shamiko 隐藏 Magisk 存在的痕迹(denylist 白名单模式)
Play Integrity Fix 通过 Play Integrity 基础/设备级检测
Tricky Store 密钥库欺骗

⚠️ 注意:这些是持续对抗手段,谷歌每次更新 Play Integrity 都可能失效。而且 Pixel 是最容易被检测的设备之一(因为谷歌自己的检测最完善)。需要日常使用银行 App 的话,建议用备用机,不要在主用 Pixel 上长期 Root。

八、自定义 ROM

8.1 主流 ROM 对比

ROM 定位 特点 是否含 Google 服务 适用
LineageOS 通用 AOSP 社区最大、机型支持最广、功能均衡 需额外刷 GApps 想要干净的 AOSP + 新功能
GrapheneOS 安全/隐私硬化 强化沙箱、 hardened_malloc、无 Google 服务(可装沙箱版)、支持重新上锁 BL ❌ 无(可选沙箱安装) 安全研究、隐私保护
CalyxOS 隐私 + 可用性 内置 MicroG(Google 服务开源替代)、Tor/VPN MicroG 想脱离 Google 但要 App 兼容
/e/OS 去 Google 化 自带云服务、界面友好 MicroG 从 iOS/Android 迁移的新手
ProtonAOSP 性能与自定义 大量可定制选项 需刷 GApps 喜欢折腾
Pixel Experience 还原 Pixel 体验 把 Pixel 独占功能移植到其他机型 ✅ 有 其他品牌机型
Ubuntu Touch Linux 手机系统 完全不同的系统 无 极客实验

8.2 刷入自定义 ROM(以 GrapheneOS 为例)

GrapheneOS 有官方网页安装器(类似 Android Flash Tool),是最简单的路径:

1. 访问 https://grapheneos.org/install/web
2. 用 Chrome/Edge 打开,连接设备
3. 按页面引导解锁 BL
4. 网页自动下载并刷入 GrapheneOS
5. 可选:重新上锁 Bootloader(GrapheneOS 支持,因为它实现了 AVB 签名)

📌 GrapheneOS 是少数支持"刷入后重新上锁 BL"的第三方 ROM——因为它自己实现了 AVB 签名与 verified boot。上锁后安全性反而比解锁的官方系统更高。其他 ROM 上锁会直接变砖。

8.3 命令行刷入通用流程

# 1. 解锁 BL(见 4.1)

# 2. 进 fastbootd 刷入
adb reboot bootloader
fastboot reboot fastboot

# 3. 擦除动态分区(首次刷第三方 ROM 必须做)
fastboot wipe-super super_empty.img

# 4. 刷入 ROM(各 ROM 提供的脚本或手动)
fastboot flash boot boot.img
fastboot flash init_boot init_boot.img
fastboot flash vendor_boot vendor_boot.img
fastboot flash dtbo dtbo.img
fastboot flash vbmeta vbmeta.img         # ROM 通常提供已禁用校验的 vbmeta
fastboot flash super super.img            # 或 ROM 提供的 system/vendor/product

# 5. 清数据
fastboot -w      # 或 fastboot erase userdata + erase metadata

# 6. 重启
fastboot reboot

⚠️ 警告:刷第三方 ROM 前一定要完整刷一遍对应版本的官方工厂镜像。ROM 通常依赖特定版本的 bootloader 和 radio(基带),版本不匹配会导致无信号、WiFi 不可用、甚至无法启动。ROM 的下载页面都会注明"刷机前需升级到 XXX 版本"。

九、救砖

9.1 Pixel 的救砖优势

Pixel 没有 e-fuse 熔断机制(不比三星),也不锁死 BL(不比部分小米)。只要能进 fastboot,几乎都能救。

9.2 进入 fastboot / rescue 模式

方式 操作 适用
adb adb reboot bootloader 系统能启动
按键 关机后按住 音量下 + 电源键 最常用
强制重启到 bootloader 按住 电源键 30 秒(Pixel 会自动重启到 bootloader) 系统卡死
Rescue Mode 按住 电源键 + 音量下,进入后选择 "Rescue mode" 系统损坏但有 recovery
# 强制进入 bootloader(系统卡死时)
# 长按电源键 30 秒以上,Pixel 的 bootloader 会自动进入 fastboot 界面

9.3 救砖速查表

症状 状态 方案 成功率
bootloop(卡 Google LOGO) 能进 fastboot fastboot erase userdata + flash-all.sh 很高
OTA 失败无法启动 能进 fastboot fastboot set_active other 切回原槽 很高
提示 "Your device is corrupt" 能进系统/fastboot 重刷官方 vbmeta 或刷完整包 高
卡在 fastboot 无法开机 fastboot 正常 flash-all.sh 完整刷入 高
进不了系统,也进不了 fastboot 未知 长按电源 30 秒;充电 30 分钟;Android Flash Tool 尝试 中
完全黑屏无反应 真砖 高通 9008 深刷(Pixel 6 后为 Tensor,深刷工具极少);售后 低
提示 "no valid slot to boot" 两槽都损坏 flash-all.sh 完整刷入 高

9.4 标准救砖流程

# 1. 确认能进 fastboot
fastboot devices

# 2. 尝试切槽(A/B 机器的第一反应)
fastboot set_active other
fastboot reboot

# 3. 不行就清数据
fastboot erase userdata
fastboot erase metadata
fastboot reboot

# 4. 还不行,完整刷官方镜像(带 -w 清空)
cd shiba-ap4a.250105.002
./flash-all.sh

# 5. 命令行刷机也不行,用 Android Flash Tool(勾选 Force flash all partitions)

9.5 真砖的现实

⚠️ 警告

  • Pixel 6 之后用的是 Google Tensor 芯片,没有公开可用的 9008 深刷工具(高通 QFIL 不适用于 Tensor)
  • Tensor 的深刷需要谷歌内部的诊断工具与授权,个人无法获取
  • 所以 Pixel 6 之后的真砖(连 fastboot 都进不去)基本只能售后
  • Pixel 5 及更早(骁龙平台)理论上可以走 9008,但同样需要授权 firehose
  • 好消息:Pixel 的 bootloader 分区是 A/B 冗余的,损坏概率极低。绝大多数"砖"其实只是槽位或数据问题,flash-all.sh 就能救回

9.6 重新上锁(出售/恢复原状)

# ⚠️ 上锁前必须确认系统 100% 官方未修改
# 1. 先刷完整官方镜像
./flash-all.sh

# 2. 进入系统,确认能正常启动、无 Root、无第三方修改
adb shell su -c id      # 应该提示 su: not found

# 3. 重新上锁
adb reboot bootloader
fastboot flashing lock

# 手机屏幕选择 LOCK THE BOOTLOADER,电源键确认
# 上锁会清除数据

# 4. 验证
fastboot getvar unlocked
# unlocked: no

⚠️ 警告:系统未恢复官方就上锁 = 变砖。AVB 校验失败会阻止启动,且部分情况下无法再进 fastboot 重新解锁。Pixel 上锁后 OEM unlocking 开关会消失,需要先进系统开启才能再次解锁。

十、操作检查清单

  • [ ] 确认机型代号(adb shell getprop ro.product.device)
  • [ ] 确认非 Verizon 等 BL 锁死机型(OEM unlocking 开关可用)
  • [ ] 完整备份数据,OTP 密钥已导出
  • [ ] 下载的工厂镜像已校验 SHA256
  • [ ] 已解压两层(zip → tar → images)
  • [ ] adb / fastboot 能正常识别设备
  • [ ] 明确 flash-all 脚本是否保留 -w(跨大版本必须带)
  • [ ] 明确 Root 目标是 boot 还是 init_boot
  • [ ] 记住要刷 persist 是禁忌
  • [ ] 本地保存一份完整工厂镜像作为救砖包
  • [ ] 电量 ≥ 60%,原装线,后置 USB 口

参考资源

类型 链接说明
官方工厂镜像 developers.google.com/android/images
官方 OTA 包 developers.google.com/android/ota
Android Flash Tool flash.android.com
Android 官方刷机文档 source.android.com/docs/setup/build/running
XDA Forums → Pixel 版块 ROM、Root、救砖讨论
GitHub: topjohnwu/Magisk Magisk 官方仓库与文档
GitHub: tiann/KernelSU KernelSU 官方文档
GrapheneOS 官网 grapheneos.org(含网页安装器)
LineageOS Wiki wiki.lineageos.org(各机型刷机指南)

📌 Pixel 各代机型在分区布局、bootloader 版本要求上存在差异,Tensor 平台与骁龙平台差异尤其大。操作前请以对应机型的官方页面与 XDA 原帖为准。