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 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:

Architettura GKI
Figura 1. Architettura GKI

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?