當前位置: 華文世界 > 手機

Android搞機進階知識——A/B分區

2023-12-18手機

聲明:由於作者水平有限,內容並不會很深,甚至可能有錯誤,但對刷機來說這些理論基礎是夠用的。

不知道大家有沒有註意到,在較老的機型(多為2019年之前的機型)進行系統更新時,要經過漫長的重新開機,而較新的機型則不需要。

這個跟A/B 系統更新(也稱為無縫更新)有關。上回說到, 在非A/B分區的機型升級系統時,裝置會先重新啟動進入recovery模式,在recovery分區中儲存的獨立的Linux系統來完成系統更新(https://www.toutiao.com/item/7313214484439745036/ )。而A/B系統更新是直接在系統內完成的,重新開機只是從舊的系統切換到了新系統。

那麽,這種無縫更新是如何完成的呢?很簡單,做兩套系統分區,字尾分別是_a和_b。(如下圖所示)

A/B分區

這樣做的好處除了上面所說的可以「無感知」更新以外,如果系統更新發生錯誤,可以回退到之前的系統。

不過,目前的新機使用的多是虛擬A/B分區(Virtual A/B,簡稱V AB)。

(在出廠搭載 Android 11 及更高版本的裝置上,谷歌強制要求廠商使用虛擬 A/B 分區。 )

虛擬A/B分區就是將system、vendor、product(也支持system_ext和o dm分區)融合成super分區,super分區會在內部處理 A/B 槽位,因此不需要單獨的 super_a和 super_b分區。 這樣的好處是可以大幅節省儲存空間。

對刷機的影響:

1.部份機型沒有獨立的recovery分區,recovery需要刷到boot裏面(不一定是直接刷,請參考第三方rec作者的說明)。

2.boot有A和B,可以在系統更新後重新開機之前進行操作來保留root。

3.bootloader模式無法理解動態分區,因此無法對其進行刷寫(但可以直接刷寫super分區)。如果需要單獨刷寫system、vendor、product、system_ext和o dm等分區(包括colorOS的各種my_xxxxx分區),需要在fastbootd模式下進行。

最後,感謝你讀到這裏,搞機相關內容是我最初創作時的大方向,但無奈流量不高,所以鴿了好久,如果你對這方面話題感興趣,請在相關文章的評論區留言。