Upstart vino a reemplazar al legendario init.d, posee algunas ventajas respecto a su predecesor, en especial en la velocidad de todo el proceso de inicio, gracias a su sistema de eventos y arranque en paralelo, de hecho ya esta implementado en algunas distros, sin embargo todo puede ser mejor, y eso es lo que demuestra systemd, un nuevo sistema de inicio para Linux.
Quien trabaja en este proyecto es Lennart Poettering, el creador de Pulse audio, y la principal diferencia respecto a Upstart, es que ya no requiere de satisfacer ciertas dependencias al momento de cargar los componentes, recordemos que Upstart requiere de una causa (evento) para generar el siguiente paso, sin embargo systemd no necesita de tal evento, lo cual lógicamente hace que el proceso sea mas rápido, aunque la duda que surge es ¿cómo se soluciona el asunto de las dependencias?
Es importante esto, por ejemplo hay varios programas que hacen uso del servidor D-BUS, y como parece lógico, debes cargar D-BUS antes que el resto de programas que lo utilizan, bueno, systemd soluciona eso creando los sockets antes de iniciar los mismos servicios, así, aunque no esté cargado D-BUS, las aplicaciones ya pueden conectarse al socket de D-BUS para poder iniciar su carga, pudiendo arrancar X.org, Avahi, Network Manager, etc. sin que D-BUS esté realmente activo.
El mismo concepto de sockets lo aplican a los puntos de montaje del sistema de archivos, ya que hay servicios que necesitan de ellos para iniciarse y si se pudiera pasar por alto ese paso, como lo pretende hacer systemd, nuevamente ahorraríamos tiempo, en la práctica se podrían realizar tareas como fsck de forma mucho mas rápida de lo que usualmente tardan hoy en día.
Pero un sistema de arranque debe hacer más que ganar velocidad, debe ser capaz de apagar, reiniciar y alertar sobre servicios y procesos con problemas, y a su vez, tener dicho control sobre todos los procesos y sus hijos «y los hijos de sus hijos», algo que no es muy sencillo en sistemas tipo UNIX, pero que systemd soluciona valiéndose de «Control Groups» una característica disponible en los últimos Kernels y que permite, no solo localizar los procesos, sino también configurar su consumo de recursos, entre otras cosas.
Finalmente systemd será capaz de cargar todo rápidamente y mantener el control de los procesos adecuadamente. Además el proyecto involucra otros componentes, «Unidades» en este caso, como una UI para visualizar servicios, timer (que reemplazaría a cron), swap y un posible reemplazo a los gestores de sesiones como los conocidos gnome-sessions y kdeinit.
En cuanto a su utilización, pretendían usar systemd por defecto en Fedora 14, sin embargo se descartó luego de una prolongada discusión por IRC, de todas maneras podrá ser usado de forma opcional y seguramente estará listo para Fedora 15. OpenSUSE también pretende incluirlo en su versión 11.4 de forma oficial, y en este momento ya existen versiones de este sistema para Fedora, OpenSUSE, Arch, Debian y Gentoo (y no, para el «innombrable» no hay) aunque obviamente de forma experimental y no apto para «cardíacos».
Sé que para muchos esto es nuevamente «reinventar la rueda», sin embargo, el proyecto es muy interesante y conceptualmente mejor que Upstart. Si quieres saber mas detalles en profundidad, puedes visitar el documento del proyecto y un anuncio reciente sobre el mismo. También puedes ver un par de buenos artículos que hizo diegocg hace algún tiempo, y de donde he sacado gran parte de las ideas de este post. Así que ya lo sabes, en arranques rápidos y eficientes, Linux tiene mucho que decir, aunque creo que solo falta ponerse un poco más de acuerdo en que van a usar en definitiva.