Android 裝置包含多個磁碟分割區,或儲存空間的特定區段,用於存放裝置軟體的特定部分。每個分區都包含分區映像檔 (IMG 檔案),或是分區所有軟體的快照。圖 1 顯示裝置上核心分割區的版面配置:
圖 1. 核心分區的版面配置。
分區分為三類:
系統分割區會在更新作業系統和其他功能時更新。
system
、boot
和init_boot
是核心系統分割區。供應商分割區包含裝置和硬體專屬的程式碼,這些程式碼在初始發布後可能不會更新。
vendor
、vendor_boot
和odm
分區是核心分區。無法更新的分區是指內容未更新或以使用者資料更新的分區。
系統和供應商分割區中的程式碼可透過稱為「供應商介面 (VINTF)」的穩定介面互動。
系統分區
以下列出所有系統分割區及其用途:
boot
分區。這個分割區包含通用核心映像檔 (GKI)。此外,在搭載 Android 12 以下版本的裝置中,這個分割區也包含一般 ramdisk。如要進一步瞭解通用 ramdisk,請參閱「通用 ramdisk 映像檔內容」。init_boot
分割區 (Android 13 以上版本)。這個分割區包含一般 RAM 磁碟。在 Android 11 和 12 中,一般 ramdisk 位於boot
分區。system
分區。這個分割區包含 OEM 產品使用的系統映像檔。system_ext
分區。這個分區包含系統資源和專屬系統模組,可擴充system
分區中的通用系統映像檔。system_dlkm
分區。這個分割區包含 GKI 模組。如要進一步瞭解這個分割區,請參閱「實作 GKI 模組分割區」。product
分區。這個分割區可包含未與任何其他分割區組合的產品專屬模組。pvmfw
分區。這個磁碟分割區會儲存受保護的虛擬機器韌體 (pvmfw),這是受保護的 VM 中執行的第一個程式碼。詳情請參閱「受保護的虛擬機器韌體」。generic_bootloader
分區。這個分割區包含一般啟動載入程式。
供應商分區
以下列出所有供應商分割區及其用途:
vendor_boot
分區。這個分割區包含供應商專屬的開機程式碼。詳情請參閱「供應商啟動分區」。recovery
分區。這個磁碟分割區會儲存復原映像檔,在無線更新 (OTA) 過程中啟動。支援無縫更新的裝置可將復原映像檔儲存為boot
或init_boot
映像檔中包含的 ramdisk。如要進一步瞭解無縫更新,請參閱「A/B (無縫) 更新」一文。vbmeta
分區。這個分區包含所有分區的驗證開機資訊。這項資訊可驗證每個分割區中安裝的映像檔是否值得信賴。如要進一步瞭解驗證開機程序,請參閱「驗證開機程序」。vendor
分區。這個分割區包含任何供應商專屬的二進位檔,且不夠通用,無法發布至 Android 開放原始碼計畫。vendor_dlkm
分區。這個分割區包含供應商核心模組。將供應商核心模組儲存在這個磁碟分割區,而非vendor
磁碟分割區,即可更新核心模組,而不必更新vendor
磁碟分割區。詳情請參閱「供應商和 ODM DKLM 分區」。odm
分區。這個分區包含系統單晶片 (SoC) 供應商主機板支援套件 (BSP) 的原始設計製造商 (ODM) 自訂項目。ODM 可透過這類自訂項目更換或自訂 SoC 元件,並在硬體抽象層 (HAL) 上,為板載特定元件、常駐程式和 ODM 特定功能實作核心模組。這個磁碟分割區為選用。這個磁碟分割區通常用於存放自訂項目,因此裝置可為多個硬體 SKU 使用單一供應商映像檔。詳情請參閱 ODM 分區。odm_dlkm
分區。這個分割區專門用於儲存 ODM 核心模組。將 ODM 核心模組儲存在這個磁碟分割區,而非odm
磁碟分割區,即可更新 ODM 核心模組,而不必更新odm
磁碟分割區。詳情請參閱「供應商和 ODM DKLM 分區」。radio
分區。這個分割區包含無線電映像檔,只有在裝置的專用分割區中包含無線電和無線電專用軟體時,才需要這個分割區。
無法更新的分區
以下列出所有無法更新的分區及其用途:
cache
分區。這個磁碟分割區包含暫時資料,如果裝置使用無縫更新,則為選用項目。這個分割區不需要可從開機載入程式寫入,但必須可清除。分割區大小取決於裝置類型和userdata
的可用空間;通常 50 到 100 MB 就足夠。userdata
分區。這個磁碟分割區包含使用者安裝的應用程式和資料,包括自訂資料。metadata
分區。如果裝置使用中繼資料加密,這個磁碟分割區會包含中繼資料加密金鑰。這個磁碟分割區的大小為 16 MB 以上,且未經過加密,資料也未建立快照。裝置恢復原廠設定時,這個磁碟分割區會遭到清除。
分區更新規則和建議
建議您更新所有系統分割區,以及所有供應商分割區。更新整組分割區後,您就能測試並驗證每個分割區中圖片之間的介面是否保持穩定。
無論您如何更新分割區,下列分割區都必須更新,因為這些分割區有緊密耦合的依附元件,且缺少穩定版 API:
boot
和system_dlkm
分區init_boot
、system
、system_ext
和product
分區
動態分割區
搭載 Android 11 以上版本的裝置可支援動態分割區,這是 Android 的使用者空間分割系統,可讓您在無線 (OTA) 更新期間建立、調整大小或刪除分割區。詳情請參閱「動態分區」。
misc
分區。這個磁碟分割區供復原磁碟分割區使用,大小為 4 KB 以上。tos
分區。這個磁碟分割區包含 Trusty OS 的二進位映像檔,僅在裝置包含 Trusty 時使用。詳情請參閱「Trusty OS (TOS) 分區」。
Soong 產品子類
Soong 建構系統會使用映像檔變體來分割建構依附元件。原生模組 (/build/soong/cc
) 可將系統程序模組變更為核心變體,並將供應商程序模組變更為供應商變體;一個映像檔變體中的模組無法連結至其他映像檔變體中的模組。
在 Android 12 以上版本中,具有 vendor_available: true
的系統模組除了核心變體外,還會建立供應商變體。如要建立產品子類,必須定義 product_available: true
。部分沒有 product_available: true
的 VNDK 程式庫不適用於產品模組。