O Google seguirá em frente para desenvolver inovações para Android no kernel principal do Linux

Na conferência Linux Plumbers 2021, o Google falou sobre o sucesso de sua iniciativa de fazer a transição da plataforma Android para usar um kernel Linux normal em vez de usar sua própria versão do kernel, que inclui alterações específicas para a plataforma Android.

A mudança mais importante no desenvolvimento foi a decisão de mudar após 2023 para o modelo “Upstream First”, o que implica o desenvolvimento de todos os novos recursos do kernel necessários na plataforma Android diretamente no kernel Linux principal, e não em seus próprios ramos separados ( a funcionalidade será primeiro promovida para o kernel principal e depois usada no Android, e não vice-versa). Também está planejado transferir todos os patches adicionais restantes no ramo Android Common Kernel para o kernel principal em 2023 e 2024.

Quanto ao futuro próximo, para a plataforma Android 12 prevista para o início de outubro, serão oferecidos conjuntos de kernel “Generic Kernel Image” (GKI), o mais próximo possível do kernel 5.10 normal. Para essas compilações, serão fornecidos lançamentos regulares de atualizações, que serão publicadas no repositório ci.android.com. No kernel GKI, as adições específicas da plataforma Android, bem como os manipuladores relacionados ao suporte de hardware dos OEMs, são colocadas em módulos de kernel separados. Esses módulos não estão vinculados à versão do kernel principal e podem ser desenvolvidos separadamente, o que simplifica bastante a manutenção e transição de dispositivos para novas ramificações do kernel.

O Google seguirá em frente para desenvolver inovações para Android no kernel principal do Linux

As interfaces exigidas pelos fabricantes de dispositivos são implementadas na forma de ganchos, que permitem alterar o comportamento do kernel sem fazer alterações no código. No total, o kernel android12-5.10 oferece 194 ganchos regulares, semelhantes aos tracepoints, e 107 ganchos especializados que permitem executar manipuladores em um contexto não atômico. No kernel GKI, os fabricantes de hardware estão proibidos de aplicar patches específicos ao kernel principal, e os componentes de suporte de hardware devem ser fornecidos pelos fornecedores apenas na forma de módulos adicionais do kernel, que devem garantir a compatibilidade com o kernel principal.

Lembre-se de que a plataforma Android está desenvolvendo seu próprio ramo de kernel - o Android Common Kernel, com base no qual são formados assemblies específicos separados para cada dispositivo. Cada ramo do Android oferece aos fabricantes diversas opções de layout de kernel para seus dispositivos. Por exemplo, o Android 11 ofereceu uma escolha de três kernels básicos – 4.14, 4.19 e 5.4, e o Android 12 oferecerá os kernels básicos 4.19, 5.4 e 5.10. A opção 5.10 foi projetada como uma imagem genérica do kernel, na qual os recursos necessários para os OEMs são transferidos para o upstream, colocados em módulos ou transferidos para o kernel comum do Android.

Antes do advento do GKI, o kernel do Android passou por vários estágios de preparação:

  • Com base nos principais kernels LTS (3.18, 4.4, 4.9, 4.14, 4.19, 5.4), foi criado um ramo do “Android Common Kernel”, para o qual foram transferidos patches específicos do Android (anteriormente, o tamanho das alterações atingia vários milhões de linhas ).
  • Com base no "Android Common Kernel", fabricantes de chips como Qualcomm, Samsung e MediaTek formaram o "SoC Kernel" que incluía complementos para suportar o hardware.
  • Com base no SoC Kernel, os fabricantes de dispositivos criaram o Device Kernel, que incluiu alterações relacionadas ao suporte para equipamentos adicionais, telas, câmeras, sistemas de som, etc.

Essa abordagem complicou significativamente a implementação de atualizações para eliminar vulnerabilidades e a transição para novas ramificações do kernel. Embora o Google lance regularmente atualizações para seus kernels Android (Android Common Kernel), os fornecedores geralmente demoram para entregar essas atualizações ou geralmente usam o mesmo kernel durante todo o ciclo de vida de um dispositivo.



Fonte: opennet.ru

Adicionar um comentário