Perguntas frequentes sobre o kernel do Android

Este documento contém perguntas frequentes sobre o kernel do Android, também conhecido como kernel Generic Kernel Image (GKI). Se você não estiver familiarizado com a terminologia do GKI e do kernel do GKI, consulte Visão geral do kernel .

As listas de símbolos da Kernel Module Interface (KMI) podem ser alteradas em um kernel estável?

As alterações que não afetam o KMI existente podem ser adicionadas aos kernels congelados. Essas alterações incluem novas funções exportadas e entradas na lista de símbolos. Para obter detalhes, consulte Gerenciando listas de símbolos .

Posso alterar as estruturas usadas pelos módulos do fornecedor em um kernel estável?

As 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 alterar o kernel desde que não quebre a compatibilidade binária/fonte?

As alterações que não afetam o KMI podem ser feitas conforme descrito em patches específicos do Android .

Como o GKI lida com a configuração do kernel?

Para obter informações sobre a configuração do kernel, consulte Mudanças em gki_defconfig .

Como lidar com correções de bugs upstream para substituições em módulos GKI existentes?

Se você criar um módulo de fornecedor baseado em um driver no Android Common Kernel (ACK) , cabe a você garantir que as correções de bugs do upstream e do ACK sejam propagadas para o seu módulo. Geralmente, é do seu interesse usar o kernel GKI e os módulos GKI sem modificação, para que essas atualizações sejam fornecidas de forma consistente pelo Google.

Existem testes específicos do GKI?

Existem testes do Vendor Test Suite (VTS) que verificam se uma compilação certificada do GKI está instalada e também para impor os requisitos do GKI por versão. Por exemplo, existem 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 executando um kernel 5.10.

Como crio o arquivo de fragmento defconfig do projeto para compilações de dispositivos?

Muitos dispositivos compatíveis com GKI usam um fragmento de configuração para descrever as opções de configuração necessárias, além de gki_defconfig , para criar os módulos do fornecedor. Exemplos que fazem parte da base de código ACK incluem Cuttlefish e DB845c. Não há como evitar algum exame manual das opções de configuração para otimizar o fragmento, mas scripts/diffconfig das fontes do kernel são úteis para comparar os resultados de gki_defconfig e gki_defconfig+device.fragment .

Existe uma solução alternativa para o modprobe tratar - e _ como equivalente?

A página de manual do modprobe contém esta descrição: " modprobe adiciona ou remove de forma inteligente um módulo do kernel Linux: observe que, por conveniência, não há diferença entre _ e - nos nomes dos módulos (a conversão automática de sublinhado é executada)." A equipe do GKI adere à convenção upstream padrão, portanto, as ferramentas do fornecedor ou as convenções de nomenclatura de módulos devem levar essa adesão em consideração.

Como habilito debugfs para uso interno?

Para obter detalhes sobre como ativar debugfs, consulte recursos de depuração downstream intrusivos .

Como posso resolver ABIs incompatíveis entre o kernel GKI com uma configuração de módulo específica habilitada?

ABIs incompatíveis entre o kernel do GKI e a configuração do módulo representam uma dependência implícita de configuração do módulo, em que a ativação de um módulo faz com que uma configuração binária seja incorporada à 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 carregue uma alteração na lista de símbolos.

Tenho dispositivos compatíveis com GKI 1.0 em campo executando o kernel 5.4 lançado com Android 11 e 12. Quais opções de atualização de kernel estão disponíveis e como posso testar esses dispositivos ao atualizar para Android 12 e 13?

Consulte a matriz de compatibilidade para obter uma lista de versões de kernel suportadas para versões de inicialização e atualização. Aqui estão dois exemplos de atualização.

Exemplo 1: um usuário com um dispositivo iniciado com Android 11 com o kernel android11-5.4 ( GKI 1.0 ) pode escolher qualquer uma destas opções ao atualizar para o Android 12:

  • Atualize para o kernel android12-5.10 GKI 2.0 (altamente recomendado).

  • Mantenha o kernel android11-5.4 .

  • Atualize para o kernel android12-5.4 .

Exemplo 2: um usuário com um dispositivo iniciado com Android 12 com o kernel android12-5.4 ou android12-5.10 pode escolher qualquer uma destas opções ao atualizar para o Android 13:

  • Atualize para o kernel android13-5.10 ou android13-5.15 GKI 2.0 (altamente recomendado).

  • Mantenha o kernel android12-5.4 GKI 1.0 .

  • Mantenha o kernel android12-5.10 GKI 2.0 .

Especificamente para testes de conformidade do Treble, recomendamos que você faça o seguinte:

  • Substitua o kernel parceiro pelo kernel GKI 1.0 certificado ( android11-5.4 ou android12-5.4 ).

  • Fornecido com o kernel GKI 2.0 certificado ( android12-5.10 , android13-5.10 ou android13-5.15 ) dependendo da sua seleção.

Você pode fazer download de compilações do GKI 2.0 em compilações de versão da Generic Kernel Image (GKI) .