[支线Vol.5专栏版]带你了解,什么是ab什么是vab,安卓架构是什么意思。
你在刷机时,经常会听到 a only、ab、vab、动态分区等字样。
不同的架构,操作又不一样。
那么不同的架构他有什么区别?他又是什么意思?他对使用体验有什么关系?

首先,我们需要先了解Android的分区架构。
Android系统中的分区架构是指将设备的存储空间划分为不同的分区,以存储不同类型的文件和数据。
Android 系统中常见的分区架构有 A Only、AB、Vab、Dynamic Partition 和 Super Partition。
本期将对这些分区架构进行介绍和比较,并介绍OTA机制及其在不同分区架构下的实现流程。

OTA机制
OTA,全称Over-The-Air,在线升级机制。
OTA机制是指通过无线网络下载和安装更新的过程。
OTA更新通常包括操作系统、应用程序和安全补丁等方面。
OTA的基本原理是,设备通过连接到互联网,从服务器下载最新的系统镜像,然后将其写入设备的系统分区。
在更新过程中,设备将会重启到recovery,然后将新的系统映像写入系统分区。更新完成后,设备将会重启到新的系统版本。
OTA机制可以让设备保持最新的系统版本,并提供新功能和修复已知的问题。

A Only 分区方案
A Only 分区方案是 Android 系统中最基本和最简单的分区方案之一。
在 A Only分区方案中,设备只有一个系统分区,即/system分区。这个分区包含了操作系统的核心组件和应用程序,以及一些其他的系统文件。
此外,boot分区包含了引导加载程序,vendor 分区包含了供应商特定文件,userdata 分区包含了用户数据。

OTA流程
OTA更新需要下载整个系统镜像,然后将其写入系统分区。
在更新过程中,设备将会重启到recovery,然后将新的系统映像写入系统分区。更新完成后,设备将会重启到新的系统版本。

优点
简单易于实现
比较稳定和可靠
缺点
系统更新需要中断设备使用,不太灵活

AB 分区方案
AB 分区方案是一种较为常见和标准的分区方案。
在 AB 分区方案中,设备有两个系统分区,即 /system_a和/system_b。
两个分区都包含了操作系统的核心组件和应用程序,以及一些其他的系统文件。
在任何时候,只有一个分区是激活的,即当前正在运行的系统映像所在的分区。
当进行系统更新时,新的系统映像会被写入未激活的分区,更新完成后系统会在下一次重启时自动切换到新的系统映像。

OTA流程
OTA更新需要下载新的系统镜像,然后将其写入未激活的系统分区。
更新完成后,设备将会重启b分区。如果更新失败,设备将会回滚到a分区。

优点
灵活和可靠,可以在不中断设备使用的情况下完成系统更新
具有自动回滚功能,在更新失败时自动回滚到之前的系统映像,以确保设备的稳定性
当一个槽位的系统损坏,可切换至另一槽位使用
而magisk正是使用了该分区布局方案,实现了ota无缝root
缺点
系统分区较多,占用一定的存储空间

VAB 分区方案
VAB 分区方案是在Android12中引入的一种新的分区方案,是在AB分区方案的基础上进行的改进。
VAB 分区方案可以提供更好的系统更新体验和更高的系统稳定性。
VAB架构只有一套可以使用的操作系统,但拥有两个槽位,当你在当前操作系统时,如system_a,此时另外一个操作系统system_b它的数据大小是0KB。

OTA流程
OTA更新需要下载新的系统镜像,然后将其写入未激活的系统分区,重启系统后,另外一个槽位就会被抹除容量

在系统内更新时,更新的系统补丁包,解压存放在data分区,复制一份system_a,并重命名为system_b_tmp,放到data分区的某个隐藏目录中,将下载好的系统更新包,整合进复制出来的system_b_tmp,得到更新完整包system_b_tmp,重启手机,如果成功挂载system_b_tmp,那么就把system_b_tmp替换掉动态分区的system_a,并重命名为system_b,原本0字节的system_b重命名为system_a,并切换至b分区。更新完成。如果system_b_tmp更新失败,则不会动原有的分区,system_a分区依然原样。

优点
更加灵活和可靠,可以在不中断设备使用的情况下完成系统更新
具有自动回滚功能,在更新失败时自动回滚到之前的系统映像,以确保设备的稳定性,与ab架构不同的是,vab架构更新成功后就无法回滚至上一系统。
缺点
目前还不支持所有设备
与ab分区不同的是,ab分区两个槽位是实际存在的,而vab的b分区是0字节虚拟分区,所以若a系统损坏则无法引导,没有第二个系统可以使用。
差异性
VAB架构相较于AB架构,它将更多的分区分成了两套,如odm、system_exl、system_dlkm,使得更新的内容可以变得更多,并且不占用空间大小,因为只有一套系统的容量。
AB架构如果对当前更新内容不满,可以回滚到上一个槽位,这是VAB架构做不到的。

Dynamic Partition 分区方案
Dynamic Partition 分区方案是在 Android 10中引入的一种新的分区方案。
它与 A/B分区方案类似,但是将系统分区划分为更多的子分区,以提供更灵活的系统更新和管理。
Dynamic Partition将系统分区划分为 system、vendor、product、odm、oem 和 product_services等子分区,每个子分区都可以单独进行更新和管理,而不会影响其他子分区。
这种分区方案可以在不同的设备上进行定制,以满足不同的需求。

OTA流程
OTA更新需要下载新的系统镜像,然后将其写入对应的子分区。
在更新过程中,设备将会重启到recovery,然后将新的系统映像写入对应的子分区。
更新完成后,设备将会重启到新的系统版本。

优点
更加灵活和可定制化,可以提供更精细的系统管理和更新
可以适应不同的设备和需求
缺点
目前还不支持自动回滚功能

Super Partition 分区方案
Super Partition 分区方案是在 Android 11中引入的一种新的分区方案。
它将设备的储存空间分为多个物理分区,并将某些分区合并为一个逻辑分区称之为Super动态分区
这种分区方案可以提高设备的性能和可靠性,同时还可以提供更灵活的系统更新和管理。
Super Partition可以自动调整分区大小,以适应不同的设备和需求。

OTA流程
OTA更新需要下载新的系统镜像,然后将其写入对应的物理分区。
在更新过程中,设备将会重启到引导加载程序,然后将新的系统映像写入对应的物理分区。
更新完成后,设备将会重启到新的系统版本。

优点
更加高效和可靠,可以提高设备的性能和稳定性
提供更灵活的系统管理和更新
缺点
目前还不支持自动回滚功能
以下是几种常见设备及其采用的分区方案

需要注意的是,同一款设备在不同地区或运营商可能会采用不同的分区方案,而设备的分区架构也可能会因固件版本而异。
比如:小米10使用的则A only与Dynamic Partition架构方案;小米11使用Vab与Super Partition架构方案
或者,在小米11开始的vab架构,rec与boot合并一个分区,而到了骁龙8开始又将rec分区独立出来。
出厂安卓13的设备将boot分区的Ramdisk文件夹放出独立为一个init_boot分区