女排世界杯_1966世界杯 - ezrjnk120.com

Android 分区详解

2025-06-26 07:40:41

boot 分区:

此分区包含一个内核映像,使用 mkbootimg 创建。您可以使用虚拟分区直接刷写任意映像,而无需刷写新的 boot 分区。 此分区还包含在 Android 13 之前发布的设备中的通用 ramdisk。

kernel:kernel 虚拟分区通过将新内核映像写入旧内核映像来覆盖内核(zImage、zImage-dtb、Image.gz-dtb)。如果提供的开发内核不兼容,则可能需要使用关联的内核模块更新 vendor、system 或 dtb 分区(如果存在)。ramdisk:ramdisk 虚拟分区通过将新 ramdisk 映像写入旧 ramdisk 映像来覆盖 ramdisk。init_boot 分区:

此分区包含发布时搭载 Android 13 及更高版本的设备的通用 ramdisk。

abl&lk 分区:

ABL 是高通 UEFI(Unified Extensible Firmware Interface)的重要组成部分,位于启动流程的关键节点。它负责接收来自 XBL(eXtensible Boot Loader)的初始化信息,并将这些信息传递给 Linux 内核,完成内核的加载和启动环境的初始化。例如,ABL 会解析启动参数、配置内存和存储设备,确保内核能够正确运行。并集成了fastboot功能,此外,相比于联发科平台特有的lk分区和abl相比,lk更具轻量化。

system 分区:

此分区包含 Android 框架。

system_ext 分区:

由谷歌在 Android 11添加的一个新分区,可以使用 system 资源

product 分区:

许多 OEM 会自定义 AOSP 系统映像,以实现自己的功能并满足运营商的要求。不过,如果进行这类自定义,则无法针对多个软件 SKU 使用单个系统映像。映像必须各不相同,才能支持不同的语言区域、运营商等自定义。如果使用单独的 product 分区来包含自定义项,则可以针对多个软件 SKU 使用单个系统映像(system 分区会托管可在众多软件 SKU 之间共享的通用代码)。vendor 分区会继续托管 SoC 专属 BSP 代码,这类代码可以基于指定 SoC 在多台设备之间共享。

使用单独的分区存在一些弊端,例如,难以管理磁盘空间(应该预留一定的空间满足未来增长的空间需求),以及难以在各分区之间维护稳定的应用二进制接口 (ABI)。

recovery 分区:

此分区会存储在 OTA 过程中启动的恢复映像。支持无缝更新的设备可以将恢复映像存储为 boot 或 init_boot 映像中包含的 ramdisk(而不是单独的映像)。

注意:某些厂商的VAB分区结构设备不包含recovery分区,他们会将recovery分区与boot分区合并,因此当你需要刷入第三方Recovery时需要使用命令:fastboot boot boot.img(具体名称自定)

cache 分区:

此分区会存储临时数据,如果设备使用无缝更新,则此分区是可选的。cache 分区并非必须可从引导加载程序写入,但必须可清空。此分区大小取决于设备类型和 userdata 上的可用空间。通常,50 MB 至 100 MB 就足够了。

misc 分区:

此分区供 recovery 分区使用,大小为 4 KB 或更大。

userdata 分区:

此分区包含用户安装的应用和数据,包括自定义数据。

metadata 分区:

此分区用于在设备使用元数据加密时存储元数据加密密钥。大小为 16 MB 或更大。此分区未经加密,且系统不会对其数据拍摄快照。数据会在设备恢复出厂设置时被清空。此分区的使用受到严格限制。

odm 分区:

此分区包含原始设计制造商 (ODM) 对系统芯片 (SoC) 供应商板级支持包 (BSP) 的自定义设置。利用此类自定义设置,ODM 可以替换或自定义 SoC 组件,并在硬件抽象层 (HAL) 上为板级组件、守护程序和 ODM 特定的功能实现内核模块。此分区是可选的;通常情况下,它用于存储自定义设置,以便设备可以针对多个硬件 SKU 使用单个供应商映像。

dtbo 分区:

dtbo 分区(Device Tree Blob Overlay)是用于存储设备树覆盖文件的分区,其核心作用是动态适配硬件配置并支持系统级功能扩展。设备树是一种描述硬件配置的结构化数据,内核通过它识别芯片外设(如摄像头、传感器、显示屏)的物理地址、接口协议等信息。例如,高通 SoC 的公版设备树(.dtb)由芯片厂商提供,而手机厂商通过dtbo文件叠加定制化配置(如屏幕分辨率、充电协议),最终形成完整的设备树。(这里的设备树和构建类原生所使用的设备树是两个概念,请不要混淆。)

vbmeta 分区:

vbmeta 分区(Verification Metadata)是安全启动(Secure Boot)机制的核心组件,主要用于存储系统分区的验证元数据,确保设备启动过程的完整性和可信性。其功能覆盖签名验证、加密配置、防回滚保护等关键安全环节。所以,在刷入任何非官方分区前,要禁用vbmeta使设备可以正常启动。

odm_dlkm 分区:

此分区专门用于存储 ODM 内核模块。将 ODM 内核模块存储在 odm_dlkm 分区(而不是 odm 分区)中后,无需更新 odm 分区即可更新 ODM 内核模块。

vendor 分区:

此分区包含一些厂商私有的二进制文件以及驱动等内容,用于实现厂商特定功能以及服务,例如图像传感器,音频,显示等,具体作用可以参考于ODM分区,而在各大厂商的系统维护中,如今 一加 (OnePlus),小米(Xiaomi)等厂商也开始使用ODM分区来存放他们的私有驱动文件,即将 /odm 作为另一个 /vendor 分区处理。

vendor_dlkm 分区:

此分区专门用于存储供应商内核模块。将供应商内核模块存储在 vendor_dlkm 分区(而不是 vendor 分区)中后,无需更新 vendor 分区即可更新内核模块。

vendor_boot 分区:

Android 11 引入了通用内核映像 (GKI) 的概念。为了能够使用 GKI 轻松启动任意设备,Android 11 设备使用启动映像头文件版本 3,所有供应商专用信息都已从 boot 分区分离出来并转移到新的 vendor_boot 分区中,也就是在Android11中该分区由一个头文件、供应商 ramdisk 和设备树 blob (DTB) 组成。

而相对的,在安卓12中使用的是版本4,此时该分区由一个头文件、供应商 ramdisk 区段(包含串联起来的所有供应商 ramdisk 片段)、设备树 blob (DTB) 和供应商 ramdisk 表组成。

radio 分区:

此分区包含无线装置映像,只有包含无线装置且在专用分区中存储无线装置专用软件的设备才需要此分区。

tos 分区:

此分区用于存储 Trusty 操作系统的二进制映像文件,仅在设备包含 Trusty 时使用。Trusty 是 Google 的可信执行环境 (TEE) 操作系统实现,与 Android 并行运行。

pvmfw 分区:

此分区会存储受保护的虚拟机固件 (pvmfw),即在受保护的虚拟机中运行的第一个代码。如需了解详情,请参阅受保护的虚拟机固件。