术语表
1. 9008 模式
指的是高通设备的应急下载模式(EDL, Emergency DownLoad mode),可以通过特定物理按键或者物理按键组合进入,也可以通过工程线,或者在部分设备上使用adb reboot edl这条 USB 调试 命令进入。
进入 9008 模式 后,设备向安装了驱动程序并和它连接的计算机提供一个高速"串口"(实际上能达到 USB3 标准,也可能更快,取决于设备端口和线材配置),可以通过这个端口从设备的内置存储器中读写几乎任何内容。
和早期 PC 的 BIOS 类似,9008 模式 只包含最基本的初始化代码,而不包含对存储器等组件的初始化和通信协议。因此,在使用 9008 模式 的强大功能之前, 必须 先从电脑(通过 Sahara 协议)发送一个小文件,告诉处于 9008 模式 的设备应当怎样和闪存通信、怎样建立后续的高速连接,等等。如果在发送此文件前进行了操作,请 强制重启设备 (按住 电源键 + 音量下键 ) ,并重新进入 9008 模式。
上一段中的文件被俗称为 引导文件 ,正式的名称是 Firehose ,通常的扩展名是 .melf ,群文件夹 神秘引导文件 中的 xbl_s_devprg_ns.melf 就是一个这样的 引导文件 。
2. 900E 模式
如果刷机过程中出现了意外,设备可能会重启到 900E 模式。此模式意为 "设备出现了严重故障"。
此模式被工厂内部测试时用来捕捉内存转储文件,一般用户难以使用。此外,9008 刷机的文件传输功能在这个模式下不可用。要退出此模式,需要设法令设备在重启时进入 9008 模式 ,通常推荐 工程线 。
请注意:进入 900E 不代表着设备 "没救了",只要你能让它进入 9008,一切都会好起来的。
3. 回读
这是英文名词 ReadBack 的中文直译,意为从等待刷机的设备存储中读取某个或某些文件,传输并存储到运行刷机软件的设备中。这个词的定义有点像平时常说的"备份"。
4. 槽位
这是英文名词 "Slot" 的翻译,在 Android 设备中指的是 A 和 B 两个相对独立的,类似于互为备份分区的存在。系统更新会安装到当前未被使用的槽位,如果更新失败,Android 会 自动回滚 到之前使用的槽位。
对于较新式的设备,采用了比 AB 分区(存在 真实的 两个系统槽位)更先进的 VAB 分区以节省存储固件所占用的空间。
5. 经常接触的分区名称:
init_boot: 存储有Ramdisk的分区,LKM模式需要修补的分区名称boot: 存储有Linux内核的分区,GKI模式需要替换的分区名称vbmeta: 存储链式验证分区的信息的分区,LKM模式需要替换的分区名称super:动态分区设备的特性,将system,vendor_a,vendor_b,product_a,product_b几个分区封装在其中,方便系统更新。system: 顾名思义,存放Android 操作系统的分区vendor: 存放厂商驱动程序等内容的分区product: 类似于vendor,但更多用于封装非底层软件
6. 相对不常接触的分区名称:
vendor_boot: 用于存储厂商提供的内核驱动abl:Android Bootloader的存放位置userdata: 用户数据分区metadata: 解密用户数据分区所需密钥的存储位置,想 保住数据救砖 不要刷入其他包中的这个文件
如果你对 Android 的分区感兴趣,可以试试这个网站:柚坛wiki - Android 分区详解提供的文章
7. 动态分区
从 Android 10 开始引入的分区机制。
在引入动态分区前,Android 操作系统 (注意,不是 boot 等更底层的分区)的文件存放在分区表中规定的、固定大小的各个小分区内,例如 system 分区。
由于分区大小不可变,因此厂商只能在下面的选项中二选一:
- 配置较小的系统分区大小,给用户较多的“内部存储空间”。这会导致后期维护时不得不舍弃 OTA 中提供的许多新功能,或者干脆提供更短的维护周期。
这是导致老设备刷入第三方 ROM 时经常需要扩容系统分区的原因。
- 配置较大的系统分区大小来换取完整的 OTA 功能更新和长维护周期。这会导致用户实际可用的存储空间减少,配合A/B分区机制使用时问题更为严重。
动态分区的引入旨在部分解决此问题。
TIP
解决此问题还需要VAB分区机制的支持。
使用动态分区的设备会在分区表中划定一块固定大小的 super 分区,super 分区内套娃若干动态系统分区,例如 system, vendor, system_ext。super预先设置成比较合理的大小,而内部的 system 等分区可以自由调整大小(只要总大小不超过 super 分区可用空间,也就是动态),方便后续更新时提供新功能。
super 分区内的动态分区无法被热挂载为可读可写。
super 分区内的动态分区无法被 fastboot (BootLoader) 单个刷入,要刷入 super 内部的分区,应当使用 FastbootD。
使用 super 分区的设备必然使用 AVB2.0 。
8. A/B分区(无缝系统更新)
NOTE
Google 官方文档:无缝系统更新
A/B分区 是 Google 在 Android 7 引入的分区机制,允许厂商实现无缝系统更新、故障回滚等功能。
具体来说是这样的:
- 引入 A/B分区 之前(A Only 设备)
接收OTA包 -> 重启到 Recovery 应用更新 -> 启动新系统
这个过程中:
需要用户等待 Recovery 完成更新操作,短则一两分钟,长则十多分钟。
且一旦系统更新因为电池亏电等原因意外中断或出错,设备将直接变砖。
缓存分区用来存储 OTA 包,需要保证其有充足空间。
需要 /data 中的空间用于存储更新包。
- 引入 A/B分区 之后
接收OTA包 -> 在操作系统应用更新到另一个插槽(例如B插槽) -> 重启到另一个插槽完成更新
这么做能带来如下好处:
- 用户重启后只需要等待设备加载操作系统而不需要等待应用更新,缩短了服务中断的时间
-安装更新的 IO 负载被设计为较低水平,用户可以在安装更新时几乎不受影响地使用设备。
不需要在缓存分区和 /data 分区预留用于存放 OTA 包的空间。
如果更新出错,只需要重启到之前槽位的旧系统就行(例如最初活动槽位为A,则系统更新将安装在槽位B,重启后如果B槽位的系统有问题,则重新重启到A槽位的旧系统,如没问题,则重启到B槽的新系统)
坏消息是由于存在两个一模一样的分区,底层固件所占用的空间大小增大了很多。
9. VAB分区
NOTE
Google 官方文档:虚拟AB分区
VAB分区方案是对A/B分区方案的增强,它需要和动态分区机制配合使用。下面的内容以简化方式说明其工作机制。
本方案在 super 分区内维护当前系统所使用的分区组(暂时记作 current)和一个用于存放更新镜像的 cow 分区组(本设备具有超级牛力)。
cow 中的内容会在设备进行更新后重启时临时“叠加”在 current 中相同分区的内容上方进行启动测试。如果启动成功,则 cow 分区组内的增量镜像会被合并到 current,合并后 cow 被清空;反之,则直接舍弃 cow 中的内容,重启后利用 current 中的镜像启动系统。
对比传统的 AB分区机制 ,这套方案不需要两个一模一样的插槽。它只需要在动态分区中放置一个普通插槽加上一个可灵活调整大小的更新插槽,且更新插槽在系统正常使用时应当不占用空间,因此极大节省了无缝系统更新带来的存储空间占用。
从 Android 13 开始,VAB机制被最终标准化。
10. LKM
可加载内核模块 的英文简称 (Loadable Kernel Module) ,通过在 init_boot 分区注入一个 Hook 来实现 Root ,优点是方便更新,且不破坏原有内核的功能实现,在存在内核级调度调优的设备上特别有用(?)
11. GKI
通用内核映像 的英文简称 (Generic Kernel Image) ,KernelSU 最初阶段支持的 Root 实现方式,优点是泛用性好,系统更新后不需要做特别的修改便可以直接刷入使用。
TIP
可以将 GKI 理解为一个镜像绑定一个设备(比如 Pro GT,不管存储组合怎样,都可以使用一个镜像),和一个 KernelSU 版本(比如为 KernelSU 1.0.4 编译的镜像不能被用于 KernelSU 2.0.0 )
因此不管系统版本多少、是否是第三方系统,只要内核版本和你安装的 KernelSU 版本不变,可以始终使用同一个镜像。
2025.11:KernelSU 2.x.x 致力于推进安全性改进,群内的已签名镜像会跟上官方更新节奏。2026.01:KernelSU 3.0 起官方不再建议使用 GKI 镜像,但是和安全性及性能问题无关,单纯是为了加快版本构建速度。
12. ADB
Android Debug Bridge 的英文简称,用于实现和授权了 USB 调试 的 Android 操作系统 或 Recovery 的交互。比如 adb reboot edl 可将设备重启到 9008 模式 。
13. AVB2.0
Android 系统对 可信启动 功能的实现,有点像 PC 上的 Secure Boot。此功能按照 vbmeta 中的信息验证其他分区是否被篡改,并读取含有 AVB 页脚 的分区所包含的 摘要 信息,以防止设备运行未经制造商验证的代码。
14. Fastboot
社区惯用说法,事实上常常指的是 BootLoader 模式。它管理后续启动流程的签名验证,并实现从设备底层引导跳转到启动 Linux 内核这一流程的各个操作步骤。在未解锁 BootLoader 的情况下,BootLoader 禁止刷写系统分区,如果强行通过其他手段刷入,将触发 AVB2.0 检测,系统会拒绝启动。
15. FastbootD
用于实现对 super 分区内容的操作,需要解锁 BootLoader 才能刷写。
16. Recovery
Android 系统 的恢复模式,类似于 Windows 系统的 WinRE ,或 Linux 系统的 LiveCD 。它提供了基础的存储访问功能,能够访问和修改设备中除了底层固件分区以外的多数分区,并和电脑通信,读取和发送文件。
联想使用的是 AOSP 的 原生 Recovery ,虽然不如 TWRP 等 第三方 Recovery 友好和强大,但是仍旧能够提供基础的功能。
17. 第一屏
指的是含有 Powered by Android 字样和厂商 Logo 的页面,卡在这一步说明 内核 等文件有问题。
18. 第二屏
指的是显示各大自定义 ROM Logo 的页面,比如 "ZUXOS" ,卡在这一步说明系统配置有问题,或者刷入了不兼容的 模块。