Panoramica del kernel

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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

Gli ACK più recenti (versione 5.4 e successive) sono noti anche come kernel GKI poiché supportano la separazione del codice del kernel core generico indipendente dall'hardware e dei moduli GKI indipendenti dall'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 ei moduli del fornitore è abilitata dalla Kernel Module Interface (KMI) costituita da elenchi di simboli che identificano le funzioni ei dati globali richiesti dai moduli del fornitore. La Figura 1 mostra il kernel GKI e l'architettura del modulo del fornitore: Kernel GKI e architettura del modulo del fornitore

Figura 1. Kernel GKI e architettura del modulo del fornitore

Glossario del kernel

Questa sezione contiene i termini usati nella 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 nella linea principale di Linux o nei 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 del kernel generico indipendente dall'hardware e dei moduli GKI indipendenti dall'hardware.
Kernel di Android Open Source Project (AOSP).
Vedi kernel comune Android.
Kernel di funzionalità
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 su 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 Generic Kernel Image (GKI).
Qualsiasi kernel ACK più recente (5.4 e versioni successive) (attualmente solo aarch64). Questo kernel ha due parti: il kernel GKI di base con codice comune a tutti i dispositivi e i moduli del kernel GKI sviluppati da Google che possono essere caricati dinamicamente sui dispositivi ove applicabile.
Kernel Module Interface (KMI) kernel
Vedere kernel GKI .
Avvia kernel
Un kernel valido per avviare un dispositivo per una determinata versione della piattaforma Android. Ad esempio, in Android 12, i kernel di avvio 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 rami

Ramo del kernel ACK KMI
Il ramo per il quale vengono compilati 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 a monte, inclusi i kernel LTS.

Altri termini

Immagine di avvio certificata
Il kernel è stato consegnato in forma binaria ( boot.img ) ed è stato eseguito il flashing 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 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à core 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 di origine ACK ed è adatta per essere flashata sulla partizione di avvio di un dispositivo Android.
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 che sono stati identificati come dipendenze fornitore/OEM utilizzando elenchi di simboli per partner.
Modulo del kernel GKI
Un modulo caricabile dinamicamente creato da Google che può essere caricato dinamicamente sui dispositivi ove applicabile. Questi moduli sono costruiti con il kernel GKI e vengono forniti insieme a GKI come immagine system_dlkm . I moduli del kernel GKI sono firmati da Google utilizzando la coppia di chiavi del tempo di compilazione del kernel e sono compatibili solo con il kernel di base generico con cui sono stati compilati. I moduli del kernel GKI sono un tipo di DLKM
.
Modulo fornitore
Un modulo hardware specifico sviluppato da un partner e che contiene SoC e funzionalità specifiche del dispositivo. Un modulo fornitore è un tipo di modulo del kernel caricabile dinamicamente.

Qual è il prossimo?