El código base del kernel de Linux, que servirá de base para la versión 6.19 a principios de febrero, incluye código del subsistema LUO (Live Update Orchestrator), desarrollado por Google para actualizar el kernel en tiempo real sin necesidad de reiniciar. Este subsistema se basa en el mecanismo KHO (Kexec HandOver), añadido previamente al kernel 6.16 y que permite ejecutar un nuevo kernel desde uno existente sin perder el estado del sistema.
Live Update Orchestrator permite un reinicio completo y la actualización del kernel sin interrumpir el funcionamiento ni perder el estado del sistema, los dispositivos ni los procesos. Además de la funcionalidad KHO, el subsistema LUO preserva el estado de los dispositivos y la RAM, y garantiza la continuidad de las operaciones relacionadas con el DMA y la gestión de interrupciones. Este estado se conserva antes de cambiar a un nuevo kernel y se restaura tras su activación, sin interrumpir las operaciones continuas de los dispositivos realizadas por el sistema y las aplicaciones de espacio de usuario.
Una característica clave de la nueva serie de parches es la capacidad de preservar los descriptores de archivos memfd para mantener el estado de datos importantes en memoria tras reinicios, como el contenido de la RAM de las máquinas virtuales. El uso principal de este subsistema se refiere a las actualizaciones rápidas para servidores que ejecutan sistemas de virtualización basados en KVM, lo que elimina problemas de seguridad y estabilidad, a la vez que minimiza el tiempo de inactividad de las máquinas virtuales. Google ya utiliza esta tecnología en sus entornos de producción.
A diferencia de livepatch, Ksplice, kpatch, kGraft y otros mecanismos de parcheo en caliente, el nuevo subsistema no se limita a aplicar parches individuales a un kernel en ejecución; permite la sustitución completa del kernel. A diferencia de kexec, el subsistema LUO conserva el estado de los dispositivos y subsistemas del kernel tras reinicios, mientras que kexec funciona únicamente como gestor de arranque, iniciando un nuevo kernel con una reinicialización completa del sistema (el equivalente a un reinicio, pero sin transferir el control al firmware).
Fuente: opennet.ru
