Reflexiones sobre Upstart y SysVinit (Parte 1)

Durante días me he estado cuestionando porque las distribuciones basadas en Debian han obligado discretamente a la implementación de Upstart.
Al principio me pareció atropellante, suponiendo que Upstart es un proyecto demasiado nuevo. Pero he ido descubriendo que no es tan nuevo, pues su primera version estable (0.6.2), data del 21 de julio del 2009.
Upstart es en fondo un reemplazo basado en eventos para el demonio init, el método utilizado por varios sistemas operativos Linux para realizar tareas durante el arranque del sistema. Fue programado por Scott James Remnant, un antiguo trabajador de Canonical Ltd.
No hay de momento obligación, aunque de a poco se han venido incorporando cambios en el sistema para -al parecer-, excluir al clasico SysVinit. Esta migración discreta la han estado haciendo desde los albores del proyecto Upstart.
Explicar en este punto que SysVinit maneja las tareas y servicios del sistema a partir del arranque, deteniéndolos durante el apagado y supervisandolos mientras el sistema está corriendo. SysVinit es el primer proceso en ejecución tras la carga del kernel y el que a su vez genera todos los demás procesos. Se ejecuta como un demonio y por lo general tiene el PID 1. Es quien activa los demonios que se mantienen atentos escuchando al sistema, a fin de atender lo que les incumbe.
Por otro lado Upstart se basa en eventos y está escrito utilizando la biblioteca de utilidades NIH (“libnih”). Esta es una biblioteca de rutinas genéricas muy pequeña, eficiente y segura. Está diseñada para aplicaciones que se ejecutan al principio de la secuencia de arranque (“fontanería o trastienda”).
La fiabilidad y la seguridad es de importancia crítica para el demonio init porque se ejecuta con privilegios de superusuario, es responsable de la gestión de los servicios críticos del sistema y finalmente porque las salidas de init pueden producir errores del kernel, si no estan bien definidas.
En fondo y muy objetivamente, se trata de una puja entre Sysvinit y Upstart en el seno de este hilo de distribuciones.
Por defecto, Debian utiliza SysVinit; no obstante puede instalarse Upstart, claro esta; eliminando SysVinit. Pero suave vamos con calma, porque usted necesita saber lo que está haciendo y por un lado porque debe estar familiarizado con Upstart; con mas razón si esta pensando instalarlo en un servidor en producción. No estar al corriente puede resultar en sorpresas indeseadas.
Aunque en teoría es posible instalar ambos, el sistema sólo ejecuta uno los procesos primarios a la vez. Debo reiterar que Debian no soporta una instalacion dual. Punto a considerar con detalle.
Upstart es mas reciente que SysVinit, pero parece tener más capacidades, lo que explica por qué no es posible tomar una descripción del servicio Upstart y alimentar a SysVinit. Es decir; si asi procedes, tendrás que escribir un script para /etc/init.d. Ese script básicamente tiene que que observar a su primer argumento ($1) e iniciar, detener o reiniciar el servicio segun se indica.
Si ahora esta utilizando Upstart, el cual reiterio se basa en eventos para determinar cuándo debe comenzar la secuencia de comandos, tendrá que utilizar algunos otros métodos para que el sistema no caiga en panico. (Kernel Panic)
Upstart reúne eventos de muchas fuentes diferentes; se puede obtener un trigger desde donde Upstart lo consigue. Upstart a este respecto es simplemente una manera conveniente de no tener que buscar los desencadenantes en muchos lugares y protocolos diferentes, pues reduce este proceso integrando los eventos requeridos.
En una critica constructiva diría que SysVinit tiene como beneficios su simplicidad y que garantiza un orden en los servicios. Como limitaciones tiene un rendimiento no tan optimo, esta centrado en el servidor, asume hardware estático en todo momento y cada servicio tiene una forma de carga un poco pesada, no tan eficiente.
Por otro lado, diriamos que Upstart es revolucionario, ya que reconoce y se diseñó específicamente para que el sistema sea dinámico. Es asincronico en la emisión de eventos. Lo cual se puede considerar también como revolucionario. Todos los eventos que se controlan a traves de Upstart están siendo guiado por árbitro estrella de los dispositivos del hardware, es decir; el núcleo.
Concluir diciendo que ha habido mucho debate sobre el futuro de los sistemas de inicio en las distribuciones basadas en Debian y tambien en RedHat. La razón principal por la que las distribuciones basadas en Debian no se han trasladado completamente a Upstart o a Systemd -luego hablaré de este otro proyecto-, es que ambos utilizan características específicas de Linux y los Debian ofrecen puertos para núcleos distintos de Linux como FreeBSD.
A pesar de que no son sistemas Linux por defecto y no poseen el apoyo pleno de todos los servicios en esas versiones; los sistemas UNIX-Like, aún utilizan algunos soportes de Linux.