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:
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?
- Se você não tem experiência com o desenvolvimento de kernels para Android, confira a seguinte:
- Kernels estáveis de longo prazo: Contexto sobre kernels LTS upstream que alimentam ACKs.
- Kernels comuns do Android: Contexto sobre as ACKs.
- Se você não conhece o desenvolvimento do kernel de GKI, comece lendo desenvolvimento de GKI.
- Se você estiver usando uma versão do kernel 4.19 ou anterior e estiver procurando documentação relacionada, consulte a página seção de visão geral dos kernels (<=4.19).