Google ha conseguido usar el kernel de Linux sin modificar en Android

Ha sido en la Linux Plumbers Conference donde ingenieros de Google han mostrado la primera versión de Android ejecutándose con el kernel de Linux sin modificar. El objetivo de esto es que Android esté al día en cuanto a la seguridad que va implementándose en el kernel y no tengan que estar adaptando constantemente los cambios para hacerlos funcionar con sus miles de modificaciones en cada versión. Además, los móviles mejorarían su rendimiento y su batería.

La primera parte consiste en implementar todas las modificaciones de Android en línea principal del kernel de Linux. En febrero de 2018, el kernel común de Android que reciben los fabricantes y que estos a su vez luego modifican contaba con 355 cambios, 32.226 inserciones y 1.546 eliminaciones con respecto a la versión del kernel de Linux 4.14.0, la última usada. Aún siendo una cantidad enorme, es mucho menor de las 60.000 líneas que se añadían hace unos años. Esa versión del kernel de Linux, lanzada en noviembre de 2017, es la que usa el Pixel 4 lanzado en octubre de 2019, y además no recibirá una nueva versión porque los móviles Android no reciben actualizaciones de kernel.

kernel-lts-diff

Esta diferencia de casi dos años pone de manifiesto el problema al que Google lleva años enfrentándose, donde tienen que soportar kernels antiguos para móviles que siguen recibiendo actualizaciones, como la versión 3.18 de hace cinco años. Por ello, Google consiguió que la comunidad Linux soportara las LTS durante más tiempo, con seis años de soporte.

Para demostrar el funcionamiento del nuevo kernel, Tom Gall (director de Linaro Consumer Group) subió al escenario con un Pocophone F1 con Android 10 usando el kernel de Linux. Algunas funciones no funcionaban correctamente, como la batería que no mostraba el porcentaje, pero es alucinante que hayan conseguido hacerlo con un kernel sin modificar.

Linux-Kernel-Functional-Testing-LKFT

La comunidad no quiere que haya una interfaz única

Google consiguió reducir el proceso de modificación en 2017 con la introducción de Project Treble, donde se separan drivers específicos de cada dispositivo del resto de Android, lo que facilitó también el lanzamiento de actualizaciones. A pesar de ello, el proceso que ha de pasar un kernel sigue siendo el mismo: de Google a los fabricantes de chips, y luego a los fabricantes de móviles que hacen pequeñas modificaciones.

ABI-Monitoring

Basarse en el kernel de Linux podría eliminar la necesidad de crear un kernel diseñado para cada dispositivo, y acelerar aún más el lanzamiento de las actualizaciones en Android. Para ello, la idea de Google es llevar la modularidad de Project Treble al kernel de Linux, creando una interfaz que permita ejecutar drivers propietarios de dispositivos como si fueran plugins para no tener que modificar la base del kernel.

Sin embargo, ya hay voces desde la comunidad que no están a favor de que haya una interfaz del kernel estable, ya que en éstas suelen encontrarse fallos o a alguien se le ocurre una manera mejor de hacer las cosas, y no poder modificarla puede introducir problemas de seguridad. Así, esto diferencia a Linux de otros sistemas cerrados que tienen que mantener interfaces muy antiguas (como versiones antiguas de USB). Lo que proponen desde la comunidad es que los fabricantes hagan open source sus drivers, lo que parece que está claro que, por desgracia, no va a ocurrir.

 

Fuente: Ars Technica | adslzone