27 de agosto de 2010

Novedades en systemd

Desde que Lennart Poettering, autor de Pulseaudio, anunció el nacimiento de systemd, un reemplazo de init/upstart (si quieren, también pueden leer el enlace anterior en este otro sitio en el que me copian el texto del blog sin poner ni una cita), han pasado 4 meses. Suele pasar en ocasiones que un proyecto sale a la luz y la luz lo seca o lo debilita como a un brote reciente (caso de Wayland, tan revolucionario y tan raquítico a la vez). No ha sido este caso. Systemd se ha saltado etapas de crecimiento a una velocidad pasmosa y ya se acerca a árbol, como puede comprobarse en este post de Lennart sobre la evolución del proyecto.

En primer lugar, han implementado los varios tipos de "unidades" que habían prometido y faltaban. Han añadido las unidades timer. Su propósito es sustituir la funcionalidad de cron (aunque de un vistazo a la documentación es evidente que aun le falta funcionalidad para lograrlo por completo). Otro tipo de unidad es path, que puede utilizarse para invocar automáticamente un servicio cuando hay actividad en alguna parte del sistema de archivos, o cuando se crea un directorio determinado (es, por así decirlo, una especie de herramienta para usar inotify). Y el último tipo de unidad implementado es swap, que indica a systemd las particiones de intercambio que hay que montar (recordemos que, entre otras cosas, systemd pretende conseguir que /etc/fstab sea teóricamente innecesario).

Otra novedad importante es que systemd se ha integrado con todo lo que ha encontrado por delante: SELinux a la hora de crear directorios o sockets, TCP wrappers, PAM, y los inicios/paradas de los servicios se reportan al sistema de auditoría del kernel. También se ha integrado el sistema con D-Bus, de modo que los servicios que utilicen las interfaces D-Bus para comunicarse con los clientes pueden informar de ello en sus archivos de configuración, y systemd se encargará de arrancar automáticamente esos servicios cuando un cliente intente comunicarse con él (básicamente se trata de lo mismo que se hace con los sockets de red, pero aplicado a las conexiones D-BUS).

Otra novedad, muy curiosa, es cómo han utilizado las características de systemd para conseguir que no se pierda absolutamente ningún mensaje destinado a archivos log, desde el arranque del sistema hasta su apagado. Nada más iniciarse, systemd se pone a escuchar en el socket /dev/log, y envía los mensajes que allí se envían al buffer del kernel (el de dmesg). Posteriormente se arranca syslog (a quien se cede el control de /dev/log), el cual, como primera operación, guarda ese buffer del kernel en el disco. De ese modo, no se pierde ni un solo mensaje. Es más, si syslog muere por cualquier razón, o cuando el sistema se está apagando y hay que apagar el proceso, se restablece la comunicación /dev/log -> dmesg.


Respecto a la adopción, parece que systemd va a ser el sistema de inicio por defecto para Fedora 14. A esto ayuda, no cabe duda, que los mecanismos de systemd hacen posible convivir servicios con configuraciones systemd y otros con configuraciones antiguas sin que haya problemas de ningún tipo. Upstart necesitó ser tremendamente conservador para evitar problemas (pagando como precio el no estar aun terminado, de acuerdo con su autor). Systemd no necesita tantos cuidados. Quizás sea esa la razón por la que ya hay paquetes y scripts disponibles para OpenSUSE, Debian, Gentoo y Arch. Aunque en Debian habría problemas para utilizarlo como sistema de inicio por defecto, porque systemd sólo funciona para Linux y Debian está empeñada en soportar kernels BSD...

10 comentarios:

  1. Anónimo4:08 p. m.

    Bueno yo no le echaría las culpas al sitio donde aparece tu artículo, si no más bien al usuario que publicó el copipega. Mucho éxito de todas maneras parece que no ha tenido, no tiene ningún comentario y es su única publicación.

    ResponderEliminar
  2. ¿No conocías Taringa? Llevan toda la vida haciendo lo mismo. Fusilan todo lo que pillan en Internet desde sus inicios. Y te adelanto que una vez que te copian el primer artículo te seguirán copiando. :)

    Saludos.

    ResponderEliminar
  3. Aviso,¡comentario un poco off-topic!

    Hola Diego, me gusta leerte, pero de vez en cuando haces referencias a Debian de una forma que no se por donde tomarlas. Es tu blog y está claro que puedes escribir lo que quieras con respeto (como ya lo haces). Sin embargo, te invito a que escribas un post de lo que no te gusta de Debian, creo que habrá merecido criticismo (no te digo que todo sea perfecto), pero creo que también cosas que has compredido mal o malinterpretado.

    ResponderEliminar
  4. A todo esto... en Debian *si* se podría migrar a systemd si alguien se interesara en el tema lo suficiente, pero obviamente los ports kfreebsd y hurd tendrían que usar otra cosa.

    ResponderEliminar
  5. (Hola, no apruebes este comment, es solo para mencionarte que quizás cometiste un error en la oración "upstart no necesita andar con tanto cuidado", y te referías a systemd, o yo no entendí nada =))

    ResponderEliminar
  6. Bueno es lo que bien acaba. Si este systemd supera, como parece que lo hace, a upstart (según tu artículo anterior sobre el tema), habrá valido la pena. La duda es si, además de en fedora, lo podremos ver también en ubuntu, los papaitos de upstart. Esperemos que sí.

    ResponderEliminar
  7. Anónimo8:16 a. m.

    hola diego, yo fui el que publico tu post en taringa, disculpa que no haya puesto la fuente. ya solucione el inconveniente.nuevamente mil disculpas

    ResponderEliminar
  8. marcos hipe2:33 a. m.

    realmente taringa es tierra de nadie, todos suelen poner post de blogs sin poner fuentes. hace un tiempo que soy full user (o sea que podes comentar) y basicamente lo uso para criticar (y a veces putear xD) a los que hacen esto, pero no dan bola.
    no entiendo como supuestos usuarios de linux no tienen por lo menos ese poco de respeto hacia los autores de los temas, pero bueh.
    siempre te leo, aunque muchas veces no caso una xD ya sabre mas y asi podre seguirte un poco.
    gracias por estos post tecnicos, no se encuentran muchos asi en castellano

    ResponderEliminar
  9. Me parece que al final irá con Fedora 15 y no con la 14:

    http://www.h-online.com/open/news/item/Fedora-14-to-use-Upstart-not-systemd-1079435.html

    ResponderEliminar