Upstart es un sistema de arranque para GNU/Linux nacido con el objetivo de reemplazar al veterano init de System V, que ha reinado en todas las distribuciones desde... desde siempre, más o menos. En The H Open Source han dedicado un completo reportaje a explicar en detalle su funcionamiento. Sin profundizar tanto, me gustaría introducir un poco el tema, que saber un mínimo de estas cosas siempre está bien.
¿Conoces el init de System V, verdad? Es el primer programa que se ejecuta en el sistema tras cargar el núcleo en memoria. Lo primero que hace es leer el archivo /etc/inittab, de donde obtiene algunos parámetros básicos, y luego va ejecutando por orden los scripts del directorio /etc/rcS.d de forma secuencial. Dependiendo de un parámetro numérico llamado runlevel, posteriormente seguirá cargando todos los scripts del directorio /etc/rcN.d correspondiente --normalmente el 2 o el 3.
En lugar de seguir una secuencia establecida de antemano, Upstart se basa en eventos. Cada script de Upstart depende de una serie de eventos y a su vez genera más eventos. El primero que se genera es el startup y a partir de ahí van lanzándose scripts, que a su vez generan más eventos que permiten que se lancen más scripts, hasta que el sistema completo se encuentra cargado.
Hasta ahora, tanto Ubuntu como Fedora incluían Upstart aunque solo como un emulador del init tradicional, porque para cambiar el sistema hay que reescribir todos los scripts de arranque, una tarea bastante delicada. En Ubuntu 9.10 se ha dado un paso muy importante incluyendo por vez primera un arranque basado, en su gran mayoría, en verdaderos scripts de Upstart.
Los scripts propios de Upstart se encuentran en el directorio /etc/init y, además del script en sí, incluyen toda la información extra necesaria, como las condiciones de arranque, los eventos que se generan y otras opciones, como si el servicio debe reiniciarse automáticamente en caso de que termine (respawn).
También es posible iniciar y detener scripts de Upstart manualmente mediante los comandos start, stop y restart, aunque en realidad no son más que atajos para el más complejo comando initctl.
Vía: D'Oh! | Foto original: TheBusyBrain