在安卓11上,谷歌又研究出了个新玩法:VAB架构(又称虚拟AB分区),而出厂安卓11的新机型,几乎都是VAB架构,似乎是谷歌强制要求的。本帖的目的是,分享我所学习、了解、熟悉到的VAB架构,分享给大家,让各位机友在玩机路上尽量少走弯路、少跑没必要的售后一日游。本帖可能需要一定的玩机知识及经验,如果你看不太懂的话,说明你暂时可能还不会遇到这些问题。好了,废话不多说,我们分析VAB架构之前,我们先来了解一下安卓分区架构历年的发展。先看一张图:
由上图可知,安卓分区架构发展史为:onlyA,AB,onlyA动态分区,AB动态分区,VAB架构。
什么是所谓的VAB架构?
其实就是AB分区,套上了动态分区,再解决了AB分区的空间占用问题。上图中,我列举了一些,刷机时经常会刷写的分区(system,vendor,boot,recovery等等)。userdata分区就是用户分区,格式化data就是格式化的这个分区。需要注意的是,格式化data和清空data,是两个不同的概念,经常会有小白把这两个概念搞混淆。格式化data就是把userdata的分区进行格式化操作,就像你格式化U盘一样,是格式化操作。而清空data,是删除data分区的所有文件及文件夹。当你遇到data挂载不上时,你清空data是没有效果的,这个时候,你需要进行格式化data操作,才能挂载data,所以,这两个不要搞混淆了。
VAB架构中的recovery问题
在VAB架构中,
没有recovery分区!
没有recovery分区!
没有recovery分区!
不要试图使用命令【fastboot flash recovery twrp.img】来刷写twrp,没有任何效果的。
那么既然没有rec分区,那么官方是如何在rec中更新系统的呢?答:recovery分区,被合并到了boot分区中,所以其实还是可以用rec来更新系统的。不过,我们先来讲讲boot.img包含哪些东西:
一个完整的boot.img,它和这几个分区是一套的:
boot(linux内核存放分区),
dtbo(屏幕刷新率控制分区),
recovery(小型恢复系统分区)。
而这三个,在安卓11以前,都是的分别的三个不同分区,其实都是boot.img拆分出来的,被分成了3份。
而到安卓11的时候,boot.img,里面包含了一个Linux内核【Kernel】,一个小型恢复系统【ramdisk】。但是,在这个Liunx内核中,部分配置文件又被从Kernel中,分离出来,变成了一个全新的分区【vendor_boot】,也就是说,安卓11的时候,一个完整的boot.img,变成了这几个分区:
boot(linux内核存放分区),
dtbo(屏幕刷新率控制分区),
vendor_boot(Linux内核中的部分配置文件)
如何正确安装twrp呢?
看下面:
1、首先,一个twrp.img包含:Kernel和ramdisk。
2、其次,一个boot.img包含:Kernel和ramdisk。
3、将twrp.img中的ramdisk,替换进boot分区,覆盖掉boot分区中的ramdisk。
这就是正确的安装twrp方式。说人话在fastboot中,临时加载twrp,然后就进入rec了,这个时候的boot分区并没有被刷写,所以叫做临时加载。在rec的高级中,点击安装twrp,它就会把rec中的ramdisk替换掉boot分区中的ramdisk,然后,twrp安装完成。