O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

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 , pois suportam a separação de código Genérico Core Kernel independente de hardware e módulos GKI independentes 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 da 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: Kernel GKI e arquitetura de módulo de fornecedor

Figura 1. Kernel GKI e arquitetura do módulo do fornecedor

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 que é downstream de um kernel LTS e inclui patches de interesse para a comunidade Android que não foram mesclados em kernels Linux mainline ou Long Term Supported (LTS). 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 de recursos
Um kernel para o qual os recursos de versão 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 retroportados para kernels 4.19; o conjunto de recursos seria semelhante a um dispositivo lançado com 4.19 no R e atualizado para o S).
kernel do núcleo genérico
A parte do kernel 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). Esse kernel tem duas partes: o kernel GKI central com código comum em todos os dispositivos e módulos de kernel GKI desenvolvidos pelo Google que podem ser carregados dinamicamente nos dispositivos quando aplicável.
Kernel Module Interface (KMI) kernel
Veja kernel GKI .
Iniciar Kernel
Um kernel que é válido para iniciar um dispositivo para uma determinada versão da plataforma Android. Por exemplo, no Android 12, os kernels de lançamento válidos eram 4.19, 5.4 e 5.10.
Kernel com suporte a longo prazo (LTS)
Um kernel 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 ramificação

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

Outros termos

Imagem de inicialização certificada
O kernel foi entregue em formato binário ( boot.img ) e atualizado no dispositivo. Esta imagem é certificada no sentido de que contém certificados incorporados para que o Google possa verificar se o dispositivo é fornecido com um kernel certificado pelo Google.
Módulo de kernel carregável dinamicamente (DLKM)
Um módulo que pode ser carregado dinamicamente durante a inicialização do dispositivo, dependendo das necessidades do dispositivo. Os módulos GKI e de fornecedor são ambos tipos de DLKMs. Os DLKMs são lançados no formato .ko e podem ser drivers ou podem fornecer outras funcionalidades do kernel.
Projeto GKI
Um projeto do Google que aborda a fragmentação do kernel, separando a funcionalidade central comum do kernel do SoC específico do fornecedor e do suporte à 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 é adequado para ser atualizado 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 do kernel e dados globais que foram identificados como dependências de fornecedor/OEM usando listas de símbolos por parceiro.
Módulos do kernel GKI
Módulos carregáveis ​​dinamicamente 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 entregues junto com o GKI como o arquivo system_dlkm_staging_archive.tar.gz . Os módulos do kernel 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 carregável dinamicamente.

Qual é o próximo?