En la conferencia pasada de Linux Plumbers 2019, Google discutió sobre el desarrollo de la incorporación en el núcleo principal de Linux de cambios desarrollados en para la plataforma Android. El objetivo final es proporcionar la posibilidad de utilizar un solo núcleo común en Android, en lugar de preparar compilaciones específicas para cada dispositivo basadas en una rama específica de Android. . Este objetivo ya se ha alcanzado en parte, y en la conferencia se demostró un smartphone Android Xiaomi Poco F1 con una versión basada en el núcleo Linux normal y no modificado.
Una vez que el proyecto esté listo, se propondrá a los proveedores suministrar un núcleo base basado en el núcleo principal de Linux. Los componentes para soporte de hardware se proporcionarán por parte de los proveedores únicamente en forma de módulos adicionales del núcleo, sin aplicar parches al núcleo. Estos módulos deberán garantizar la compatibilidad con el núcleo principal a nivel de espacio de nombres de símbolos del núcleo. Todos los cambios que afecten al núcleo principal se promoverán hacia upstream. Para mantener la compatibilidad con los módulos propietarios en ramas LTS, se sugiere mantener de forma estable la API y ABI del núcleo, lo que permitirá conservar la compatibilidad de los módulos con las actualizaciones para cada rama común del núcleo.

En el transcurso de un año, se han trasladado al núcleo principal de Linux desde la edición del núcleo para Android características como el subsistema PSI (Pressure Stall Information) para analizar información sobre el tiempo de espera al obtener diversos recursos (CPU, memoria, entrada/salida), el sistema de archivos pseudo BinderFS para el mecanismo de comunicación entre procesos Binder y el planificador de tareas energéticamente eficiente EAS (Energy Aware Scheduling). En el futuro, se planea migrar Android de su planificador específico SchedTune a un nuevo subsistema UtilClamp desarrollado por ARM, basado en cgroups2 y en los mecanismos estándar del núcleo.

Recordemos que hasta ahora el núcleo para la plataforma Android ha pasado por varias etapas de preparación:
- A partir de los núcleos LTS principales (3.18, 4.4, 4.9 y 4.14) se creó una rama denominada 'Android Common Kernel', en la que se trasladaron parches específicos de Android (anteriormente el tamaño de los cambios alcanzaba varios millones de líneas, pero en tiempos recientes los cambios se han reducido a varios miles de líneas de código).
- Basado en el «Android Common Kernel», fabricantes de chips como Qualcomm desarrollaron el «SoC Kernel», que incluye complementos para el soporte de hardware.
- Sobre la base del 'SoC Kernel', los fabricantes de dispositivos creaban el 'Device Kernel', que incluía cambios relacionados con el soporte de hardware adicional, pantallas, cámaras, sistemas de sonido, etc.

De hecho, para cada dispositivo se creaba su propio núcleo, el cual no podía ser utilizado en otros dispositivos. Este esquema complica significativamente la implementación de actualizaciones para corregir vulnerabilidades y la transición a nuevas ramas del núcleo. Por ejemplo, el último smartphone Pixel 4, lanzado en octubre, viene con un núcleo Linux 4.14, que fue lanzado hace dos años. En parte, Google intentó simplificar el mantenimiento promoviendo un sistema , que permite a los fabricantes crear componentes universales de soporte de hardware, no ligados a versiones específicas de Android y a los lanzamientos del núcleo de Linux. Treble permite utilizar como base las actualizaciones ya listas de Google, integrando componentes específicos para cada dispositivo.

Fuente: opennet.ru
