Présentation des partitions

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 tous les logiciels de la partition. La figure 1 illustre la mise en page des partitions principales sur un appareil :

Mise en page des partitions principales.

Figure 1 : Mise en page 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 et init_boot sont des partitions système de base.

  • Les partitions du fournisseur contiennent du code spécifique à l'appareil et au matériel qui ne sera peut-être jamais mis à jour après la version initiale. Les partitions vendor, vendor_boot et odm sont des partitions de fournisseurs principales.

  • Les partitions non actualisables 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 du fournisseur peut interagir à l'aide d'une interface stable appelée interface du 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 sur les appareils lancés sous Android 12 ou version antérieure. Pour en savoir plus sur le ramdisk générique, consultez la section Contenu de l'image ramdisk générique.

  • Partition init_boot (Android 13 ou version ultérieure) Cette partition contient un ramdisk générique. Dans Android 11 et 12, le ramdisk générique se trouve dans la partition boot.

  • 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 partition system.

  • Partition system_dlkm. Cette partition contient des 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 au produit qui ne sont associés à aucune autre partition.

  • Partition pvmfw. Cette partition stocke le micrologiciel de la machine virtuelle protégée (pvmfw), qui est le premier code exécuté dans les VM protégées. Pour en savoir plus, consultez la section Micrologiciel 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 la section 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 fluides peuvent stocker les images de récupération en tant que ramdisk contenu dans l'image boot ou init_boot. Pour en savoir plus sur les mises à jour fluides, consultez la section Mises à jour A/B (fluides).

  • Partition vbmeta. Cette partition contient les informations de démarrage validé pour toutes les partitions. Ces informations permettent de vérifier que les images installées dans chaque partition sont approuvées. Pour en savoir plus sur le démarrage validé, consultez la section 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 à l'AOSP.

  • Partition vendor_dlkm. Cette partition contient les modules du kernel du fournisseur. En stockant les modules de kernel du fournisseur dans cette partition au lieu de la partition vendor, vous pouvez mettre à jour les modules de kernel sans mettre à jour la partition vendor. Pour en savoir plus, consultez la section Partitions DKLM du fournisseur et de l'OEM.

  • Partition odm. Cette partition contient les personnalisations du fabricant d'appareils d'origine (ODM) pour les packages de prise en charge de carte (BSP) des fournisseurs de systèmes sur une puce (SoC). Ces personnalisations permettent aux ODM de remplacer ou de personnaliser les composants SoC, et d'implémenter des modules de kernel pour les composants, les daemons et les fonctionnalités spécifiques à l'ODM sur les couches d'abstraction matérielle (HAL). Cette partition est facultative. En règle générale, cette partition est utilisée pour contenir des personnalisations afin que les appareils puissent utiliser une seule image du fournisseur pour plusieurs SKU matériels. Pour en savoir plus, consultez la section Partitions ODM.

  • Partition odm_dlkm. Cette partition est dédiée au stockage des modules de kernel ODM. En stockant les modules de noyau ODM dans cette partition au lieu de la partition odm, vous pouvez mettre à jour les modules de noyau ODM sans mettre à jour la partition odm. Pour en savoir plus, consultez la section Partitions DKLM du fournisseur et de l'OEM.

  • 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 actualisables

Vous trouverez ci-dessous la liste de toutes les partitions non actualisables et leur utilisation :

  • Partition cache. Cette partition contient des données temporaires et est facultative si votre appareil utilise des mises à jour fluides. Cette partition n'a pas besoin d'être accessible en écriture à partir du bootloader, mais doit être effaçable. La taille de la partition dépend du type d'appareil et de l'espace disponible sur userdata. En règle générale, 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 enregistrées. Cette partition est effacée lorsque la configuration d'usine de l'appareil est rétablie.

Règles et recommandations de mise à jour des partitions

Nous vous recommandons de mettre à jour l'ensemble des partitions système et l'ensemble des partitions du fournisseur. En mettant à jour l'ensemble des partitions dans son ensemble, vous pouvez 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 associées et de l'absence d'API stables :

  • Partitions boot et system_dlkm
  • les partitions init_boot, system, system_ext et product

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 qui vous permet de créer, de redimensionner ou de détruire des partitions lors des mises à jour OTA (Over-the-Air). Pour en savoir plus, consultez la section Partitions dynamiques.

  • Partition misc. Cette partition est utilisée par la partition de récupération et est de 4 ko ou plus.

  • Partition tos. Cette partition contient l'image binaire de l'OS Trusty et n'est utilisée que si l'appareil inclut Trusty. Pour en savoir plus, consultez la section Partitions TOS (Trusty OS).

Variantes de produits Soong

Le système de compilation Soong utilise des variantes d'images pour diviser les dépendances de compilation. Les modules natifs (/build/soong/cc) peuvent muter les modules de processus système en variante de base et les modules de processus du fournisseur en variante du fournisseur. Un module d'une variante d'image ne peut pas être associé à d'autres modules d'une autre variante d'image.

Dans Android 12 ou version ultérieure, un module système avec vendor_available: true crée une variante du fournisseur en plus de la variante de base. Pour créer une variante de produit, product_available: true doit être défini. Certaines bibliothèques VNDK sans product_available: true ne sont pas disponibles pour les modules de produits.