Will's Blog
1536 字
8 分钟
刷机教程

Google platform-tools 下载#

下载地址

此处省略了驱动安装的过程…以及打开 usb 调试和文件传输 (我想这个我应该不会忘).

Android 分区架构#

安卓架构发展要点:#

  • 只有 onlyA 架构和 onlyA 动态分区架构有单独的recovery分区
  • AB 分区开始后recovery合并在boot分区 (国内厂商大多没有遵守)
  • VAB 之后 (出厂 Android11 机型,有厂商没有遵守), boot变成了 3 个分区:
    1. boot内核存放分区
    2. dtbo :屏幕刷新率存放分区
    3. vandor_boot: linux 内核中部分配置文件

三者需要配套,即同时刷入才算替换了 rec

  • 出厂 Android13 开始不在将将 Ramdisk 放在boot分区,单划了init_boot分区
  • 所有的动态分区都将system, vendor, odm等合并为super分区,并区分了fastbootfastbootd(单独的以上分区需要后者才能刷入,前者只能刷入super)

VAB 和 AB 动态分区的区别#

  • AB 动态分区架构中的system_a,system_b, boot_a, boot_b等均存在,而 VAB 架构中只有*_a是真实存在的,切换分区不过是重命名的过程
  • VAB 架构中多了system_ext_asystem_ext_b两个分区

常用指令#

常用 adb 命令#

adb devices ##查看连接设备
adb reboot  ##重启到系统
adb reboot recovery ##重启到recovery模式
adb reboot bootloader ##重启到bootloader(fastboot模式)
adb reboot fastboot ##重启到fastbootd
adb reboot edl ##重启到EDL
adb sideload <path-to-update.zip> ##通过adb更新系统, 刷第三方rom(注意需要和rec配套, 在recovery模式下进行)

常用 fastboot 命令#

fastboot devices ##查看连接设备
fastboot oem unlock ##bl解锁(解锁前往往要在开发者选项中打开oem解锁)
fastboot oem lock ##bl上锁(非必要不上锁)
fastboot oem device-info  ##查询bootloader分区解锁状况
fastboot reboot  ##重启到系统
fastboot reboot bootloader ##重启到bootloader(fastboot模式)
fastboot reboot fastboot ##重启到fastbootd
fastboot reboot edl ##重启到EDL
fastboot erase [分区名称] ##擦除命令
fastboot format [分区名称] ##格式化命令
fastboot flash [分区名称] <分区路径> ##刷写分区命令
fastboot flash -w update <path-to-update.zip> ##刷写rom命令

常用模式#

恢复模式 (Recovery)#

简介#

Recovery 模式类似于 Windows 下的 PE,是 Android 用于安装系统更新的一种模式.它由一个带有 RAM disk 的 Linux 内核组成,该内核位于与主 Android 系统不同的分区上. 作用如下:

  • 使用 Android 调试桥 (adb) 更新系统
  • 通过 SD 卡更新系统 (显然对没有 SD 卡的设备无效)
  • 恢复出厂设置
  • 安装分区
  • 运行系统测试 Recovery 需要和使用的系统配套,第三方系统需要刷入第三方 Rec.

Vab 以后机型刷入 Recovery#

Vab 机型并没有传统意义上的单独 Recovery 分区,因此,刷入第三方 Rec 时,应该分别刷入 boot, vendor_boot, dtbo 这三个镜像 (三者配套存在,需要同时刷入), 即:

fastboot flash boot <path-to-boot.zip>
fastboot flash vendor_boot <path-to-vendor_boot.zip>
fastboot flash dtbo <path-to-dtbo.zip>

Vab 以后机型刷入 twrp 十分麻烦, 不再建议使用, 而且闭源 Rec 这种东西懂的都懂🤣.

引导模式 (Fastboot)#

Fastboot 是一个协议和一个同名的工具.它包含在 Android SDK 包中,主要用于通过来自主机的 USB 连接修改闪存文件系统.它要求设备以 Fastboot 模式启动.如果启用该模式,它将接受一组使用命令行通过 USB 发送给它的特定命令. Fastboot 允许从自定义恢复映像启动.Fastboot 不需要在设备上启用 USB 调试.并非所有 Android 设备都启用了快速启动.要使用快速启动,必须​​在启动期间按住特定的组合键.

Android 设备制造商可以选择是否要实施 Fastboot 或其他协议.

Fastboot 比 Recovery 更为底层,需要连接电脑并通过fastboot命令进行操作,见常用 fastboot 命令.常常用来线刷 Rom 或者救砖.

用户空间模式 (Fastbootd)#

Fastbootd 是动态分区机型特有的一个模式,属于 Recovery 分区的功能.(容易发现界面的相似) 动态分区机型以一个super分区囊括了system, vendor, odm等分区,Fastboot 模式只能刷入完整的super, 不能单独刷入system, vendor, odm. 进入 Fastbootd 即可单独刷入他们 (也是 fastboot 命令).
从 Fastboot 重启到 Fastbootd 的指令是fastboot reboot fastboot.

深度刷机模式 (EDL)#

最底层的刷机模式,理论上只要硬件未损坏都可以救回来. 例:Qualcomm HS-USB QDLoader 9008(俗称 9008 模式), 联发科的MediaTek USB Port. 如今大量厂商缩紧了 EDL,导致几乎无法自行使用救砖.

获取 Root#

  1. 解压系统包 (卡刷包,fastboot 线刷包可以直接解压提取)
  • 下载payload-dump-go(网址:解包工具)

  • 将卡刷包中的payload.bin文件放在 payload-dump-go 文件夹内

  • 目录下 cmd 执行payload-dumper-go.exe <path-to-payload.bin>

  • 随后则会提取整个卡刷包,选择所需 (boot.ing或者init_boot.img) 即可

    注意出厂安卓 13 的机型不再将 Ramdisk 放在 Boot 分区, 需要提取的是init_boot.img文件而不是boot.img文件

  1. 将对应 Rom 包中的.img提取出来放到手机中
  2. 在 Magisk 软件中选择选择并修补一个文件
  3. 将修补好的.img文件通过fastboot flash boot <path-to-boot.img> 命令刷入 boot.(一般不需要boot_a 或者 boot_b,官方工具会自动识别分区) (出厂安卓 13 则为fastboot flash init_boot <path-to-init_boot.img>)
  4. fastboot reboot重启到系统

刷入第三方 Rom#

一般第三方 Rom 都有详细教程, 大致分为两类:

  • 线刷包直接fastboot flash -w update <path-to-update.zip>就行
  • 卡刷包则需要
    • 刷入对应的Recovery; (Vab 以后的机型就是刷入boot ,vendor_boot, dtbo这三个镜像)

    某些 ROM 此处提供的boot未必是完整boot,修补时不建议选用,有变砖风险

    • 通过 adb 更新来刷入 (adb sideload命令);
    • 然后recovery中清除数据;

清除数据这点很重要, 限于篇幅文中没能介绍「X 清」

参考资料#

  1. VAB 架构
  2. Google 关于 VAB 的介绍
  3. 维基百科 - 恢复模式
  4. wikipedia-Fastboot
刷机教程
https://will-c137.vercel.app/posts/刷机教程/
作者
Will
发布于
2022-12-22
许可协议
CC BY-NC-SA 4.0