14 de julio de 2014

Avanzando a golpe de actualizaciones de systemd

El debate frenético que generó la adopción debianera de systemd, seguida de la consecuente adopción ubuntera, ha consumido los flamewars sobre sistemas de inicio. No es que haya desaparecido: el tema sigue viéndose, y se discute -y más que se discutirá-, pero se trata de una discusión aislada y repetitiva, desapegada de los eventos del mundo del software libre, que ya ha pasado página. Systemd ha ganado, y el ruido de la oposición no se ha transformado en proyectos capaces de sustituirlo (y por capaces no me refiero a openrc), , lo cual es un indicativo fiable de que, en realidad, systemd es una mejora bienvenida por la mayoría.

Tenemos, por tanto, un mundo Linux que, en su gran mayoría, usa systemd o lo usará en próximas versiones. Las consecuencias de este cambio son muy importantes y son, de hecho, la que probablemente es la mayor ventaja de systemd, y la menos discutida: la unificación del sistema base de la mayoría de las distros en un mismo proyecto, una utopía soñada que existía literalmente desde el nacimiento de las primeras distros, y que sólo systemd ha logrado materializar.

Y esta es una ventaja que Lennart Poettering tiene toda la intención de utilizar. Sin ningún complejo, hace tiempo que proclama a los cuatro vientos que systemd ya no sólo un sistema de inicio y de gestión de servicios, sino una plataforma, e incluso el pegamento que une a las aplicaciones con el kernel. Casi nada. Entre sus últimas novedades y sus planes de futuro se encuentran un pequeño sustituto de network-manager, de ntpd, una implementación simple de containers, sandboxing de aplicaciones y servicios, gestión de servicios de todas las instancias de un proyecto albergado en la nube o de todos los containers que estén siendo ejecutados en el sistema...características que la práctica totalidad del mundo Linux conseguirá con una simple actualización. Y esto es lo verdaderamente novedoso: que el sistema base de Linux pueda evolucionar con una simple actualización.

Como ejemplo de esto último están las últimas novedades que están trabajando. Consiste en convertir a todo sistema que use systemd en un sistema "sin estado", un concepto que consiste en esencia en hacer lo necesario para que todo el software de la distribución se instale en /usr, y que en /etc y /var se almacene exclusivamente la configuración y datos generados por el usuario - el "estado" del sistema. Esto permite características curiosas, como un "reseteo del sistema": bastará vaciar el contenido de /etc y /var, y el sistema regresará al mismo estado inmaculado que tendría tras haber reinstalado la distro de cero. Es decir, se eliminará la necesidad de reinstalar la distro, bastará utilizar esta función de reseteo. También ayudará a la implementación de instaladores que distribuyan un sistema reseteado como método de instalación. Y como /usr pasa a consolidarse como el lugar donde reside el software de la distribución y donde normalmente nunca se escribe nada, se podrán crear instaladores que consistan simplemente en actualizar /usr, y tener varios snapshots de /usr, y garantizar mediante cifrado la integridad de /usr.

Antes de systemd, cosas así eran difíciles de ver. Cada distribución se lo hubiese montado a su manera, con sus propios scripts, sin fuerza agregada suficiente como para forzar a programas upstream a adoptar los cambios necesarios que las hiciesen posible. Pero systemd si tiene la fuerza necesaria para implementar estos cambios, y para animar a upstream a incorporar cambios que harán más fácil la adopción de estas características en todas las distros. Se trata de un círculo virtuoso que hace más fácil hacer cambios revolucionarios con cada vez menor coste para las distros. Sólo hay un precio a pagar: vender el alma a systemd.

7 comentarios:

  1. Anónimo9:08 a. m.

    Muchas gracias, como siempre, por tus artículos. Saludos.

    ResponderEliminar
  2. Anónimo10:39 a. m.

    Gracias por tus excelentes artículos. Un saludo.

    ResponderEliminar
  3. Anónimo5:14 p. m.

    systemd convierte a linux en windows, un proceso para controloarlo todo. ¿Que pasara cuando ese proceso falle? pues como en windows, se reinstala el sistema y punto. Esa no es la filosofia de Linux.

    ResponderEliminar
    Respuestas
    1. Systemd es modular: se compone de varios procesos para cosas diferentes: systemd, systemd.journald, systemd-udevd, etc

      Eliminar
  4. Excelente tus articulos, como siempre. Leo muchos de tus temas y gracias por compartir el conocimiento en buen espanol.... saludos desde Panama..

    ResponderEliminar
  5. Por fin, mis plegarias han sido escuchadas.

    Poco a poco pasaremos a un standard en todas las distribuciones (o al menos en la mayoria).

    Muchas gracias por tus aportes, ayudan a estar al día de todo lo que pasa en las entrañas de linux.

    ResponderEliminar
  6. Hola Diego:

    Hace un tiempo vengo leyendo sobre esto, y lo último que vengo leyendo me preocupa.
    Este enlace (http://www.muylinux.com/2014/09/03/boicot-systemd) lleva a otros enlaces, donde se plantean los problemas que ocasiona systemd, los "bugs" que no se corrigen por falta de interés (o por otros intereses...), que justamente el querer controlar todo va contra la filosofía KISS, que además esto va contra la filosofía de hacer una cosa, pero hacerla bien, y que el principal desarrollador de systemd es Red Hat, quien tiene convenios con la armada de EEUU y, claro está, la NSA, lo que aporta un gran riesgo y una falta de objetividad preocupantes.

    Me gustaría saber tu opinión sobre esto, ya que yo no soy ningún experto en este tema, soy solo un usuario que le gusta informarse.

    Saludos!


    ResponderEliminar