I dispositivi Android contengono diverse partizioni o sezioni specifiche dello spazio di archiviazione utilizzate per contenere parti specifiche del software del dispositivo. Ogni partizione contiene un'immagine della partizione (un file IMG) o uno snapshot di tutto il software della partizione. La Figura 1 mostra il layout delle partizioni principali su un dispositivo:
Figura 1. Layout delle partizioni principali.
Le partizioni sono classificate in tre categorie:
Le partizioni di sistema sono partizioni che vengono aggiornate quando si aggiorna il sistema operativo e altre funzionalità. Le
system,booteinit_bootsono partizioni di sistema principali.Le partizioni del fornitore contengono codice specifico del dispositivo e dell'hardware che potrebbe non essere mai aggiornato dopo la release iniziale. Le partizioni
vendor,vendor_booteodmsono partizioni del fornitore principali.Le partizioni non aggiornabili sono partizioni i cui contenuti non vengono aggiornati o vengono aggiornati con i dati utente.
Il codice nelle partizioni di sistema e del fornitore può interagire utilizzando un'interfaccia stabile chiamata interfaccia del fornitore (VINTF).
Partizioni di sistema
Di seguito è riportato un elenco di tutte le partizioni di sistema e del loro utilizzo:
Partizione
boot. Questa partizione contiene un'immagine del kernel generico (GKI). Questa partizione contiene anche il ramdisk generico nei dispositivi lanciati in Android 12 e versioni precedenti. Per ulteriori informazioni sul ramdisk generico, consulta Contenuti dell'immagine del ramdisk generico.Partizione
init_boot(Android 13 e versioni successive). Questa partizione contiene un ramdisk generico. In Android 11 e 12, il ramdisk generico si trova nella partizioneboot.Partizione
system. Questa partizione contiene l'immagine di sistema utilizzata per i prodotti OEM.Partizione
system_ext. Questa partizione contiene risorse di sistema e moduli di sistema proprietari che estendono l'immagine di sistema comune nella partizionesystem.Partizione
system_dlkm. Questa partizione contiene i moduli GKI. Per ulteriori informazioni su questa partizione, consulta Implementare una partizione del modulo GKI.Partizione
product. Questa partizione può contenere moduli specifici del prodotto che non sono inclusi in altre partizioni.Partizione
pvmfw. Questa partizione archivia il firmware della macchina virtuale protetta (pvmfw), ovvero il primo codice eseguito nelle VM protette. Per ulteriori informazioni, consulta Firmware della macchina virtuale protetta.Partizione
generic_bootloader. Questa partizione contiene il bootloader generico.
Partizioni del fornitore
Di seguito è riportato un elenco di tutte le partizioni del fornitore e del loro utilizzo:
Partizione
vendor_boot. Questa partizione contiene il codice di avvio specifico del fornitore. Per ulteriori informazioni, consulta Partizioni di avvio del fornitore.Partizione
recovery. Questa partizione archivia l'immagine di ripristino, che viene avviata durante il processo di aggiornamento over-the-air (OTA). I dispositivi che supportano gli aggiornamenti senza interruzioni possono archiviare le immagini di ripristino come ramdisk contenuto nell'bootoinit_bootimmagine. Per ulteriori informazioni sugli aggiornamenti senza interruzioni, consulta Aggiornamenti A/B (senza interruzioni).Partizione
misc. Questa partizione viene utilizzata dalla partizione di ripristino e ha una dimensione di almeno 4 KB.Partizione
vbmeta. Questa partizione contiene le informazioni di avvio verificato per tutte le partizioni. Queste informazioni verificano che le immagini installate in ogni partizione siano attendibili. Per ulteriori informazioni sull' avvio verificato, consulta Avvio verificato.Partizione
vendor. Questa partizione contiene qualsiasi file binario specifico del fornitore e non sufficientemente generico da essere distribuito ad AOSP.Partizione
vendor_dlkm. Questa partizione contiene i moduli del kernel del fornitore. Se memorizzi i moduli del kernel del fornitore in questa partizione anziché nella partizionevendor, puoi aggiornare i moduli del kernel senza aggiornare la partizionevendor. Per ulteriori informazioni, consulta Partizioni DKLM del fornitore e dell'ODM.Partizione
odm. Questa partizione contiene le personalizzazioni del produttore di articoli rivenduti a terzi (ODM) per i pacchetti di supporto della scheda del fornitore di system-on-chip (SoC) (BSP). Queste personalizzazioni consentono agli ODM di sostituire o personalizzare i componenti SoC e di implementare moduli del kernel per componenti, daemon e funzionalità specifici della scheda sui livelli di astrazione hardware (HAL). Questa partizione è facoltativa. In genere, questa partizione viene utilizzata per contenere le personalizzazioni in modo che i dispositivi possano utilizzare una singola immagine del fornitore per più SKU hardware. Per ulteriori informazioni, consulta Partizioni ODM.Partizione
odm_dlkm. Questa partizione è dedicata all'archiviazione dei moduli del kernel ODM. Se memorizzi i moduli del kernel ODM in questa partizione anziché nella partizioneodm, puoi aggiornare i moduli del kernel ODM senza aggiornare la partizioneodm. Per ulteriori informazioni, consulta Partizioni DKLM del fornitore e dell'ODM.Partizione
radio. Questa partizione contiene l'immagine della radio ed è necessaria solo per i dispositivi che includono una radio con software specifico della radio in una partizione dedicata.
Partizioni non aggiornabili
Di seguito è riportato un elenco di tutte le partizioni non aggiornabili e del loro utilizzo:
Partizione
cache. Questa partizione contiene dati temporanei ed è facoltativa se il dispositivo utilizza gli aggiornamenti senza interruzioni. Questa partizione non deve essere scrivibile dal bootloader, ma deve essere cancellabile. Le dimensioni della partizione dipendono dal tipo di dispositivo e dalla disponibilità di spazio suuserdata; in genere, sono sufficienti da 50 a 100 MB.Partizione
userdata. Questa partizione contiene app e dati installati dall'utente, inclusi i dati di personalizzazione.Partizione
metadata. Se il dispositivo utilizza la crittografia dei metadati, questa partizione contiene la chiave di crittografia dei metadati. Le dimensioni di questa partizione sono di almeno 16 MB, non è criptata e i relativi dati non vengono sottoposti a snapshot. Questa partizione viene cancellata quando viene eseguito il ripristino dei dati di fabbrica del dispositivo.
Regole e consigli per l'aggiornamento delle partizioni
Ti consigliamo di aggiornare tutte le partizioni di sistema nel loro insieme e tutte le partizioni del fornitore in un altro insieme. Aggiornando l'insieme di partizioni nel suo complesso, puoi verificare che le interfacce tra le immagini in ogni partizione rimangano stabili.
Indipendentemente dalla modalità di aggiornamento delle partizioni, le seguenti partizioni devono essere aggiornate a causa di dipendenze strettamente accoppiate e della mancanza di API stabili:
- Le partizioni
bootesystem_dlkm - le partizioni
init_boot,system,system_exteproduct
Partizioni dinamiche
I dispositivi con Android 11 e versioni successive possono supportare le partizioni dinamiche, ovvero un sistema di partizionamento dello spazio utente per Android che consente di creare, ridimensionare o eliminare le partizioni durante gli aggiornamenti over-the-air (OTA). Per ulteriori informazioni, consulta Partizioni dinamiche.
Varianti di prodotto Soong
Il sistema di compilazione Soong utilizza le varianti di immagine per dividere le dipendenze di build. I moduli nativi (/build/soong/cc) possono modificare i moduli del processo di sistema nella variante principale e i moduli del processo del fornitore nella variante del fornitore; un modulo in una variante di immagine non può collegarsi ad altri moduli in una variante di immagine diversa.
In Android 12 o versioni successive, un modulo di sistema con vendor_available: true crea una variante del fornitore oltre alla variante principale. Per creare una variante del prodotto, product_available: true deve essere
definito. Alcune librerie VNDK senza product_available: true non sono
disponibili per i moduli di prodotto.