Questo documento contiene le domande frequenti sul kernel di Android, conosciuto anche come kernel Generic Kernel Image (GKI). Se non hai familiarità con la terminologia del kernel GKI e GKI, consulta la panoramica del kernel.
Gli elenchi di simboli della Kernel Module Interface (KMI) possono essere modificati in un kernel stabile?
Le modifiche che non influiscono sul KMI esistente possono essere aggiunte ai kernel bloccati. Queste modifiche includono nuove funzioni esportate e voci dell'elenco di simboli. Per maggiori dettagli, vedi Gestire gli elenchi di simboli.
Posso modificare le strutture utilizzate dai moduli del fornitore in un kernel stabile?
Le strutture che fanno parte di un'interfaccia KMI non possono essere modificate nei kernel con un KMI congelato. Prima del blocco del KMI, queste strutture possono essere modificate.
Posso modificare il kernel purché non venga interrotta la compatibilità con i file binari o con il codice sorgente?
Le modifiche che non influiscono sul KMI possono essere apportate come descritto nella sezione Patch specifiche per Android.
In che modo GKI gestisce la configurazione del kernel?
Per informazioni sulla configurazione del kernel, consulta Modifiche a gki_defconfig.
Come faccio a gestire le correzioni di bug upstream per le sovrascritture ai moduli GKI esistenti?
Se crei un modulo del fornitore basato su un driver in Android Common Kernel (ACK), è tua responsabilità assicurarti che le correzioni di bug di upstream e ACK vengano propagate al tuo modulo. In genere, è preferibile utilizzare il kernel GKI e i moduli GKI senza modifiche, in modo che questi aggiornamenti vengano forniti in modo coerente da Google.
Esistono test GKI specifici?
Esistono test Vendor Test Suite (VTS) che verificano che sia installata una build GKI certificata e che vengano applicati i requisiti GKI per ogni release. Ad esempio, esistono test VTS di Android 12 per l'intestazione di avvio v3 e per verificare l'esistenza delle partizioni richieste in un dispositivo che esegue un kernel 5.10.
Come faccio a creare il file del frammento defconfig del progetto per le build del dispositivo?
Molti dispositivi conformi a GKI utilizzano un frammento di configurazione per descrivere le opzioni di configurazione necessarie, oltre a gki_defconfig
, per compilare i moduli del fornitore.
Alcuni esempi che fanno parte del codebase ACK includono Cuttlefish e DB845c.
Non c'è modo di evitare un esame manuale delle opzioni di configurazione per ottimizzare il frammento, ma il valore scripts/diffconfig
delle origini kernel è utile per confrontare i risultati di gki_defconfig
e gki_defconfig+device.fragment
.
Esiste una soluzione alternativa per considerare modprobe - e _ equivalente?
La
pagina di manuali di modprobe
contiene questa descrizione: "modprobe
aggiunge o rimuove in modo intelligente un modulo dal kernel di Linux: tieni presente che, per comodità, non c'è differenza tra _ e - nei nomi dei moduli (viene eseguita la conversione automatica del trattino basso)." Il team GKI rispetta la convenzione standard upstream, pertanto gli strumenti o le convenzioni di denominazione dei moduli del fornitore devono tenere conto di questa conformità.
Come faccio ad attivare il debugfs per uso interno?
Per informazioni dettagliate sull'attivazione di debugfs, consulta le funzionalità di debug intrusive a valle.
Come faccio a risolvere la mancata corrispondenza delle ABI tra il kernel GKI con una configurazione del modulo specifica abilitata?
ABI non corrispondenti tra il kernel GKI e la configurazione del modulo rappresentano una dipendenza implicita della configurazione del modulo, in cui l'attivazione di un modulo comporta l'inserimento di una configurazione binaria nell'immagine del kernel risultante. Contatta il team del kernel Android (kernel-team@android.com) per stabilire una procedura da seguire. Una volta determinato l'elenco di simboli, crea un bug nel Issue Tracker e carica una modifica nell'elenco dei simboli.
Ho dispositivi conformi a GKI 1.0 sul campo che eseguono il kernel 5.4 lanciato con Android 11 e 12. Quali opzioni di upgrade del kernel sono disponibili e come posso testare questi dispositivi quando eseguo l'upgrade ad Android 12 e 13?
Consulta la matrice di compatibilità per un elenco delle versioni del kernel supportate per le versioni di lancio e di upgrade. Ecco due esempi di upgrade:
Esempio 1:un utente con un dispositivo che viene avviato con Android 11 con il kernel android11-5.4
(GKI 1.0) può scegliere una qualsiasi di queste opzioni quando esegue l'upgrade ad Android 12:
Esegui l'upgrade al kernel GKI 2.0
android12-5.10
(vivamente consigliato).Mantieni il kernel
android11-5.4
.Esegui l'upgrade al kernel
android12-5.4
.
Esempio 2: un utente con un dispositivo lanciato con Android 12 con il kernel android12-5.4
o android12-5.10
può scegliere una di queste opzioni durante l'upgrade ad Android 13:
Esegui l'upgrade al kernel GKI 2.0
android13-5.10
oandroid13-5.15
(opzione vivamente consigliata).Mantieni il kernel
android12-5.4
GKI 1.0.Mantieni il kernel
android12-5.10
GKI 2.0.
In particolare per il test di conformità di Treble, ti consigliamo di eseguire una delle seguenti operazioni:
Sostituisci il kernel del partner con il kernel GKI 1.0 certificato (
android11-5.4
oandroid12-5.4
).Viene fornito con il kernel GKI 2.0 certificato (
android12-5.10
,android13-5.10
oandroid13-5.15
) a seconda della selezione.
Puoi scaricare le build GKI 2.0 dalle build di release dell'immagine generica del kernel (GKI).