El ecosistema actual de Android está contaminado con cientos de versiones diferentes de Android, cada una con una variante diferente del núcleo de Linux. Cada versión está diseñada para un teléfono diferente y diferentes configuraciones. Google ha estado trabajando para solucionar el problema agregando el núcleo principal de Linux a Android.
Cómo se maneja actualmente el kernel de Linux en Android
Antes de que llegue a usted, el kernel de Linux en su teléfono celular pasa por tres pasos principales.
Primero, Google toma la versión LTS (Soporte a largo plazo) del núcleo Linux y agrega todo el código específico de Android. Esto se convierte en el «núcleo común de Android».
Google envía este código a la empresa que crea el Sistema en un Chip (SoC) que ejecuta el teléfono. Esto suele ser Qualcomm.
Una vez que el fabricante de SoC termina de agregar código para admitir la CPU y otros chips, el núcleo se pasa al fabricante de dispositivos real, como Samsung o Motorola. El fabricante del dispositivo agrega código para admitir el resto del teléfono, como la pantalla y la cámara.
Cada uno de estos pasos tarda un tiempo en completarse y da como resultado un núcleo que no funcionará con ningún otro dispositivo. También significa que el núcleo es muy antiguo, generalmente de unos dos años. Por ejemplo, el Google Pixel 4, que se envió el mes pasado, tiene un núcleo a partir de noviembre de 2017, que nunca se actualizará.
Google se ha comprometido a crear parches de seguridad para dispositivos más antiguos, lo que significa que están atascados vigilando una enorme mezcolanza de código antiguo.
El Futuro
el año Pasado, Google anunció planes para arreglar este lío. Este año revelaron el progreso que hicieron en la Conferencia de Plomeros de Linux 2019.
» Sabemos lo que se necesita para ejecutar Android, pero no necesariamente en un hardware determinado. Así que nuestro objetivo es básicamente encontrar todo eso, luego subirlo y tratar de estar lo más cerca posible de la línea principal.»
Sandeep Patil, Líder del equipo del Kernel de Android
Mostraron un Xiaomi Poco F1 con Android con un kernel de Linux adecuado. Sin embargo, algunas cosas no parecían estar funcionando, como el porcentaje de batería que se atascó en el 0%.
Entonces, ¿cómo planea Google hacer que esto funcione? Tomando una página de su libro de jugadas de Agudos del proyecto. Antes de Project Treble, el código de bajo nivel que interactuaba con el dispositivo y el propio Android era un gran lío de código. Project Treble separó los dos y los hizo modulares para que las actualizaciones de Android se pudieran enviar más rápido y el código de bajo nivel pudiera permanecer sin cambios entre las actualizaciones.
Google quiere llevar la misma modularidad al núcleo. Su plan «implica estabilizar la ABI dentro del núcleo de Linux y tener una interfaz estable para que el núcleo de Linux y los proveedores de hardware escriban en ella. Google quiere desacoplar el núcleo Linux de su soporte de hardware.»
Esto significa que Google enviaría un núcleo y los controladores de hardware se cargarían como módulos del núcleo. Actualmente, esto es solo una propuesta. Todavía quedan bastantes problemas técnicos por resolver. así que, esto no sucederá pronto.
Oposición de Código Abierto
La comunidad de código Abierto no estará contenta con la idea de poner código propietario en el núcleo. Las directrices del kernel de Linux establecen que los controladores deben tener una licencia GPL para ser incluidos en el kernel. También señalan que si un cambio en el controlador causa un error, será resuelto por la persona que creó el error. Esto significa menos trabajo para los fabricantes de dispositivos a largo plazo.
Reflexiones finales sobre la inclusión del núcleo principal en Andorid
Hasta ahora, esto es solo una propuesta. Hay una buena probabilidad de que Google comience a trabajar en el proyecto solo para abandonarlo una vez que se den cuenta de cuánto trabajo tomará. Solo echa un vistazo a cuántos proyectos Google ya ha abandonado.
Android Police hizo un buen punto al mencionar que Google está trabajando en su sistema operativo Fucsia, que parece tener el objetivo de reemplazar Android algún día.
Entonces, la pregunta es qué tarea monumental intentará completar Google, hacer que Android se ejecute con un núcleo Linux principal o completar el trabajo en su reemplazo unificado de Android. Sólo el tiempo puede responder a eso.