Panoramica del kernel

Il kernel Android è basato su un kernel Linux Long Term Supported (LTS) upstream. In Google, i kernel LTS vengono combinati con patch specifiche per Android per formare i cosiddetti Android Common Kernels (ACK) .

Gli ACK più recenti (versione 5.4 e successive) sono noti anche come kernel GKI in quanto supportano la separazione del codice generico del core kernel indipendente dall'hardware e dei moduli GKI specifici dell'hardware. Il kernel GKI interagisce con i moduli del fornitore specifici dell'hardware contenenti il ​​sistema su un chip (SoC) e il codice specifico della scheda. L'interazione tra il kernel GKI e i moduli del fornitore è abilitata dall'interfaccia del modulo del kernel (KMI) costituita da elenchi di simboli che identificano le funzioni e i dati globali richiesti dai moduli del fornitore. La Figura 1 mostra il kernel GKI e l'architettura del modulo del fornitore: Architettura GKI

Figura 1. Architettura GKI

Glossario del kernel

Questa sezione contiene i termini usati nella documentazione del kernel.

Tipi di kernel

Kernel comune di Android (ACK)
Un kernel che è a valle di un kernel LTS e include patch di interesse per la comunità Android che non sono state unite alla linea principale di Linux o ai kernel LTS (Long Term Supported). Gli ACK più recenti (versione 5.4 e successive) sono noti anche come kernel GKI in quanto supportano la separazione del codice kernel generico indipendente dall'hardware e dei moduli GKI indipendenti dall'hardware.
Kernel del progetto Android Open Source (AOSP).
Vedi Kernel comune di Android.
Funzionalità Kernel
Un kernel per il quale è garantita l'implementazione delle funzionalità di rilascio della piattaforma. Ad esempio, in Android 12, i due kernel delle funzionalità erano android12-5.4 e android12-5.10. Non è possibile eseguire il backport delle funzionalità di Android 12 ai kernel 4.19; il set di funzionalità sarebbe simile a un dispositivo lanciato con 4.19 su R e aggiornato a S).
kernel di base generico
La parte del kernel GKI comune a tutti i dispositivi.
Kernel generico dell'immagine del kernel (GKI).
Qualsiasi kernel ACK più recente (5.4 e superiore) (attualmente solo aarch64). Questo kernel è composto da due parti: il nucleo del kernel GKI con codice comune a tutti i dispositivi e i moduli GKI sviluppati da Google che possono essere caricati dinamicamente sui dispositivi ove applicabile.
Kernel KMI (Kernel Module Interface).
Vedi kernel GKI .
Avvia il kernel
Un kernel valido per l'avvio di un dispositivo per una determinata versione della piattaforma Android. Ad esempio, in Android 12, i kernel di lancio validi erano 4.19, 5.4 e 5.10.
Kernel con supporto a lungo termine (LTS).
Un kernel Linux supportato da 2 a 6 anni. I kernel LTS vengono rilasciati una volta all'anno e costituiscono la base per ciascuno degli ACK di Google .

Tipi di ramo

Ramo del kernel ACK KMI
Il ramo per il quale vengono creati i kernel GKI . Ad esempio, Android12-5.10 e Android13-5.15.
Android-mainline
Il ramo di sviluppo principale per le funzionalità Android. Quando un nuovo kernel LTS viene dichiarato a monte, il nuovo kernel GKI corrispondente viene ramificato da Android-mainline.
Linea principale di Linux
Il ramo di sviluppo principale per i kernel Linux upstream, inclusi i kernel LTS.

Altri termini

Immagine di avvio certificata
Il kernel è stato consegnato in forma binaria ( boot.img ) e lampeggiato sul dispositivo. Questa immagine è certificata nel senso che contiene certificati incorporati in modo che Google possa verificare che il dispositivo venga fornito con un kernel certificato da Google.
Modulo kernel caricabile dinamicamente (DLKM)
Un modulo che può essere caricato dinamicamente durante l'avvio del dispositivo a seconda delle esigenze del dispositivo. GKI e moduli del fornitore sono entrambi tipi di DLKM. I DLKM sono rilasciati in formato .ko e possono essere driver o fornire altre funzionalità del kernel.
Progetto GKI
Un progetto di Google che affronta la frammentazione del kernel separando le funzionalità del kernel di base comuni dal SoC specifico del fornitore e il supporto della scheda in moduli caricabili.
Immagine generica del kernel (GKI)
Un'immagine di avvio certificata da Google che contiene un kernel GKI creato da un albero dei sorgenti ACK ed è adatta per essere visualizzata nella partizione di avvio di un dispositivo Android.
KMI
Un'interfaccia tra il kernel GKI e i moduli del fornitore che consente ai moduli del fornitore di essere aggiornati indipendentemente dal kernel GKI. Questa interfaccia è costituita da funzioni del kernel e dati globali che sono stati identificati come dipendenze fornitore/OEM utilizzando elenchi di simboli per partner.
Moduli GKI
Moduli del kernel creati da Google che possono essere caricati dinamicamente sui dispositivi ove applicabile. Questi moduli sono creati come artefatti del kernel GKI e vengono forniti insieme a GKI come archivio system_dlkm_staging_archive.tar.gz . I moduli GKI sono firmati da Google utilizzando la coppia di chiavi del tempo di compilazione del kernel e sono compatibili solo con il kernel GKI con cui sono stati creati.
Modulo venditore
Un modulo specifico dell'hardware sviluppato da un partner e che contiene SoC e funzionalità specifiche del dispositivo. Un modulo fornitore è un tipo di modulo kernel caricabile dinamicamente.

Qual è il prossimo?