Android podría utilizar el Kernel de Linux sin modificaciones adicionales
Google anuncio que está trabajando para garantizar que su sistema operativo para dispositivos móviles (Android) se base en versiones estándar del kernel de Linux, esto lo informo la compañía durante la presentación de sus avances en la edición de 2019 de Linux Plumbers Conference (LPC). En la cual menciono que se trata de hacer cambios en el ciclo de vida de una versión del sistema operativo Android.
Muchos de ustedes deben saber que Android hace uso del Kernel de Linux, pero este no es una version cualquiera que utilizan comunmente las distros de Linux. Si no que este pasa por algunos procesos previos para poder ser incluido dentro de los diferentes equipos.
Esto inicia desde una versión LTS del kernel de Linux, el equipo de Android publica una actualización del sistema operativo llamada Android Common Kernel. Los fabricantes de chips (Qualcomm, Samsung Exynos, etc.) realizan las primeras modificaciones de este último para adaptarlo a los chips que equiparán los dispositivos.
La versión modificada por los fabricantes de chips se pone a disposición de los fabricantes de equipos como Samsung, LG, HTC, etc. quienes, a su vez, realizan personalizaciones para adaptarse a sus dispositivos.
El proceso es largo y tedioso y tiene muchas repercusiones: fragmentación del ecosistema de Android, retrasos en la implementación de nuevas versiones del sistema operativo y actualizaciones de seguridad.
Ante esta problematica, Google comenzó a trabajar en mejorar el proceso y durante la edición del año pasado de la Linux Plumbers Conference, los equipos de Google comenzaron a compartir el enfoque a seguir para superar los problemas que plantea el ciclo de vida actual de una versión del sistema operativo.
Este año, en una presentación de casi 4 horas, se han ido con más detalle. La solución que ofrece Google: es un ABI estable para los núcleos de Android.
En la edición de 2019 de Linux Plumbers Conference, el equipo de Google procedió a la presentación de una arquitectura particular de Android que se basa en los fundamentos establecidos por el proyecto Treble.
En términos generales, corresponde a Google proponer una imagen genérica del núcleo (GKI) acompañada de módulos genéricos del núcleo. Google espera que este paquete exhiba un ABI estable y API.
Los controladores dedicados a arquitecturas de hardware específicas se cargan como módulos del núcleo. Según el equipo de Google, la maniobra debería, a través de la modularización, reducir o incluso eliminar la fragmentación del ecosistema.
Aun que menciona que la estabilización solo se dirige a versiones del kernel de Linux que tienen soporte a largo plazo (LTS). En esto se mencionan dos ramas: 4.19.xy 5.xy.
Esta propuesta por parte de Google todavía no es definitiva, porque, en opinión de los ingenieros de Google, el camino por recorrer sigue siendo considerable. Sin embargo, el enfoque de la empresa no está exento de controversia.
De hecho, uno de los principios de la comunidad Linux en torno a los núcleos vainilla es proporcionar un ABI inestable. La maniobra permite a los fabricantes de equipos abrir los controladores de sus periféricos e integrarlos en las ramas de desarrollo de la línea principal.
Al elegir proporcionar un ABI estable, Google debilita este dispositivo. Este posicionamiento tiene al menos una ventaja para los OEM y otros: el código fuente de sus controladores puede permanecer cerrado. Pero las desventajas también están presentes: no es posible la actualización de una versión del kernel de Linux a otra, ya que solo un LTS es compatible con el enfoque de Google.
En cualquier caso, hay una especie de guerra que arde lentamente. De hecho, los mantenedores de kernel vanilla tienen claro que no admiten bases de código fuera de las ramas dedicadas.
Google por su parte se lanza en el camino opuesto ya que ve de una forma proporcionar algún soporte técnico a los fabricantes que se apresurarán en esta brecha. De hecho, la pregunta es si Google puede conectar los recursos necesarios para que esta tarea compita en la escala del proyecto Linux.