總覽

Android 裝置包含數個磁碟分割,在 啟動程序。

標準分區

  • boot 分區。這個分區含有核心映像檔,已建立 使用 mkbootimg。您可以使用虛擬分區來刷新任一映像檔 而不必刷新啟動分區 這個分區還包含先前啟動的裝置中的一般 ramdisk Android 13。

    • kernel.虛擬 kernel 分區會覆寫核心 (zImagezImage-dtbImage.gz-dtb),方法是將新的核心映像檔寫入舊的 核心映像檔如果提供的開發核心不相容,您可以 您需要更新 vendorsystemdtb 分區 (如有),則更新為 新增關聯核心模組

    • ramdisk。虛擬 ramdisk 分區會覆寫 ramdisk 參數,方法是: 將新的 ramdisk 映像檔寫入舊的 ramdisk 映像檔。

    覆寫作業會決定現有映像檔的開始位置 ,然後將新圖片複製到該位置。新映像檔 (核心或 ramdisk) 可能會大於現有的值;騰出空間 系統啟動載入程式可以按照映像檔移動資料,或是使用 發生錯誤。

  • init_boot 分區。這個分區包含 搭載 Android 13 以上版本的裝置。

  • system 分區。這個分區包含 Android 架構。

  • odm 分區。這個分區包含原始設計製造商 (ODM) 對晶片系統 (SoC) 供應商主機板支援套件 (BSP) 進行自訂。 這類自訂功能可讓 ODM 取代或自訂 SoC 元件。 為主機板專用元件、Daemon 和 硬體抽象層 (HAL) 的 ODM 專屬功能。這個分區為 選用;通常用於包含自訂項目 為多個硬體 SKU 使用單一供應商映像檔。詳情請參閱「ODM 分區

  • odm_dlkm 分區。這個分區專用於儲存 ODM 核心 模組。將 ODM 核心模組儲存在 odm_dlkm 分區 (而非 至 odm 分區),則可更新 ODM 核心模組 不必更新 odm 分區

  • recovery 分區。這個分區會儲存復原映像檔, 會在 OTA 程序期間啟動。支援流暢體驗模式的裝置 更新可將復原映像檔儲存為 bootinit_boot 映像檔包含 ramdisk,而非單獨的 圖片)。

  • cache 分區。這個分區會儲存暫存資料,而且 (選用) 裝置無需順暢更新快取分區 但必須可清除。分區 大小取決於裝置類型和 userdata 空間的可用性。 通常不超過 50 MB 至 100 MB 就足夠了。

  • misc 分區。這個分區可供復原分區使用, 4 KB 以上。

  • userdata 分區。這個分區含有使用者安裝的應用程式 包括自訂資料

  • metadata 分區。這個分區的用途是儲存中繼資料 裝置使用中繼資料時的加密金鑰 加密。大小為 16 MB 以上。未加密,也不會建立資料快照。 裝置恢復原廠設定時會清除當中的資料。這個分區的用量為 嚴格限制

  • vendor 分區。這個分區包含 。如果裝置本身不包含專屬資訊 可以省略這個分區

  • vendor_dlkm 分區。這個分區專門用來儲存供應商 核心模組。在 vendor_dlkm 分區中儲存供應商核心模組 (而非 vendor 分區) 可讓您更新核心 不必更新 vendor 分區

  • radio 分區。這個分區內含無線電圖片,這是必要的 的裝置必須具有無線電特定軟體和 專屬分區

  • tos 分區。這個分區會儲存 Trusty OS 的二進位映像檔 且只有在裝置搭載 Trusty 的情況下才使用。詳情請參閱《服務條款》 分區

  • pvmfw 分區。這個分區會儲存受保護的虛擬機器 韌體 (pvmfw) 是在受保護的 VM 中執行的第一個程式碼。詳情請見 受保護的虛擬機器韌體 ,掌握更多詳細資訊。

動態分區

搭載 Android 11 以上版本的裝置可支援 動態分區是 Android 的使用者空間分區系統 支援在無線更新 (OTA) 期間建立、調整或刪除分區大小 更新。詳情請參閱「動態 分區

指定關鍵分區

如果裝置需要特定分區或資料才能執行,您必須 使用完全受保護或可重新刷新的方式儲存 只要使用 fastboot oem 指令,就能重新建構、提供或擷取。 包括裝置專屬設定、序號、 校正資料等

Android 11 的異動

Android 11 對分割作業進行了多項變更 包括連結程式庫和新 Soong 圖片變化版本的限制。

Android 分區版面配置

圖 1. Android 11 中的分區版面配置

  • 單一系統映像檔 (SSI)。新的概念性圖片,其中包含 systemsystem_ext 張圖片。當資料集擁有相同的分區時 目標裝置的使用者,這些裝置就能共用 SSI 並略過建構 systemsystem_ext 張圖片。

  • system_ext 分區。可使用 system 資源的新分區 並包含具有以下特性的系統模組:

    • 擴充 system 分區中的 Android 開放原始碼計畫系統模組。建議做法 將這類模組上游至 Android 開放原始碼計畫,以便安裝到 system 和分區

    • 封裝原始設備製造商 (OEM) 或 SoC 專用模組。建議您取消套裝組合這類模組 因此可以安裝到 productvendor 分區。

  • system 分區。原始設備製造商 (OEM) 產品使用的通用系統映像檔。三 建議將專屬模組移出 system 分區, 向上串流到 Android 開放原始碼計畫,或將其移至 system_ext 分區。

  • product 分區。這個分區現在可以使用允許的介面 安裝未搭配任何其他元件的產品專屬模組 多個分區

VNDK 相關異動

Vendor Native Development Kit (VNDK) 是安裝在 system 分區中的一組程式庫,且設計為 專為廠商實作 HAL 而設計

  • 在 Android 10 以下版本中,vendor 分區可在以下位置連結至 VNDK 程式庫: system 分區,但無法連結至 system 中的其他程式庫 product 分區中的原生模組可連結至任何程式庫 在 system 分區中。

  • 在 Android 11 以上版本中,productvendor 分區可連結至 system 分區中的 VNDK 程式庫,但無法 system 分區中其他程式庫的連結。

Soong 產品子類

Soong 建構系統使用映像檔變化版本來分割 建構依附元件原生模組 (/build/soong/cc) 可以修改系統 核心變化版本與供應商程序模組 供應商子類;圖片變化版本中的模組無法連結至 不同的圖片變化版本

  • 在 Android 10 以下版本中,系統模組會自動建立核心變化版本。 也可以在其中定義 vendor_available: true,建立供應商變化版本 Android.bp 個檔案;可讓廠商模組連結至系統模組。 VNDK 程式庫是 system 程式庫的供應商變化版本, 定義 vendor_available: true,即可為供應商模組建立供應商變化版本 所含的 Android.bp 檔案 (請參閱 example)。

  • 在 Android 11 中,系統模組也可以 建立產品子類 (以及核心子類和供應商子類) 方法是 定義 vendor_available: true

  • 在 Android 12 以上版本中,系統模組 vendor_available: true 除了核心外,還會建立供應商變化版本 變數。如要建立產品子類,必須為 product_available: true 部分沒有 product_available: true 的 VNDK 程式庫無法 適用於產品模組