Questo documento contiene le domande frequenti sul kernel Android, noto 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 dell'interfaccia del modulo del kernel (KMI) possono essere modificati in un kernel stabile?
Le modifiche che non influiscono sul KMI esistente possono essere aggiunte ai kernel congelati. Queste modifiche includono nuove funzioni esportate e voci dell'elenco dei 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 una KMI bloccata. Prima del blocco del KMI, queste strutture possono essere modificate.
Posso modificare il kernel a condizione che non interrompa la compatibilità binaria o del codice sorgente?
Le modifiche che non influiscono sull'intent integrato possono essere apportate come descritto nelle patch specifiche per Android.
In che modo GKI gestisce la configurazione del kernel?
Per informazioni sulla configurazione del kernel, consulta la sezione Modifiche a gki_defconfig.
Come faccio a gestire le correzioni di bug upstream per le sovrascritture dei moduli GKI esistenti?
Se crei un modulo fornitore basato su un driver in Android Common Kernel (ACK), spetta a te assicurarti che le correzioni di bug upstream e ACK vengano propagate al tuo modulo. In genere, è nel tuo interesse utilizzare il kernel GKI e i moduli GKI senza modifiche, in modo che questi aggiornamenti vengano forniti in modo coerente da Google.
Esistono test specifici per GKI?
Esistono test della Vendor Test Suite (VTS) che verificano che sia installata una build GKI certificata e che applicano i requisiti GKI per 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 frammento di defconfig del progetto per le build dei dispositivi?
Molti dispositivi conformi a GKI utilizzano un frammento di configurazione per descrivere le opzioni di configurazione necessarie, oltre a gki_defconfig
, per creare i moduli del fornitore.
Esempi che fanno parte del codebase ACK includono Cuttlefish e DB845c.
Non è possibile evitare un esame manuale di alcune opzioni di configurazione
per ottimizzare il frammento, ma scripts/diffconfig
dalle origini del kernel
è utile per confrontare i risultati di gki_defconfig
e
gki_defconfig+device.fragment
.
Esiste una soluzione alternativa per modprobe che considera - e _ come equivalenti?
La
pagina man di modprobe
contiene questa descrizione: "modprobe
aggiunge
o rimuove in modo intelligente un modulo dal kernel Linux: tieni presente che per comodità non c'è
alcuna differenza tra _ e - nei nomi dei moduli (viene eseguita la conversione automatica del trattino basso)." Il team GKI rispetta la convenzione upstream standard, pertanto
le convenzioni di denominazione dei moduli o degli strumenti del fornitore devono tenerne conto.
Come faccio ad attivare debugfs per uso interno?
Per informazioni dettagliate sull'attivazione di debugfs, consulta la sezione Funzionalità di debug intrusive downstream.
Come posso risolvere le ABI non corrispondenti tra il kernel GKI con una configurazione di moduli specifica abilitata?
Le 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 la creazione di una configurazione binaria nell'immagine del kernel risultante. Contatta il team del kernel Android (kernel-team@android.com) per determinare un percorso da seguire. Dopo aver determinato l'elenco dei simboli, crea un bug in Issue Tracker e carica una modifica all'elenco dei simboli.