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:
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:
- Long Term Stable Kernels - Informazioni di base sui kernel LTS upstream che vengono inseriti negli ACK.
- Android Common Kernels - Informazioni di base sugli ACK.
Se non hai mai sviluppato kernel GKI, inizia leggendo Sviluppo di GKI.