O kernel do Android é baseado em um kernel de suporte de longo prazo (LTS, na sigla em inglês) do Linux. No Google, os kernels LTS são combinados com patches específicos do Android para formar os kernels comuns do Android (ACKs, na sigla em inglês).
Os ACKs são criados no repositório kernel/common. Esse repositório é um superconjunto do kernel do Linux upstream, com patches adicionais específicos do Android.
Os ACKs 5.10 e versões mais recentes também são conhecidos como *kernels de imagem genérica do kernel (GKI, na sigla em inglês). Os kernels de GKI oferecem suporte à separação do código do kernel genérico principal independente de hardware e dos módulos de GKI dos módulos de fornecedor específicos de hardware.
A interação entre o kernel de GKI e os módulos de fornecedor é ativada pela interface de módulo do kernel (KMI, na sigla em inglês) , que consiste em listas de símbolos que identificam as funções e os dados globais exigidos pelos módulos de fornecedor. A Figura 1 mostra a arquitetura do kernel de GKI e do módulo de fornecedor:

Figura 1. Arquitetura do kernel de GKI e do módulo de fornecedor.
Glossário do kernel
A seguir, confira os termos usados na documentação do kernel.
Tipos de kernel
- Kernel comum do Android (ACK, na sigla em inglês)
- Um kernel que é downstream de um kernel LTS e inclui patches importantes para a comunidade Android. Esses patches não foram mesclados no kernel principal do Linux ou nos kernels GKI de longo prazo.
Os kernels com versões 5.10 e mais recentes também são chamados de kernels de imagem genérica do kernel (GKI, na sigla em inglês).
- Kernel do Android Open Source Project (AOSP)
- Consulte Kernel comum do Android.
Os recursos do Android 12 não podem ser backportados para kernels 4.19.O conjunto de atributos seria semelhante a um dispositivo lançado com o Android 11 e atualizado para o Android 12.
- Kernel de imagem genérica do kernel (GKI, na sigla em inglês)
Qualquer kernel ACK 5.10 e mais recente(somente aarch64). O kernel de GKI tem estas duas partes:
Kernel genérico : a parte do kernel de GKI que é comum a todos os dispositivos.
Módulos de GKI : módulos do kernel criados pelo Google que podem ser carregados dinamicamente em dispositivos quando aplicável. Esses módulos são criados como artefatos do kernel de GKI e são entregues junto com a GKI como o arquivo
system_dlkm_staging_archive.tar.gz. Os módulos de GKI são assinados pelo Google usando o par de chaves de tempo de build do kernel e são compatíveis apenas com o kernel de GKI com que foram criados.
- Kernel de interface de módulo do kernel (KMI, na sigla em inglês)
Consulte Kernel de GKI.
- Kernel de suporte de longo prazo (LTS, na sigla em inglês)
Um kernel do Linux com suporte de 2 a 6 anos. Os kernels LTS são lançados uma vez por ano e são a base de cada um dos kernels comuns do Android do Google.
Tipos de ramificação
- Ramificação do kernel ACK KMI
- A ramificação para a qual os kernels de GKI são criados. Os nomes das ramificações correspondem às versões do kernel, como
android15-6.6. - Android-mainline
- A principal ramificação de desenvolvimento para recursos do Android. Quando um novo kernel LTS é declarado upstream, o novo kernel de GKI correspondente é ramificado do android-mainline.
Kernel principal do Linux : a principal ramificação de desenvolvimento para os kernels do Linux upstream, incluindo kernels LTS.
Outros termos
- Imagem de inicialização certificada
- O kernel entregue em formato binário (
boot.img) e instalado no dispositivo. Essa imagem é considerada certificada porque contém certificados incorporados para que o Google possa verificar se o dispositivo é enviado com um kernel certificado pelo Google. - Módulo de kernel carregável dinamicamente (DLKM, na sigla em inglês)
- Um módulo que pode ser carregado dinamicamente durante a inicialização do dispositivo, dependendo das necessidades dele. Os módulos de GKI e de fornecedor são tipos de DLKMs. Os DLKMs são lançados no formato
.koe podem ser drivers ou fornecer outras funcionalidades do kernel. - Projeto GKI
- Um projeto do Google que aborda a fragmentação do kernel separando a funcionalidade comum do kernel principal do SoC específico do fornecedor e o suporte da placa em módulos carregáveis.
Imagem genérica do kernel (GKI, na sigla em inglês) : uma imagem de inicialização certificada pelo Google que contém um kernel de GKI criado em uma árvore de origem ACK e é adequada para ser instalada na partição de inicialização de um dispositivo Android.
- Interface de módulo do kernel (KMI, na sigla em inglês)
- Uma interface entre o kernel de GKI e os módulos de fornecedor que permite que os módulos de fornecedor sejam atualizados de forma independente do kernel de GKI. Essa interface consiste em funções do kernel e dados globais que foram identificados como dependências de fornecedor/OEM usando listas de símbolos por parceiro.
- Módulo de fornecedor
- Um módulo específico de hardware desenvolvido por um parceiro e que contém funcionalidades específicas do SoC e do dispositivo. Um módulo de fornecedor é um tipo de módulo de kernel carregável dinamicamente.
A seguir
Se você não tem experiência com o desenvolvimento do kernel do Android, comece lendo o seguinte:
- Kernels estáveis de longo prazo - informações sobre os kernels LTS upstream que alimentam os ACKs.
- Kernels comuns do Android: informações sobre ACKs.
Se você não tem experiência com o desenvolvimento do kernel de GKI, comece lendo Desenvolvimento de GKI.