Les appareils Android contiennent plusieurs partitions ou sections spécifiques de l'espace de stockage utilisées pour contenir des parties spécifiques du logiciel de l'appareil. Chaque partition contient une image de partition (fichier IMG) ou un instantané de l'ensemble des logiciels de la partition. La figure 1 montre la disposition des partitions principales sur un appareil :
Figure 1 : Disposition des partitions principales.
Les partitions sont classées en trois catégories :
Les partitions système sont des partitions qui sont mises à jour lors de la mise à jour de l'OS et d'autres fonctionnalités.
system
,boot
etinit_boot
sont des partitions système principales.Les partitions du fournisseur contiennent du code spécifique à l'appareil et au matériel qui peut ne jamais être mis à jour après la version initiale. Les partitions
vendor
,vendor_boot
etodm
sont des partitions principales.Les partitions non modifiables sont des partitions dont le contenu n'est pas mis à jour ou est mis à jour avec des données utilisateur.
Le code des partitions système et fournisseur peut interagir à l'aide d'une interface stable appelée interface fournisseur (VINTF).
Partitions système
Vous trouverez ci-dessous la liste de toutes les partitions système et leur utilisation :
partition
boot
. Cette partition contient une image de noyau générique (GKI). Cette partition contient également le ramdisk générique dans les appareils lancés sous Android 12 ou version antérieure. Pour en savoir plus sur le ramdisk générique, consultez Contenu de l'image ramdisk générique.Partition
init_boot
(Android 13 et versions ultérieures) Cette partition contient un ramdisk générique. Dans Android 11 et 12, le ramdisk générique se trouve dans la partitionboot
.partition
system
. Cette partition contient l'image système utilisée pour les produits OEM.partition
system_ext
. Cette partition contient des ressources système et des modules système propriétaires qui étendent l'image système commune dans la partitionsystem
.partition
system_dlkm
. Cette partition contient les modules GKI. Pour en savoir plus sur cette partition, consultez Implémenter une partition de module GKI.partition
product
. Cette partition peut contenir des modules spécifiques à un produit qui ne sont regroupés avec aucune autre partition.partition
pvmfw
. Cette partition stocke le micrologiciel de la machine virtuelle protégée (pvmfw), qui est le premier code à s'exécuter dans les VM protégées. Pour en savoir plus, consultez Firmware de machine virtuelle protégé.partition
generic_bootloader
. Cette partition contient le bootloader générique.
Partitions du fournisseur
Vous trouverez ci-dessous la liste de toutes les partitions du fournisseur et leur utilisation :
partition
vendor_boot
. Cette partition contient le code de démarrage spécifique au fournisseur. Pour en savoir plus, consultez Partitions de démarrage du fournisseur.partition
recovery
. Cette partition stocke l'image de récupération, qui est démarrée lors du processus de mise à jour Over The Air (OTA). Les appareils compatibles avec les mises à jour continues peuvent stocker les images de récupération sous forme de ramdisk contenu dans l'imageboot
ouinit_boot
. Pour en savoir plus sur les mises à jour continues, consultez Mises à jour A/B (continues).partition
vbmeta
. Cette partition contient les informations de démarrage sécurisé pour toutes les partitions. Ces informations permettent de vérifier que les images installées dans chaque partition sont fiables. Pour en savoir plus sur le démarrage validé, consultez Démarrage validé.partition
vendor
. Cette partition contient tous les binaires spécifiques au fournisseur et qui ne sont pas assez génériques pour être distribués à AOSP.partition
vendor_dlkm
. Cette partition contient les modules du noyau du fournisseur. En stockant les modules du noyau du fournisseur dans cette partition au lieu de la partitionvendor
, vous pouvez mettre à jour les modules du noyau sans mettre à jour la partitionvendor
. Pour en savoir plus, consultez Partitions DKLM des fournisseurs et des ODM.partition
odm
. Cette partition contient les personnalisations du fabricant de conception d'origine (ODM) pour les packages de support de carte (BSP) du fournisseur de système sur une puce (SoC). Ces personnalisations permettent aux ODM de remplacer ou de personnaliser les composants SoC, et d'implémenter des modules de noyau pour les composants spécifiques à la carte, les daemons et les fonctionnalités spécifiques aux ODM sur les couches d'abstraction matérielle (HAL). Cette partition est facultative. Cette partition est généralement utilisée pour contenir les personnalisations afin que les appareils puissent utiliser une seule image du fournisseur pour plusieurs SKU matériels. Pour en savoir plus, consultez Partitions ODM.partition
odm_dlkm
. Cette partition est dédiée au stockage des modules du noyau ODM. En stockant les modules de noyau ODM dans cette partition au lieu de la partitionodm
, vous pouvez mettre à jour les modules de noyau ODM sans mettre à jour la partitionodm
. Pour en savoir plus, consultez Partitions DKLM des fournisseurs et des ODM.partition
radio
. Cette partition contient l'image radio et n'est nécessaire que pour les appareils qui incluent une radio avec un logiciel spécifique à la radio dans une partition dédiée.
Partitions non modifiables
Vous trouverez ci-dessous la liste de toutes les partitions non modifiables et leur utilisation :
partition
cache
. Cette partition contient des données temporaires et est facultative si votre appareil utilise des mises à jour continues. Cette partition n'a pas besoin d'être accessible en écriture depuis le bootloader, mais elle doit être effaçable. La taille de la partition dépend du type d'appareil et de l'espace disponible suruserdata
. En général, 50 à 100 Mo suffisent.partition
userdata
. Cette partition contient les applications et les données installées par l'utilisateur, y compris les données de personnalisation.partition
metadata
. Si votre appareil utilise le chiffrement des métadonnées, cette partition contient la clé de chiffrement des métadonnées. La taille de cette partition est de 16 Mo ou plus, elle n'est pas chiffrée et ses données ne sont pas instantanées. Cette partition est effacée lorsque la configuration d'usine de l'appareil est rétablie.
Règles et recommandations concernant la mise à jour des partitions
Nous vous recommandons de mettre à jour toutes les partitions système dans leur ensemble et toutes les partitions fournisseur dans leur ensemble. En mettant à jour l'ensemble des partitions, vous pouvez tester et vérifier que les interfaces entre les images de chaque partition restent stables.
Quelle que soit la manière dont vous mettez à jour vos partitions, les partitions suivantes doivent être mises à jour en raison de dépendances étroitement liées et du manque d'API stables :
- Partitions
boot
etsystem_dlkm
- les partitions
init_boot
,system
,system_ext
etproduct
Partitions dynamiques
Les appareils équipés d'Android 11 ou version ultérieure peuvent prendre en charge les partitions dynamiques, qui sont un système de partitionnement de l'espace utilisateur pour Android. Elles vous permettent de créer, redimensionner ou détruire des partitions lors des mises à jour OTA (Over-The-Air). Pour en savoir plus, consultez Partitions dynamiques.
partition
misc
. Cette partition est utilisée par la partition de récupération et est d'au moins 4 ko.partition
tos
. Cette partition contient l'image binaire de Trusty OS et n'est utilisée que si l'appareil inclut Trusty. Pour en savoir plus, consultez Partitions Trusty OS (TOS).
Variantes de produits Soong
Le système de compilation Soong utilise des variantes d'image pour diviser les dépendances de compilation. Les modules natifs (/build/soong/cc
) peuvent modifier les modules de processus système en variante principale et les modules de processus fournisseur en variante fournisseur. Un module d'une variante d'image ne peut pas être associé à d'autres modules d'une variante d'image différente.
Dans Android 12 ou version ultérieure, un module système avec vendor_available: true
crée une variante fournisseur en plus de la variante principale. Pour créer une variante de produit, vous devez définir product_available: true
. Certaines bibliothèques VNDK sans product_available: true
ne sont pas disponibles pour les modules de produit.