Il kernel Android è basato su un kernel Linux Long Term Supported (LTS) upstream. In Google, i kernel LTS vengono combinati con patch specifiche di Android per formare i cosiddetti Android Common Kernel (ACK) .
Gli ACK più recenti (versione 5.4 e successive) sono noti anche come kernel GKI . I kernel GKI supportano la separazione del codice kernel generico indipendente dall'hardware e dei moduli GKI dai moduli del fornitore specifici dell'hardware.
Il kernel GKI interagisce con moduli del fornitore specifici dell'hardware contenenti system on a chip (SoC) e codice specifico della scheda. L'interazione tra il kernel GKI e i moduli del fornitore è abilitata dalla Kernel Module Interface (KMI) composta 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:

Glossario del kernel
Questa sezione contiene i termini utilizzati in tutta la documentazione del kernel.
Tipi di kernel
- Kernel comune 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 Linux o ai kernel LTS (Long Term Supported). Gli ACK più recenti (versione 5.4 e successive) sono noti anche come kernel GKI poiché 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 Android.
- Caratteristica del kernel
- Un kernel per il quale è garantita l'implementazione delle funzionalità di rilascio della piattaforma. Ad esempio, in Android 12, i due kernel di funzionalità erano Android12-5.4 e Android12-5.10. Non è possibile eseguire il backport delle funzionalità di Android 12 sui kernel 4.19; il set di funzionalità sarebbe simile a un dispositivo lanciato con 4.19 su R e aggiornato a S).
- kernel principale 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 versioni successive) (attualmente solo aarch64). Questo kernel è composto da due parti: il kernel GKI principale con codice comune a tutti i dispositivi e i moduli GKI sviluppati da Google che possono essere caricati dinamicamente sui dispositivi ove applicabile.
- Kernel dell'interfaccia del modulo kernel (KMI).
- 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 supportato 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 rami
- ACK ramo del kernel KMI
- Il ramo per il quale vengono creati i kernel GKI . Ad esempio, Android12-5.10 e Android13-5.15.
- Linea principale Android
- 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 formato binario (
boot.img
) ed è stato flashato 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. I moduli GKI e 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 le funzionalità principali comuni del kernel dal SoC specifico del fornitore e dal supporto della scheda in moduli caricabili.
- Immagine kernel generica (GKI)
- Un'immagine di avvio certificata da Google che contiene un kernel GKI creato da un albero sorgente ACK ed è adatta per essere flashata nella partizione di avvio di un dispositivo Android.
- KMI
- Un'interfaccia tra il kernel GKI e i moduli del fornitore che consente l'aggiornamento dei moduli del fornitore 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 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 momento della compilazione del kernel e sono compatibili solo con il kernel GKI con cui sono compilati. - Modulo venditore
- Un modulo specifico dell'hardware sviluppato da un partner e che contiene SoC e funzionalità specifiche del dispositivo. Un modulo del fornitore è un tipo di modulo del kernel caricabile dinamicamente.
Qual è il prossimo?
- Se non hai esperienza con lo sviluppo del kernel Android, potresti iniziare leggendo quanto segue:
- Kernel stabili a lungo termine : background sui kernel LTS upstream che alimentano gli ACK.
- Kernel comuni Android : informazioni sugli ACK.
- Se sei nuovo allo sviluppo del kernel GKI, inizia leggendo Sviluppo GKI .
- Se stai utilizzando una versione del kernel 4.19 o precedente e cerchi la documentazione correlata, fai riferimento alla sezione Panoramica dei kernel precedenti (<=4.19) .