Collabora está trabajando en un nuevo sistema de actualizaciones para SteamOS
SteamOS 3, el sistema operativo de la Steam Deck, ha sorprendido a más de uno, sobre todo porque ha terminado por alejarse un poco de lo que uno suele percibir como un sistema basado en Arch Linux. De entre todas sus peculiaridades frente a su distribución madre, las que más sobresalen son la inmutabilidad y el uso de actualizaciones atómicas.
SteamOS 3 emplea un esquema de particiones A/B para las actualizaciones del sistema. Esto quiere decir que hay dos particiones separadas, A y B, en la que la principal alberga la actual versión del sistema operativo, mientras que la otra queda reservada para las futuras actualizaciones. Sobre la naturaleza de las imágenes del sistema, estas son atómicas y son aplicadas usando RAUC y Casync.
A los que sean lectores habituales de MuyLinux posiblemente el sistema de particiones A/B les suene de algo, ya que es el empleado por Vanilla OS. Por otro lado, Google intenta impulsarlo desde hace tiempo en Android, pero en un principio fue rechazado debido a la cantidad de espacio en disco que requería.
El sistema de actualizaciones empleado por SteamOS 3, como suele ser habitual en este tipo de sistemas, garantiza que todos los usuarios reciban exactamente la misma actualización, incluso en caso de haber inhabilitado las funciones de solo lectura y editado algunos ficheros que están por encima de la carpeta personal. Desde Collabora, que es la fuente de esta información, mencionan que los directorios /etc
y /var
tienen siempre permisos de escritura, pero ese inconveniente da para otro tema.
A pesar de que Collabora reconoce que Casync funciona muy bien, hay algunos puntos en los que flaquea, como el hecho de que el cálculo de la semilla de la imagen actual se realiza al vuelo y es una operación que se realiza a través de un único proceso, lo que provoca que un único núcleo del procesador termina trabajando al 100%. Si la tarea se reparte entre más núcleos, este podría hacerse de manera más rápida y ágil y posiblemente con unas menores temperaturas.
Otros inconvenientes de Casync, o al menos de la implementación presente en SteamOS 3, es que no permite operaciones HTTP(S) GET en paralelo y que la descarga tiene que empezar de cero en caso de ser interrumpida. Lo último mencionado puede ser evitado mediante el uso del destino como una semilla, pero con el coste de duplicar el tiempo dedicado a la fase de preparación.
Un último aspecto que va en contra de Casync es que su último lanzamiento público fue en el año 2017. Oficialmente no está descontinuado, pero su desarrollo está aparentemente muy parado. Confiar algo tan crítico como las actualizaciones del sistema en un sincronizador que parece estar en la cuerda floja no es una buena idea, así que desde Collabora quieren reemplazarlo con otra herramienta similar y que no arrastre sus inconvenientes.
Aquí es donde entra Desync, una reimplementación de la mayor parte de Casync que puede funcionar como reemplazo en muchas situaciones y cuyo desarrollo está activo. Desync soporta múltiples peticiones de HTTP(S) en paralelo y multiproceso, por lo que ya subsana dos de los principales inconvenientes que tiene Casync. Eso sí, a pesar de que en un principio todo parece fácil, la realidad es que el proceso de reemplazo no ha sido tan sencillo como aparenta.
Si bien Desync puede instalar actualizaciones de sistema creadas con Casync y viceversa, hay ciertas diferentes que han obligado a trabajar en el primero para que pueda ser utilizado en SteamOS 3. Para empezar tenemos la forma en que son tratadas las semillas. Debido a que la Steam Deck soporta la desactivación del modo de solo lectura, no hay garantías de que el archivo de índice precalculado de Desync para la semilla fuera el correcto. Esto ha obligado a Collabora a tener que implementar un “plan” predeterminado sobre cómo ensamblar una actualización, una opción para regenerar índices de semillas no válidas y validar lo que ha sido escrito al tomar fragmentos de una semilla.
Otras cosas que Collabora ha incorporado a Desync son soporte para patrones globales en el archivo de configuración para las imágenes que no están ubicadas en una única URL, la capacidad de estimar rápidamente el tamaño de descarga de una actualización y el soporte para RAUC, que es un sistema de actualizaciones atómicas orientado a sistemas Linux empotrados.
De culminarse el cambio de Casync por Desync, se espera que la aplicación de las actualizaciones sea entre un 30 y un 50 por ciento más rápido, que la actualización se reanude desde el punto en que falló en lugar de empezar desde cero en caso de fallar, una mejor comprobación de la imagen para ver si ha sido o no alterada y establecer una base para que los clientes tengan en un futuro la capacidad de estimar rápidamente el tamaño de la descarga de las actualizaciones.
El nuevo sistema de actualización basado en Desync y RAUC ya puede ser probado en SteamOS 3.6, que por ahora está en el canal de fase previa de la distribución. Los usuarios que quieran probarlo o contribuir a su mejora solo tienen activar dicho canal a partir de la configuración del sistema operativo.
La entrada Collabora está trabajando en un nuevo sistema de actualizaciones para SteamOS es original de MuyLinux