Google seguirá desarrollando innovaciones para Android en el kernel principal de Linux

En la conferencia Linux Plumbers 2021, Google habló sobre el éxito de su iniciativa de hacer la transición de la plataforma Android para utilizar un kernel de Linux normal en lugar de utilizar su propia versión del kernel, que incluye cambios específicos de la plataforma Android.

El cambio más importante en el desarrollo fue la decisión de cambiar después de 2023 al modelo "Upstream First", lo que implica el desarrollo de todas las funciones nuevas del kernel necesarias en la plataforma Android directamente en el kernel principal de Linux, y no en sus propias ramas separadas ( La funcionalidad primero se promoverá al kernel principal y luego se usará en Android, y no al revés). También está previsto transferir todos los parches adicionales que quedan en la rama del kernel común de Android al kernel principal en 2023 y 2024.

En cuanto al futuro cercano, para la plataforma Android 12 que se espera para principios de octubre, se ofrecerán conjuntos de kernel “Generic Kernel Image” (GKI), lo más parecido posible al kernel 5.10 normal. Para estas compilaciones, se proporcionarán actualizaciones periódicas, que se publicarán en el repositorio ci.android.com. En el kernel GKI, las adiciones específicas de la plataforma Android, así como los controladores relacionados con el soporte de hardware de los OEM, se colocan en módulos de kernel separados. Estos módulos no están vinculados a la versión del kernel principal y se pueden desarrollar por separado, lo que simplifica enormemente el mantenimiento y la transición de los dispositivos a nuevas ramas del kernel.

Google seguirá desarrollando innovaciones para Android en el kernel principal de Linux

Las interfaces requeridas por los fabricantes de dispositivos se implementan en forma de ganchos, que le permiten cambiar el comportamiento del kernel sin realizar cambios en el código. En total, el kernel android12-5.10 ofrece 194 ganchos regulares, similares a los puntos de seguimiento, y 107 ganchos especializados que le permiten ejecutar controladores en un contexto no atómico. En el kernel GKI, los fabricantes de hardware tienen prohibido aplicar parches específicos al kernel principal, y los proveedores deben suministrar los componentes de soporte de hardware únicamente en forma de módulos de kernel adicionales, que deben garantizar la compatibilidad con el kernel principal.

Recordemos que la plataforma Android está desarrollando su propia rama del kernel: el Kernel común de Android, a partir del cual se forman ensamblajes específicos separados para cada dispositivo. Cada rama de Android ofrece a los fabricantes varias opciones para el diseño del kernel de sus dispositivos. Por ejemplo, Android 11 ofreció la opción de tres núcleos básicos: 4.14, 4.19 y 5.4, y Android 12 ofrecerá los núcleos básicos 4.19, 5.4 y 5.10. La opción 5.10 está diseñada como una imagen de kernel genérica, en la que las capacidades necesarias para los OEM se transfieren al nivel superior, se colocan en módulos o se transfieren al kernel común de Android.

Antes de la llegada de GKI, el kernel de Android pasó por varias etapas de preparación:

  • A partir de los núcleos LTS principales (3.18, 4.4, 4.9, 4.14, 4.19, 5.4), se creó una rama del "Kernel común de Android", al que se transfirieron parches específicos de Android (anteriormente, el tamaño de los cambios alcanzaba varios millones de líneas). ).
  • Basado en el "Kernel común de Android", los fabricantes de chips como Qualcomm, Samsung y MediaTek formaron un "Kernel SoC" que incluía complementos para soportar el hardware.
  • Basado en el SoC Kernel, los fabricantes de dispositivos crearon el Device Kernel, que incluyó cambios relacionados con la compatibilidad con equipos adicionales, pantallas, cámaras, sistemas de sonido, etc.

Este enfoque complicó significativamente la implementación de actualizaciones para eliminar vulnerabilidades y la transición a nuevas ramas del kernel. Aunque Google publica periódicamente actualizaciones para sus kernels de Android (Android Common Kernel), los proveedores suelen tardar en entregar estas actualizaciones o, en general, utilizan el mismo kernel durante todo el ciclo de vida de un dispositivo.



Fuente: opennet.ru

Añadir un comentario