Panoramica del kernel

Il kernel Android si basa su un kernel Linux con assistenza a lungo termine (LTS) upstream. In Google, i kernel LTS vengono combinati con patch specifiche per Android per formare gli Android Common Kernels (ACK).

I kernel ACK vengono creati dal repository kernel/common. Questo repository è un sovrainsieme del kernel Linux upstream, con patch aggiuntive specifiche per Android.

Gli ACK 5.10 e versioni successive sono noti anche come kernel *generic kernel images (GKI). I kernel GKI supportano la separazione del codice del kernel core generico indipendente dall'hardware e dei moduli GKI dai moduli del fornitore specifici per l'hardware.

L'interazione tra il kernel GKI e i moduli del fornitore è resa possibile dall'interfaccia del modulo kernel (KMI), costituita da elenchi di simboli che identificano le funzioni e i dati globali richiesti dai moduli del fornitore. La Figura 1 mostra l'architettura del kernel GKI e del modulo fornitore:

Architettura del kernel GKI e del modulo fornitore.

Figura 1. Architettura del kernel GKI e del modulo fornitore.

Glossario del kernel

Di seguito sono riportati i termini utilizzati nella documentazione del kernel.

Tipi di kernel

Android Common Kernel (ACK)
Un kernel downstream di un kernel LTS e che include patch importanti per la community Android. Queste patch non sono state unite ai kernel Linux mainline o GKI a lungo termine.

I kernel con versioni 5.10 e successive sono anche chiamati kernel Generic Kernel Image (GKI).

Kernel Android Open Source Project (AOSP)
Consulta Android Common Kernel.

Le funzionalità di Android 12 non possono essere sottoposte a backporting ai kernel 4.19; il set di funzionalità sarebbe simile a un dispositivo lanciato con 4.19 su Android 11 e aggiornato ad Android 12.

Kernel Generic Kernel Image (GKI)

Qualsiasi kernel ACK 5.10 e versioni successive(solo aarch64). Il kernel GKI è composto da due parti:

  • Kernel generico: la parte del kernel GKI comune a tutti i dispositivi.

  • Moduli GKI: moduli del kernel creati da Google che possono essere caricati dinamicamente sui dispositivi, se 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 di compilazione del kernel e sono compatibili solo con il kernel GKI con cui sono stati creati.

Kernel dell'interfaccia del modulo del kernel (KMI)

Vedi kernel GKI.

Kernel con assistenza a lungo termine (LTS)

Un kernel Linux supportato per 2-6 anni. I kernel LTS vengono rilasciati una volta all'anno e sono la base di ciascuno dei kernel comuni Android di Google.

Tipi di filiale

ACK KMI kernel branch
Il ramo per cui vengono creati i kernel GKI. I nomi dei rami corrispondono alle versioni del kernel, ad esempio android15-6.6.
Android-mainline
Il ramo di sviluppo principale per le funzionalità di Android. Quando viene dichiarato un nuovo kernel LTS upstream, il nuovo kernel GKI corrispondente viene creato da android-mainline.

Linux mainline : il ramo di sviluppo principale per i kernel Linux upstream, inclusi i kernel LTS.

Altri termini

Immagine di avvio certificata
Il kernel fornito in formato binario (boot.img) e installato sul dispositivo. Questa immagine è considerata certificata perché contiene certificati incorporati, quindi Google può verificare che il dispositivo venga spedito con un kernel certificato da Google.
Modulo del 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 vengono rilasciati in formato .ko e possono essere driver o fornire altre funzionalità del kernel.
Progetto GKI
Un progetto Google che affronta la frammentazione del kernel separando la funzionalità del kernel core comune dal supporto specifico per SoC e scheda del fornitore in moduli caricabili.

Generic Kernel Image (GKI) : un'immagine di avvio certificata da Google che contiene un kernel GKI creato da un albero di origine ACK ed è adatta per essere caricata nella partizione di avvio di un dispositivo Android.

Interfaccia del modulo kernel (KMI)
Un'interfaccia tra il kernel GKI e i moduli del fornitore che consente di aggiornare i moduli del fornitore indipendentemente dal kernel GKI. Questa interfaccia è costituita da funzioni del kernel e dati globali identificati come dipendenze del fornitore/OEM utilizzando elenchi di simboli per partner.
Modulo fornitore
Un modulo specifico per l'hardware sviluppato da un partner e contenente funzionalità specifiche per SoC e dispositivo. Un modulo fornitore è un tipo di modulo del kernel caricabile dinamicamente.

Passaggi successivi

Se non hai mai sviluppato kernel Android, inizia leggendo quanto segue:

Se non hai mai sviluppato kernel GKI, inizia leggendo Sviluppo di GKI.