Partitionen – Übersicht

Android-Geräte enthalten mehrere Partitionen oder bestimmte Speicherbereiche, die bestimmte Teile der Gerätesoftware enthalten. Jede Partition enthält ein Partitions-Image (eine IMG-Datei) oder einen Snapshot der gesamten Software für die Partition. Abbildung 1 zeigt das Layout der Kernpartitionen auf einem Gerät:

Layout der Kernpartitionen.

Abbildung 1: Layout der Kernpartitionen.

Partitionen werden in drei Kategorien unterteilt:

  • Systempartitionen sind Partitionen, die beim Aktualisieren des Betriebssystems und anderer Funktionen aktualisiert werden. system, boot und init_boot sind Kernsystempartitionen.

  • Anbieterpartitionen enthalten geräte- und hardwarespezifischen Code, der nach der Erstveröffentlichung möglicherweise nie aktualisiert wird. Die Partitionen vendor, vendor_boot und odm sind Partitionen des Hauptanbieters.

  • Nicht aktualisierbare Partitionen sind Partitionen, deren Inhalt entweder nicht aktualisiert oder mit Nutzerdaten aktualisiert wird.

Code in System- und Anbieterpartitionen kann über eine stabile Schnittstelle namens Vendor Interface (VINTF) interagieren.

Systempartitionen

Im Folgenden finden Sie eine Liste aller Systempartitionen und ihrer Verwendung:

  • boot-Partition. Diese Partition enthält ein generisches Kernel-Image (GKI). Diese Partition enthält auch das generische RAM-Disk auf Geräten, die mit Android 12 oder niedriger auf den Markt gebracht wurden. Weitere Informationen zu generischen RAM-Disks finden Sie unter Inhalt eines generischen RAM-Disk-Images.

  • init_boot-Partition (Android 13 und höher) Diese Partition enthält ein generisches RAM-Disk. In Android 11 und 12 befindet sich das generische RAM-Disk in der Partition boot.

  • system-Partition. Diese Partition enthält das Systemimage, das für OEM-Produkte verwendet wird.

  • system_ext-Partition. Diese Partition enthält Systemressourcen und proprietäre Systemmodule, die das gemeinsame Systemimage in der system-Partition erweitern.

  • system_dlkm-Partition. Diese Partition enthält GKI-Module. Weitere Informationen zu dieser Partition finden Sie unter GKI-Modulpartition implementieren.

  • product-Partition. Diese Partition kann produktspezifische Module enthalten, die nicht mit anderen Partitionen gebündelt sind.

  • pvmfw-Partition. Auf dieser Partition wird die Firmware der geschützten virtuellen Maschine (Protected Virtual Machine Firmware, pvmfw) gespeichert. Dies ist der erste Code, der in geschützten VMs ausgeführt wird. Weitere Informationen finden Sie unter Geschützte Firmware für virtuelle Maschinen.

  • generic_bootloader-Partition. Diese Partition enthält den generischen Bootloader.

Anbieterpartitionen

Im Folgenden finden Sie eine Liste aller Anbieterpartitionen und ihrer Verwendung:

  • vendor_boot-Partition. Diese Partition enthält anbieterspezifischen Bootcode. Weitere Informationen finden Sie unter Boot-Partitionen von Anbietern.

  • recovery-Partition. Auf dieser Partition wird das Wiederherstellungs-Image gespeichert, das während des Over-the-Air-Aktualisierungsprozesses (OTA) gestartet wird. Auf Geräten, die nahtlose Updates unterstützen, können die Wiederherstellungs-Images als Ramdisk im boot- oder init_boot-Image gespeichert werden. Weitere Informationen zu nahtlosen Updates finden Sie unter A/B-Updates (nahtlose Updates).

  • vbmeta-Partition. Diese Partition enthält die Informationen zum verifizierten Start für alle Partitionen. Anhand dieser Informationen wird bestätigt, dass die in den einzelnen Partitionen installierten Images vertrauenswürdig sind. Weitere Informationen zu Verified Boot finden Sie unter Verified Boot.

  • vendor-Partition. Diese Partition enthält alle Binärdateien, die anbieterspezifisch und nicht generisch genug sind, um für AOSP freigegeben zu werden.

  • vendor_dlkm-Partition. Diese Partition enthält Kernelmodule des Anbieters. Wenn Sie Anbieterkernelmodule in dieser Partition anstelle der vendor-Partition speichern, können Sie Kernelmodule aktualisieren, ohne die vendor-Partition zu aktualisieren. Weitere Informationen finden Sie unter DKLM-Partitionen von Anbietern und ODMs.

  • odm-Partition. Diese Partition enthält Anpassungen von ODMs (Original Design Manufacturers) an Board-Support-Pakete (BSPs) von SoC-Anbietern (System-on-Chip). Durch solche Anpassungen können ODMs SoC-Komponenten ersetzen oder anpassen und Kernelmodule für platinenspezifische Komponenten, Daemons und ODM-spezifische Funktionen auf Hardwareabstraktionsschichten (HALs) implementieren. Diese Partition ist optional. In der Regel enthält diese Partition Anpassungen, damit Geräte ein einzelnes Anbieter-Image für mehrere Hardware-SKUs verwenden können. Weitere Informationen finden Sie unter ODM-Partitionen.

  • odm_dlkm-Partition. Diese Partition ist zum Speichern von ODM-Kernelmodulen vorgesehen. Wenn Sie ODM-Kernelmodule in dieser Partition anstatt in der odm-Partition speichern, können Sie ODM-Kernelmodule aktualisieren, ohne die odm-Partition zu aktualisieren. Weitere Informationen finden Sie unter DKLM-Partitionen von Anbietern und ODMs.

  • radio-Partition. Diese Partition enthält das Radio-Image und ist nur für Geräte erforderlich, die ein Funkschnittstellenmodul mit radiospezifischer Software in einer speziellen Partition enthalten.

Nicht aktualisierbare Partitionen

Im Folgenden finden Sie eine Liste aller nicht aktualisierbaren Partitionen und ihrer Verwendung:

  • cache-Partition. Diese Partition enthält temporäre Daten und ist optional, wenn auf Ihrem Gerät nahtlose Updates verwendet werden. Diese Partition muss nicht über den Bootloader beschreibbar sein, aber löschbar. Die Größe der Partition hängt vom Gerätetyp und vom verfügbaren Speicherplatz auf userdata ab. Normalerweise sind 50 bis 100 MB ausreichend.

  • userdata-Partition. Diese Partition enthält vom Nutzer installierte Apps und Daten, einschließlich Anpassungsdaten.

  • metadata-Partition. Wenn auf Ihrem Gerät die Metadatenverschlüsselung verwendet wird, enthält diese Partition den Metadatenverschlüsselungsschlüssel. Die Größe dieser Partition beträgt mindestens 16 MB, sie ist nicht verschlüsselt und ihre Daten werden nicht per Snapshot gesichert. Diese Partition wird gelöscht, wenn das Gerät auf die Werkseinstellungen zurückgesetzt wird.

Regeln und Empfehlungen für Partitionsupdates

Wir empfehlen, alle Systempartitionen und alle Anbieterpartitionen zusammen zu aktualisieren. Wenn Sie alle Partitionen gleichzeitig aktualisieren, können Sie prüfen, ob die Schnittstellen zwischen den Images in den einzelnen Partitionen stabil bleiben.

Unabhängig davon, wie Sie Ihre Partitionen aktualisieren, müssen die folgenden Partitionen aufgrund enger Abhängigkeiten und fehlender stabiler APIs aktualisiert werden:

  • Die Partitionen boot und system_dlkm
  • die Partitionen init_boot, system, system_ext und product

Dynamische Partitionen

Geräte mit Android 11 und höher unterstützen dynamische Partitionen. Das ist ein Partitionssystem für den Nutzerbereich unter Android, mit dem Sie Partitionen während Over-the-air-Aktualisierungen (OTA) erstellen, ihre Größe ändern oder löschen können. Weitere Informationen finden Sie unter Dynamische Partitionen.

  • misc-Partition. Diese Partition wird von der Wiederherstellungspartition verwendet und hat eine Größe von mindestens 4 KB.

  • tos-Partition. Diese Partition enthält das Binärimage des Trusty-Betriebssystems und wird nur verwendet, wenn das Gerät Trusty enthält. Weitere Informationen finden Sie unter Trusty OS-Partitionen (TOS).

Soong-Produktvarianten

Das Soong-Build-System verwendet Bildvarianten, um Build-Abhängigkeiten aufzuteilen. Native Module (/build/soong/cc) können Systemprozessmodule in die Kernvariante und Anbieterprozessmodule in die Anbietervariante umwandeln. Ein Modul in einer Bildvariante kann nicht mit anderen Modulen in einer anderen Bildvariante verknüpft werden.

Unter Android 12 oder höher wird durch ein Systemmodul mit vendor_available: true zusätzlich zur Kernvariante eine Anbietervariante erstellt. Damit eine Produktvariante erstellt werden kann, muss product_available: true definiert sein. Einige VNDK-Bibliotheken ohne product_available: true sind für Produktmodule nicht verfügbar.