Google describe planes para el soporte principal del kernel de Linux en Android

Google describe planes para el soporte principal del kernel de Linux en Android

Parece que Google está trabajando duro para actualizar y actualizar el kernel de Linux que se encuentra en el corazón de cada teléfono Android. La compañía fue un gran participante en la Conferencia de Plomeros de Linux de este año  , una reunión anual de los principales desarrolladores de Linux, y Google pasó mucho tiempo hablando de hacer que Android funcione con un kernel genérico de Linux en lugar de la versión altamente personalizada que usa ahora. . Incluso mostró un teléfono Android con un núcleo Linux principal.

Pero primero, algunos antecedentes sobre el desorden actual del kernel de Android. Actualmente, tres horquillas principales ocurren entre el kernel de Linux "mainline" y un dispositivo Android de envío (tenga en cuenta que "mainline" aquí no tiene relación con el " Project Mainline " de Google)"). Primero, Google toma un kernel de Linux LTS (Soporte a largo plazo) y lo convierte en el" kernel común de Android ", el kernel de Linux con todos los parches específicos del sistema operativo Android aplicados. Android Common se envía al proveedor de SoC ( generalmente Qualcomm) donde obtiene su primera ronda de adiciones específicas de hardware, primero enfocándose en un modelo particular de SoC. Este "Kernel de SoC" luego se envía a un fabricante de dispositivos para obtener aún más código específico de hardware que admita cualquier otra pieza de hardware , como la pantalla, la cámara, los altavoces, los puertos usb y cualquier hardware adicional. Este es el "kernel del dispositivo" y es lo que realmente se envía a un dispositivo.

Este es un viaje extremadamente largo que hace que cada dispositivo envíe millones de líneas de código de kernel fuera del árbol. Cada núcleo de dispositivo de envío es diferente y específico del dispositivo; básicamente, ningún núcleo de dispositivo de un teléfono funcionará en otro teléfono. La versión del núcleo de la línea principal para un dispositivo está bloqueada al comienzo del desarrollo inicial de un SoC, por lo que es típico que un dispositivo nuevo se envíe con un núcleo Linux que tiene dos años. Incluso el último y mejor dispositivo de Google, el Pixel 4, enviado en octubre de 2019 con Linux kernel 4.14, una versión LTS de noviembre de 2017. También se quedará atascado en el kernel 4.14 para siempre. Los dispositivos Android no reciben actualizaciones del núcleo, probablemente gracias a la increíble cantidad de trabajo necesaria para producir un solo núcleo del dispositivo, y la cadena de empresas que tendrían que cooperar para hacerlo. Gracias a que las actualizaciones del kernel nunca suceden, esto significa que cada nueva versión de Android generalmente debe ser compatible con los últimos tres años de las versiones del kernel LTS (el mínimo para Android 10 es 4.9, una versión de 2016). Los compromisos de Google de admitir versiones anteriores de Android con parches de seguridad significan que la compañía aún admite el kernel 3.18, que ahora tiene cinco años. La solución de ayuda de banda de Google para esto hasta ahora ha sido asociarse con la comunidad de Linux y apoyar las versiones principales de Linux LTS durante más tiempo,seis años de apoyo .

El año pasado, en Linux Plumbers Conference 2018, Google anunció su investigación inicial para acercar el kernel de Android a Linux. Este año compartió un poco más de detalles sobre su progreso hasta el momento, pero definitivamente sigue siendo un trabajo en progreso. "Hoy no sabemos qué se necesita para agregarlo al kernel para que se ejecute en un dispositivo Android [específico]", dijo Sandeep Patil, líder del equipo de kernel de Android, al grupo en LPC 2019. "Sabemos lo que se necesita para ejecutar Android pero no necesariamente en un hardware determinado. Por lo tanto, nuestro objetivo es básicamente descubrir todo eso, luego instalarlo y tratar de estar lo más cerca posible de la línea principal ".

Google dice que "en comparación con [Linux] LTS (4.14.0), el núcleo común de Android tiene 355 cambios, 32,266 inserciones y 1,546 eliminaciones (a partir de febrero de 2018)". Cada año se avanza aquí, pero tenga en cuenta que todavía hay dos tenedores más después de esto.

Si bien aún queda trabajo por hacer para incorporar el ecosistema de Android más amplio y una miríada de configuraciones de dispositivos, para modelos específicos de dispositivos, las cosas parecen estar progresando bien. Tom Gall, el director de Linaro Consumer Group, mostró un Xiaomi Poco F1 que realmente ejecuta  el núcleo Linux principal bajo el sistema operativo Android habitual. Gall le dijo a la audiencia: "Hay apoyos importantes para el Equipo Kernel de Google, en particular para que su código sea ascendente para que podamos arrancar dispositivos con un núcleo de línea principal".

Junto con el plan de actualizar tanto código de kernel como sea posible, Google también está buscando replicar su trabajo anterior en la modularización de Android, Project Treble . Así como Treble creó una interfaz estable entre el sistema operativo Android y las HAL (capas de abstracción de hardware) del dispositivo, la propuesta de Google de acercar Android a la línea principal de Linux (¿cómo es que todavía no hay un nombre tonto de "proyecto" para esto?) Implica estabilizar Linux en -kernel ABI y tener una interfaz estable para que los proveedores de kernel y hardware de Linux puedan escribir. Google quiere desacoplar el kernel de Linux de su soporte de hardware.

La comunidad de Linux ha estado en contra de la idea de una interfaz estable durante algún tiempo, con la sugerencia de que si desea la capacidad de actualizar rápidamente un núcleo, abra el código fuente de sus controladores y póngalos en el árbol del núcleo principal, donde se realizarán los cambios. Cuidar de ti. Sin embargo, los controladores de código abierto son un factor decisivo para muchas compañías de hardware, y ninguna cantidad de defensa o degradación del producto va a cambiar eso. El hecho de que Google esté atascado en el soporte de versiones de Linux de cinco años muestra que este modelo no funciona.

Ampliar / En lugar de un montón de tenedores, Google imagina el nuevo núcleo como una serie de módulos.

Matthias Männich, un ingeniero de software senior en Google, mostró un diagrama con la etiqueta "Android Next Generation" que mostraba cómo sería la arquitectura de kernel propuesta. Google enviaría una "Imagen genérica del núcleo (GKI)" junto con varios "Módulos GKI" que expondrían esta API / ABI estable en el núcleo. Los controladores específicos de hardware (probablemente controladores de código cerrado) se cargarían como módulos del núcleo. Entonces, en lugar de las horquillas encima de las horquillas, todo se modulariza en paquetes aditivos.

Por ahora, Google solo propone que el ABI en el núcleo sea estable para una única versión LTS. Por lo tanto, esto no permitiría que los dispositivos se actualicen de una versión del kernel de Linux a otra, solo permitiría que una sola imagen de kernel generalizada funcione en múltiples dispositivos, en lugar de las horquillas de kernel específicas del dispositivo que tenemos hoy. Definitivamente permitiría actualizaciones de seguridad más fáciles y, con suerte, obtendría nuevas versiones de LTS en el mercado más rápido.

Seríamos prematuros si dijéramos que este es un cambio que  definitivamente llegará a Android y al kernel de Linux. Todavía hay toneladas de problemas para resolver (tanto técnica como políticamente, me imagino), y algunas de estas conversaciones fueron más como sesiones de lluvia de ideas públicas entre los presentadores de Google y los ingenieros de Linux (¡muchos de los cuales también eran Googlers!) En la audiencia . Sin embargo, este es el segundo año consecutivo que Google se presenta a LPC y propuso la idea de usar el núcleo Linux principal en Android, y dado que Android es la mayor distribución de Linux en la Tierra, tiene sentido para todos. para trabajar juntos, ¿verdad?

"Tenemos kilómetros por recorrer, y lo sabemos, pero hemos llegado desde donde comenzamos", dijo Patil a la multitud. "El año pasado, lo puse en existencia. Esta vez, en realidad tenemos problemas para discutir".

No hay comentarios:

Este ciberdeck resistente de Raspberry Pi está hecho para el fin del mundo

Este ciberdeck resistente de Raspberry Pi está hecho para el fin del mundo     El kit de recuperación Raspberry Pi  Crédito de imagen: Jay D...