Este documento contém perguntas frequentes sobre o kernel do Android, também conhecido como kernel de imagem genérica do kernel (GKI, na sigla em inglês). Se você não conhece a terminologia do kernel do GKI, consulte a Visão geral do kernel.
É possível mudar as listas de símbolos da Interface de Módulo do Kernel (KMI, na sigla em inglês) em um kernel estável?
As mudanças que não afetam o KMI atual podem ser adicionadas a kernels congelados. Essas mudanças incluem novas funções exportadas e entradas da lista de símbolos. Para saber mais, consulte Gerenciar listas de símbolos.
Posso mudar as estruturas usadas por módulos do fornecedor em um kernel estável?
Estruturas que fazem parte de uma interface KMI não podem ser alteradas em kernels com um KMI congelado. Antes do congelamento do KMI, essas estruturas podem ser alteradas.
Posso mudar o kernel, desde que não quebre a compatibilidade com o binário ou a origem?
Mudanças que não afetam o KMI podem ser feitas conforme descrito em Patches específicos do Android.
Como a GKI lida com a configuração do kernel?
Para informações sobre a configuração do kernel, consulte Mudanças em gki_defconfig.
Como faço para lidar com correções de bugs upstream para substituições de módulos GKI existentes?
Se você criar um módulo do fornecedor com base em um driver no Kernel comum do Android (ACK), cabe a você garantir que as correções de bugs do upstream e do ACK sejam propagadas para o módulo. Em geral, é melhor usar o kernel e os módulos do GKI sem modificações para que essas atualizações sejam fornecidas de forma consistente pelo Google.
Há testes específicos para GKI?
Há testes do pacote de testes de fornecedor (VTS, na sigla em inglês) que verificam se um build certificado do GKI está instalado e também para aplicar os requisitos do GKI por versão. Por exemplo, há testes VTS do Android 12 para o cabeçalho de inicialização v3 e para verificar a existência de partições necessárias em um dispositivo que executa um kernel 5.10.
Como criar o arquivo de fragmento de defconfig do projeto para builds de dispositivo?
Muitos dispositivos compatíveis com GKI usam um fragmento de configuração para descrever as opções
necessárias, além de gki_defconfig
, para criar os módulos do fornecedor.
Os exemplos que fazem parte da base de código do ACK incluem Cuttlefish e DB845c.
Não há como evitar algumas análises manuais das opções de configuração
para otimizar o fragmento, mas o scripts/diffconfig
das origens do kernel
é útil para comparar os resultados de gki_defconfig
e
gki_defconfig+device.fragment
.
Existe uma solução alternativa para o modprobe tratar - e _ como equivalentes?
A
página de manual do modprobe
contém esta descrição: "modprobe
adiciona ou remove de forma inteligente
um módulo do kernel do Linux: observe que, para conveniência, não há
diferença entre _ e - nos nomes de módulos (a conversão automática de sublinhado
é realizada)." A equipe de GKI adere à convenção upstream padrão. Portanto, as ferramentas do fornecedor ou as convenções de nomenclatura de módulos precisam considerar essa aderência.
Como faço para ativar o debugfs para uso interno?
Para saber como ativar o debugfs, consulte recursos de depuração invasivos downstream.
Como posso resolver ABIs incompatíveis entre o kernel GKI com uma configuração de módulo específica ativada?
ABIs incompatíveis entre o kernel e a configuração do módulo do GKI representam uma dependência de configuração de módulo implícita, em que a ativação de um módulo faz com que uma configuração binária seja criada na imagem do kernel resultante. Entre em contato com a equipe do kernel do Android (kernel-team@android.com) para determinar um caminho a seguir. Depois que a lista de símbolos for determinada, crie um bug no Issue Tracker e faça o upload de uma mudança na lista de símbolos.
Tenho dispositivos compatíveis com a GKI 1.0 em campo com o kernel 5.4 lançado com o Android 11 e 12. Quais opções de upgrade do kernel estão disponíveis e como posso testar esses dispositivos ao fazer upgrade para o Android 12 e 13?
Consulte a matriz de compatibilidade para conferir uma lista de versões de kernel com suporte para versões de lançamento e upgrade. Confira dois exemplos de upgrade:
Exemplo 1:um usuário com um dispositivo que é iniciado com o Android 11 com o
kernel android11-5.4
(GKI 1.0)
pode escolher qualquer uma dessas opções ao fazer upgrade para o Android 12:
Faça upgrade para o kernel
android12-5.10
GKI 2.0 (altamente recomendado).Mantenha o kernel
android11-5.4
.Faça upgrade para o kernel
android12-5.4
.
Exemplo 2:um usuário com um dispositivo que é inicializado com o Android 12 com
o kernel android12-5.4
ou android12-5.10
pode escolher qualquer uma dessas opções
ao fazer upgrade para o Android 13:
Faça upgrade para o kernel
android13-5.10
ouandroid13-5.15
GKI 2.0 (recomendado).Mantenha o kernel
android12-5.4
GKI 1.0.Mantenha o kernel
android12-5.10
GKI 2.0.
Especificamente para testes de compliance do Treble, recomendamos que você faça uma das seguintes ações:
Substitua o kernel do parceiro pelo kernel certificado do GKI 1.0 (
android11-5.4
ouandroid12-5.4
).Enviar com o kernel certificado do GKI 2.0 (
android12-5.10
,android13-5.10
ouandroid13-5.15
), dependendo da sua seleção.
É possível fazer o download dos builds da GKI 2.0 nos builds de lançamento da imagem genérica do kernel (GKI).