Visão geral do kernel

O kernel do Android é baseado em um sistema Kernel do Linux com suporte de longo prazo (LTS): No Google, o LTS Os kernels são combinados com patches específicos do Android para formar o que é conhecido como Kernels comuns (ACKs) do Android.

ACKs mais recentes (versão 5.4 e mais recentes) também são conhecidas como kernels de GKI. Os kernels de GKI dão suporte à separação do código do kernel genérico, independente de hardware, e módulos GKI da específicos de hardware módulos do fornecedor.

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

Arquitetura GKI
Figura 1. arquitetura de GKI

Glossário do kernel

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

Tipos de kernel

Kernel comum do Android (ACK)
Um kernel downstream de um kernel de LTS e inclui patches de interesse para o Android que não foi incorporada aos kernels de linha principal do Linux ou aos kernels com suporte de longo prazo (LTS, na sigla em inglês). ACKs mais recentes (versão 5.4 e mais recentes) também são conhecidas como kernels de GKI, pois dão suporte à separação de códigos genéricos do kernel e módulos GKI independentes de hardware.
Kernel do Android Open Source Project (AOSP)
Consulte Kernel comum do Android.
Kernel de recursos
Um kernel em que os recursos de lançamento da plataforma têm a garantia de serem implementados. Para exemplo, no Android 12, os dois kernels de recurso eram android12-5.4 e android12-5.10. Os recursos do Android 12 não podem ter backport para kernels 4.19. o conjunto de atributos será semelhante em um dispositivo lançado com a versão 4.19 no Android 11 e atualizado para o Android 12.
kernel genérico do núcleo
A parte do kernel de GKI que é comum em todos os dispositivos.
Kernel de imagem genérica do kernel (GKI)
Qualquer kernel ACK mais recente (5.4 e superior) (atualmente apenas aarch64). Isso tem duas partes: o kernel de GKI principal com código comum em todos os dispositivos e módulos de GKI desenvolvidos pelo Google e que podem ser carregados dinamicamente em dispositivos quando aplicável.
Kernel da interface de módulo do kernel (KMI)
Consulte kernel de GKI.
Iniciar o kernel
Um kernel válido para iniciar um dispositivo para determinada versão da plataforma Android. Para 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 dois a seis anos. LTS kernels são lançados uma vez por ano e são a base de cada ACKs do Google.

Tipos de ramificação

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

Outros termos

Imagem de inicialização certificada
O kernel é enviado em formato binário (boot.img) e atualizado no dispositivo. Essa imagem é certificada porque contém certificados incorporados para que o Google possa Verifique se o dispositivo é enviado com um kernel certificado pelo Google.
Módulo do 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 da dispositivo. Os módulos de GKI e fornecedor são tipos de DLKMs. Os DLKMs foram lançados em .ko e podem ser impulsionadores ou fornecer outras funcionalidades do kernel.
Projeto GKI
Um projeto do Google que aborda a fragmentação do kernel ao separar o kernel comum funcionalidade de suporte de placa e SoC específico do fornecedor em módulos carregáveis.
Imagem genérica do kernel (GKI)
Uma imagem de inicialização certificada pelo Google que contém um kernel de GKI criado a partir de uma árvore de origem ACK e é adequado para atualização flash na partição de inicialização do um dispositivo Android.
KMI
Uma interface entre o kernel de GKI e os módulos do fornecedor que permite ao fornecedor módulos sejam atualizados independentemente do kernel de GKI. Essa interface consiste em arquivos e dados globais que foram identificados como dependências de fornecedor/OEM usando listas de símbolos por parceiro.
Módulos GKI
Módulos do kernel criados pelo Google que podem ser carregados dinamicamente nos dispositivos, quando aplicável. Esses módulos são criados como artefatos do kernel de GKI e são entregues junto com o GKI como o arquivo system_dlkm_staging_archive.tar.gz. Módulos GKI são assinados pelo Google usando o par de chaves de tempo de build do kernel e são compatíveis apenas com a GKI com o qual elas são criadas.
Módulo do fornecedor
Um módulo específico de hardware desenvolvido por um parceiro que contém SoC e informações específicas do dispositivo funcionalidade de armazenamento. Um módulo de fornecedor é um tipo de módulo do kernel dinamicamente carregável.

Qual é a próxima etapa?