Visão geral do kernel

O kernel do Android é baseado em um kernel Linux Long Term Supported (LTS) upstream. No Google, os kernels LTS são combinados com patches específicos do Android para formar o que é conhecido como Android Common Kernels (ACKs) .

Os ACKs mais recentes (versão 5.4 e superior) também são conhecidos como kernels GKI . Os kernels GKI suportam a separação do código do kernel genérico independente de hardware e dos módulos GKI dos módulos de fornecedores específicos de hardware.

O kernel GKI interage com módulos de fornecedores específicos de hardware contendo sistema em um chip (SoC) e código específico de placa. A interação entre o kernel GKI e os módulos do fornecedor é habilitada pela Kernel Module Interface (KMI), que consiste em listas de símbolos que identificam as funções e os dados globais exigidos pelos módulos do fornecedor. A Figura 1 mostra o kernel GKI e a arquitetura do módulo do fornecedor:

arquitetura GKI
Figura 1. Arquitetura GKI

Glossário do kernel

Esta seção contém termos usados ​​em toda a documentação do kernel.

tipos de kernel

Kernel comum do Android (ACK)
Um kernel downstream de um kernel LTS e inclui patches de interesse para a comunidade Android que não foram mesclados na linha principal do Linux ou nos kernels LTS (Long Term Supported). Os ACKs mais recentes (versão 5.4 e superior) também são conhecidos como kernels GKI, pois suportam a separação de código de Kernel genérico agnóstico de hardware e módulos GKI agnósticos de hardware.
Kernel do Android Open Source Project (AOSP)
Consulte Kernel comum do Android.
Kernel do recurso
Um kernel para o qual os recursos de lançamento da plataforma são garantidos para serem implementados. Por exemplo, no Android 12, os dois kernels de recursos eram android12-5.4 e android12-5.10. Os recursos do Android 12 não podem ser transferidos para kernels 4.19; o conjunto de recursos seria semelhante a um dispositivo lançado com 4.19 em R e atualizado para S).
núcleo genérico do kernel
A parte do kernel GKI que é comum em todos os dispositivos.
Kernel de imagem de kernel genérico (GKI)
Qualquer kernel ACK mais recente (5.4 e superior) (atualmente apenas aarch64). Este kernel tem duas partes: o núcleo do kernel GKI com código comum em todos os dispositivos e módulos GKI desenvolvidos pelo Google que podem ser carregados dinamicamente em dispositivos quando aplicável.
Kernel Module Interface (KMI) kernel
Consulte Kernel GKI .
Kernel de lançamento
Um kernel válido para iniciar um dispositivo para uma determinada versão da plataforma Android. Por exemplo, no Android 12, os kernels de inicialização válidos eram 4.19, 5.4 e 5.10.
Kernel com suporte de longo prazo (LTS)
Um kernel do Linux com suporte por 2 a 6 anos. Os kernels LTS são lançados uma vez por ano e são a base para cada um dos ACKs do Google.

Tipos de filiais

Ramificação do kernel ACK KMI
A ramificação para a qual os kernels GKI são criados. Por exemplo, android12-5.10 e android13-5.15.
Android-mainline
O principal ramo de desenvolvimento para recursos do Android. Quando um novo kernel LTS é declarado upstream, o novo kernel GKI correspondente é ramificado de android-mainline.
Linha principal do Linux
O ramo de desenvolvimento primário para os kernels upstream do Linux, incluindo os kernels LTS.

Outros termos

Imagem de inicialização certificada
O kernel entregue em formato binário ( boot.img ) e flasheado no dispositivo. Esta imagem é certificada no sentido de que contém certificados incorporados para que o Google possa verificar se o dispositivo vem com um kernel certificado pelo Google.
Módulo de kernel dinamicamente carregável (DLKM)
Um módulo que pode ser carregado dinamicamente durante a inicialização do dispositivo, dependendo das necessidades do dispositivo. GKI e módulos de fornecedores são ambos tipos de DLKMs. Os DLKMs são lançados no formato .ko e podem ser drivers ou fornecer outras funcionalidades do kernel.
Projeto GKI
Um projeto do Google abordando a fragmentação do kernel, separando a funcionalidade do núcleo comum do SoC específico do fornecedor e o suporte da placa em módulos carregáveis.
Imagem Genérica do Kernel (GKI)
Uma imagem de inicialização certificada pelo Google que contém um kernel GKI criado a partir de uma árvore de origem ACK e é adequada para ser atualizada na partição de inicialização de um dispositivo Android.
KMI
Uma interface entre o kernel GKI e os módulos do fornecedor, permitindo que os módulos do fornecedor sejam atualizados independentemente do kernel GKI. Essa interface consiste em funções de kernel e dados globais que foram identificados como dependências de fornecedores/OEM usando listas de símbolos por parceiro.
Módulos GKI
Módulos de kernel criados pelo Google que podem ser carregados dinamicamente em dispositivos, quando aplicável. Esses módulos são construídos como artefatos do kernel GKI e são fornecidos juntamente com o GKI como o arquivo system_dlkm_staging_archive.tar.gz . Os módulos GKI são assinados pelo Google usando o par de chaves de tempo de compilação do kernel e são compatíveis apenas com o kernel GKI com o qual foram criados.
Módulo do fornecedor
Um módulo específico de hardware desenvolvido por um parceiro e que contém SoC e funcionalidade específica do dispositivo. Um módulo de fornecedor é um tipo de módulo de kernel dinamicamente carregável.

Qual é o próximo?