Los dispositivos Android contienen varias particiones o secciones específicas de espacio de almacenamiento que se usan para contener partes específicas del software del dispositivo. Cada partición contiene una imagen de partición (un archivo IMG) o una instantánea de todo el software de la partición. En la Figura 1, se muestra el diseño de las particiones principales en un dispositivo:
Figura 1: Diseño de las particiones principales.
Las particiones se clasifican en tres categorías:
Las particiones del sistema son particiones que se actualizan cuando se actualiza el SO y otras funciones.
system
,boot
yinit_boot
son particiones principales del sistema.Las particiones del proveedor contienen código específico del dispositivo y el hardware que podría nunca actualizarse después del lanzamiento inicial. Las particiones
vendor
,vendor_boot
yodm
son particiones principales del proveedor.Las particiones no actualizables son aquellas cuyo contenido no se actualiza o se actualiza con datos del usuario.
El código en las particiones del sistema y del proveedor puede interactuar con una interfaz estable llamada interfaz del proveedor (VINTF).
Particiones del sistema
A continuación, se muestra una lista de todas las particiones del sistema y su uso:
Partición
boot
Esta partición contiene una imagen genérica del kernel (GKI). Esta partición también contiene el disco RAM genérico en dispositivos lanzados en Android 12 y versiones anteriores. Para obtener más información sobre el ramdisk genérico, consulta Contenido de la imagen de ramdisk genérico.Partición
init_boot
(Android 13 y versiones posteriores). Esta partición contiene un ramdisk genérico. En Android 11 y 12, el disco RAM genérico se encuentra en la particiónboot
.Partición
system
Esta partición contiene la imagen del sistema que se usa para los productos del OEM.Partición
system_ext
Esta partición contiene recursos del sistema y módulos del sistema propietarios que extienden la imagen del sistema común en la particiónsystem
.Partición
system_dlkm
Esta partición contiene módulos de GKI. Para obtener más información sobre esta partición, consulta Implementa una partición del módulo de GKI.Partición
product
Esta partición puede contener módulos específicos del producto que no están agrupados con ninguna otra partición.Partición
pvmfw
Esta partición almacena el firmware de la máquina virtual protegida (pvmfw), que es el primer código que se ejecuta en las VMs protegidas. Para obtener más información, consulta Firmware de máquina virtual protegido.Partición
generic_bootloader
Esta partición contiene el bootloader genérico.
Particiones del proveedor
A continuación, se incluye una lista de todas las particiones de proveedores y su uso:
Partición
vendor_boot
Esta partición contiene el código de inicio específico del proveedor. Para obtener más información, consulta Particiones de inicio del proveedor.Partición
recovery
Esta partición almacena la imagen de recuperación, que se inicia durante el proceso de actualización inalámbrica (OTA). Los dispositivos que admiten actualizaciones sin inconvenientes pueden almacenar las imágenes de recuperación como un ramdisk contenido en la imagenboot
oinit_boot
. Para obtener más información sobre las actualizaciones sin interrupciones, consulta Actualizaciones A/B (sin interrupciones).Partición
vbmeta
Esta partición contiene la información de inicio verificado para todas las particiones. Esta información verifica que las imágenes instaladas en cada partición sean de confianza. Para obtener más información sobre el inicio verificado, consulta Inicio verificado.Partición
vendor
Esta partición contiene cualquier objeto binario específico del proveedor que no sea lo suficientemente genérico como para distribuirlo en AOSP.Partición
vendor_dlkm
Esta partición contiene módulos de kernel del proveedor. Si almacenas los módulos del kernel del proveedor en esta partición en lugar de la particiónvendor
, puedes actualizar los módulos del kernel sin actualizar la particiónvendor
. Para obtener más información, consulta Particiones de DKLM del proveedor y del ODM.Partición
odm
Esta partición contiene personalizaciones del fabricante de diseño original (ODM) para los paquetes de asistencia de placa (BSP) del proveedor del sistema en chip (SoC). Estas personalizaciones permiten a los ODM reemplazar o personalizar componentes del SoC, e implementar módulos de kernel para componentes específicos de la placa, daemons y funciones específicas de los ODM en capas de abstracción de hardware (HAL). Esta partición es opcional. Por lo general, esta partición se usa para contener personalizaciones de modo que los dispositivos puedan usar una sola imagen de proveedor para varios SKU de hardware. Para obtener más información, consulta Particiones de ODM.Partición
odm_dlkm
Esta partición se dedica a almacenar módulos del kernel de ODM. Si almacenas módulos de kernel de ODM en esta partición, en lugar de la particiónodm
, puedes actualizar los módulos de kernel de ODM sin actualizar la particiónodm
. Para obtener más información, consulta Particiones de DKLM del proveedor y del ODM.Partición
radio
Esta partición contiene la imagen de la radio y solo es necesaria para los dispositivos que incluyen una radio con software específico en una partición dedicada.
Particiones no actualizables
A continuación, se incluye una lista de todas las particiones no actualizables y su uso:
Partición
cache
Esta partición contiene datos temporales y es opcional si tu dispositivo usa actualizaciones sin interrupciones. Esta partición no necesita ser escribible desde el bootloader, pero debe poder borrarse. El tamaño de la partición depende del tipo de dispositivo y de la disponibilidad de espacio enuserdata
. Por lo general, 50 a 100 MB son suficientes.Partición
userdata
Esta partición contiene apps y datos instalados por el usuario, incluidos los datos de personalización.Partición
metadata
Si tu dispositivo usa encriptación de metadatos, esta partición contiene la clave de encriptación de metadatos. El tamaño de esta partición es de 16 MB o más, no está encriptada y no se crea una instantánea de sus datos. Esta partición se borra cuando se restablece la configuración de fábrica del dispositivo.
Reglas y recomendaciones de actualización de particiones
Recomendamos actualizar todas las particiones del sistema como un todo y todas las particiones del proveedor como otro todo. Cuando actualizas el conjunto de particiones en su conjunto, puedes probar para verificar que las interfaces entre las imágenes de cada partición permanezcan estables.
Independientemente de cómo actualices tus particiones, se deben actualizar las siguientes debido a dependencias fuertemente vinculadas y a la falta de APIs estables:
- Las particiones
boot
ysystem_dlkm
- las particiones
init_boot
,system
,system_ext
yproduct
Particiones dinámicas
Los dispositivos que ejecutan Android 11 y versiones posteriores pueden admitir particiones dinámicas, que son un sistema de partición de espacio de usuario para Android que te permite crear, cambiar el tamaño o destruir particiones durante las actualizaciones inalámbricas (OTA). Para obtener más información, consulta Particiones dinámicas.
Partición
misc
La partición de recuperación usa esta partición y es de 4 KB o más.Partición
tos
Esta partición contiene la imagen binaria del SO Trusty y solo se usa si el dispositivo incluye Trusty. Para obtener más información, consulta Particiones del SO confiable (TOS).
Variantes de productos de Soong
El sistema de compilación Soong usa variantes de imagen para dividir las dependencias de compilación. Los módulos nativos (/build/soong/cc
) pueden mutar los módulos de proceso del sistema a la variante principal y los módulos de proceso del proveedor a la variante del proveedor. Un módulo en una variante de imagen no puede vincularse a otros módulos en una variante de imagen diferente.
En Android 12 y versiones posteriores, un módulo del sistema con vendor_available: true
crea una variante del proveedor además de la variante principal. Para crear una variante de producto, se debe definir product_available: true
. Algunas bibliotecas de VNDK sin product_available: true
no están disponibles para los módulos de productos.