Panoramica del kernel

Il kernel Android è basato su una tecnologia upstream Kerker LTS (Long Term Support) supportato da Linux. Presso Google, LTS i kernel sono combinati con patch specifiche di Android per formare le cosiddette Kernel comuni (ACK) Android.

Gli ACK più recenti (versione 5.4 e successive) sono noti anche come kernel GKI. I kernel GKI supportano separazione tra il codice generic core kernel e indipendente dall'hardware Moduli GKI del specifico per l'hardware moduli dei fornitori.

Il kernel GKI interagisce con i moduli di fornitori specifici dell'hardware che contengono il sistema un chip (SoC) e un codice specifico della scheda. L'interazione tra il kernel GKI e i moduli del fornitore attivata dalla Kernel Module Interface (KMI), composta da elenchi di simboli che identificano e i dati globali richiesti dai moduli del fornitore. La figura 1 mostra il kernel e il fornitore GKI dell'architettura dei moduli:

Architettura GKI
Figura 1. architettura GKI

Glossario del kernel

Questa sezione contiene i termini utilizzati in tutta la documentazione del kernel.

Tipi di kernel

Kenel comune Android (ACK)
Un kernel che si trova a valle di un kernel LTS e che include patch di interesse per Android community che non sono state unite nei kernel Linux principali o supportati a lungo termine (LTS). Gli ACK più recenti (versione 5.4 e successive) sono noti anche come kernel GKI in quanto supportano separazione tra codice del kernel generico e moduli GKI indipendenti dall'hardware.
Kernel AOSP (Android Open Source Project)
Vedi Kenel comune di Android.
Kernel delle caratteristiche
Un kernel per il quale è garantita l'implementazione delle funzionalità di rilascio della piattaforma. Per Ad esempio, in Android 12, i due kernel delle funzionalità erano android12-5.4 e android12-5.10. Non è possibile eseguire il backporting delle funzionalità di Android 12 sui kernel 4.19; l'insieme di caratteristiche sarebbe simile su un dispositivo che è stato lanciato con la versione 4.19 su Android 11 e aggiornato ad Android 12.
kernel core generico
La parte del kernel GKI comune a tutti i dispositivi.
Kernel Image Kernel generico (GKI)
Qualsiasi kernel ACK più recente (5.4 e versioni successive) (al momento solo aarch64). Questo ha 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 Module Interface (KMI)
Vedi kernel GKI.
Avvia kernel
Un kernel valido per l'avvio di un dispositivo per una determinata release della piattaforma Android. Per ad esempio, in Android 12, i kernel di lancio validi erano 4.19, 5.4 e 5.10.
Kinel LTS (Long Term Support) supportato
Un kernel Linux che sia supportato per 2-6 anni. LTS vengono rilasciati una volta all'anno e sono la base per ciascuno ACK di Google.

Tipi di ramo

Ramo kernel KMI ACK
Il ramo per cui vengono creati i kernel GKI. Ad esempio, android12-5.10 e android13-5.15.
Piattaforma Android
Il ramo di sviluppo principale delle funzionalità Android. Quando un nuovo LTS il kernel GKI viene dichiarato upstream, il nuovo kernel GKI corrispondente che si dirama da Android-mainline.
Linea principale di Linux
Ramo di sviluppo principale dei kernel Linux upstream, inclusi i kernel LTS.

Altri termini

Immagine Avvio certificato
Il kernel è stato distribuito in formato binario (boot.img) e poi è stato eseguito in flash sul dispositivo. Questa immagine è certificata, nel senso che contiene certificati incorporati che consentono a Google di verificare che il dispositivo sia 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 i moduli del fornitore sono entrambi tipi di DLKM. I DLKM vengono rilasciati nel mese di .ko e possono essere driver oppure fornire altre funzionalità del kernel.
Progetto GKI
Un progetto Google che affronta la frammentazione del kernel separando il kernel del core comune dal supporto di schede e SoC specifici del fornitore in moduli caricabili.
Immagine del kernel generica (GKI)
Un'immagine di avvio certificata da Google che contiene un kernel GKI creato una struttura di origine ACK ed è adatta per il flashing sulla partizione di avvio un dispositivo Android.
KMI
Un'interfaccia tra il kernel GKI e i moduli del fornitore che consente al fornitore di aggiornamento indipendentemente dal kernel GKI. Questa interfaccia è costituita e i dati globali che sono stati identificati come dipendenze fornitore/OEM utilizzando elenchi di simboli per partner.
Moduli GKI
Moduli del kernel creati da Google che possono essere caricati dinamicamente sui dispositivi, ove applicabile. Questi moduli sono creati come artefatti del kernel GKI e vengono pubblicati insieme a GKI come archivio system_dlkm_staging_archive.tar.gz. Moduli GKI sono firmati da Google utilizzando la coppia di chiavi del tempo di creazione del kernel e sono compatibili solo con con cui sono creati.
Modulo Fornitore
Un modulo specifico per hardware sviluppato da un partner e contenente un SoC e uno specifico per dispositivo funzionalità. Un modulo del fornitore è un tipo di modulo kernel caricabile dinamicamente.

Passaggi successivi