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:
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
- Se non hai familiarità con lo sviluppo di un kernel Android, potresti iniziare leggendo la sezione seguenti:
- Kenel stabili a lungo termine - Background sui kernel LTS upstream che vengono inseriti nelle ACK.
- Kenel comuni di Android - Informazioni generali sulle ACK.
- Se non hai familiarità con lo sviluppo del kernel GKI, inizia leggendo sviluppo GKI.
- Se stai usando la versione del kernel 4.19 o precedente e cerchi la documentazione correlata, consulta i nella sezione Panoramica dei kernel (<=4.19).