Android 设备包括几个分区,它们在启动过程中提供不同的功能。
注意:支持无缝更新的设备每个分区需要一个插槽用于boot 、 system 、 vendor和radio 。
boot分区。此分区包含内核映像,并使用mkbootimg创建。您可以使用虚拟分区直接刷新任一映像,而无需刷新新的引导分区。此分区还包含在 Android 13 之前启动的设备中的通用 ramdisk。
核心。虚拟kernel分区通过在旧内核映像上写入新内核映像来覆盖内核( zImage 、 zImage-dtb 、 Image.gz-dtb )。如果提供的开发内核不兼容,您可能需要使用关联的内核模块更新vendor 、 system或dtb分区(如果存在)。
内存盘。虚拟ramdisk分区通过在旧 ramdisk 映像上写入新 ramdisk 映像来覆盖 ramdisk。
覆盖操作确定 eMMC 中现有镜像的起始位置,并将新镜像复制到该位置。新映像(内核或 ramdisk)可能比现有映像大;为了腾出空间,引导加载程序可以移动图像之后的数据或放弃错误操作。
init_boot分区。此分区包含用于搭载 Android 13 及更高版本的设备的通用 ramdisk。
system分区。此分区包含 Android 框架。
odm分区。此分区包含原始设计制造商 (ODM) 对片上系统 (SoC) 供应商板支持包 (BSP) 的定制。此类定制使 ODM 能够替换或定制 SoC 组件,并为特定于板的组件、守护程序和硬件抽象层 (HAL) 上的 ODM 特定功能实现内核模块。这个分区是可选的;通常,它用于包含自定义,以便设备可以将单个供应商映像用于多个硬件 SKU。有关详细信息,请参阅ODM 分区。
odm_dlkm分区。此分区专用于存储 ODM 内核模块。将 ODM 内核模块存储在odm_dlkm分区(与odm分区相反)可以在不更新odm分区的情况下更新 ODM 内核模块。
recovery分区。此分区存储在 OTA 过程中启动的恢复映像。支持无缝更新的设备可以将恢复映像存储为boot或init_boot映像中包含的 ramdisk(而不是单独的映像)。
cache分区。**此分区存储临时数据,**如果设备使用无缝更新,则该分区是可选的。缓存分区不需要可从引导加载程序写入,但需要可擦除。分区大小取决于设备类型和用户数据空间的userdata ;通常,50 MB–100 MB 就足够了。
misc分区。此分区由恢复分区使用,大小为 4 KB 或更大。
userdata分区。此分区包含用户安装的应用程序和数据,包括自定义数据。
metadata分区。当设备使用元数据加密时,此分区用于存储元数据加密密钥。大小为 16 MB 或更大。它未加密,其数据未快照。当设备恢复出厂设置时,它会被擦除。此分区的使用受到严格限制。
vendor分区。此分区包含任何不可分发到 AOSP 的二进制文件。如果设备不包含专有信息,您可以省略此分区。
vendor_dlkm分区。此分区专用于存储供应商内核模块。将供应商内核模块存储在vendor_dlkm分区(与vendor分区相反)可以在不更新vendor分区的情况下更新内核模块。
radio分区。此分区包含无线电映像,并且只有在专用分区中包含带有无线电特定软件的无线电的设备才需要。
tos分区。此分区存储 Trusty OS 的二进制映像,仅在设备包含 Trusty 时使用。有关详细信息,请参阅TOS 分区。
运行 Android 11 及更高版本的设备可以支持动态分区,这是一种适用于 Android 的用户空间分区系统,可以在无线 (OTA) 更新期间创建、调整大小或销毁分区。有关详细信息,请参阅动态分区。
动态分区是 Android 的用户空间分区系统。
使用此分区系统,您可以在无线下载 (OTA) 更新期间创建、销毁分区或者调整分区大小。
借助动态分区,供应商无需担心各个分区(例如 system、vendor 和 product)的大小。取而代之的是,设备会分配一个 super 分区,其中的子分区可动态调整大小。
各个分区映像不再需要为将来的 OTA 预留空间。
相反,super 中剩余的可用空间还可用于所有动态分区。
如果设备需要特定分区或数据才能运行,您必须将这些分区/数据指定为完全受保护或可重新闪存,这意味着它们可以使用fastboot oem命令重新构建、提供或提取。
这包括诸如每个设备的工厂特定设置、序列号、校准数据等数据。
单一系统映像 (SSI)。包含system和system_ext图像的新概念图像。当这些分区对于一组目标设备是通用的时,这些设备可以共享 SSI 并跳过构建system和system_ext映像。
system_ext分区。可以使用system资源并且可以包含以下系统模块的新分区:
在system分区中扩展 AOSP 系统模块。我们建议将此类模块上传到 AOSP,以便稍后将它们安装到system分区。
捆绑 OEM 或 SoC 特定模块。我们建议取消捆绑此类模块,以便将它们安装到product或vendor分区。
system分区。用于 OEM 产品的通用系统映像。我们建议将专有模块移出system分区,方法是将它们上游到 AOSP 或将它们移到system_ext分区。
product分区。此分区现在可以使用允许的接口来安装未与任何其他分区捆绑的产品特定模块。