miércoles, 28 de noviembre de 2012

Inittab y Upstart


1- ¿Qué es inittab? Distribuciones de GNU/Linux donde se usa.


Al iniciar el sistema o cambiar los niveles de ejecución con el comando init o shutdown, el daemon init inicia los procesos mediante la lectura de la información del archivo /etc/inittab.

Este fichero es usado en las distribuciones como Debian 6 y en sistemas Solaris

2-Pequeño tutorial de inittab.


Al iniciar el sistema o cambiar los niveles de ejecución con el comando init o shutdown, el daemon init inicia los procesos mediante la lectura de la información del archivo /etc/inittab. Este archivo define estos puntos importantes para el proceso init:

- Que el proceso init se reiniciará
- Qué procesos se deben iniciar, supervisar e reiniciar si se terminan
- Qué acciones se deben realizar cuando el sistema ingresa a un nuevo nivel de ejecución

Cada entrada en el archivo /etc/inittab tiene los siguientes campos:

id:rstate :action :process

En la siguiente tabla, se describen los campos en una entrada inittab.


El siguiente ejemplo muestra un archivo inittab predeterminado que se instala con la versión de Solaris. A continuación, se indica una descripción para cada línea de salida en este ejemplo.

ap::sysinit:/sbin/autopush -f /etc/iu.ap  (1)
sp::sysinit:/sbin/soconfig -f /etc/sock2path             (2)
smf::sysinit:/lib/svc/bin/svc.startd    >/dev/msglog 2<>/dev/msglog      (3)
p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/msglog 2<>/dev/...(4)

1- Inicializa los módulos STREAMS

2- Configura proveedores de transporte de sockets

3- Inicializa el reiniciador maestro para la SMF

4- Describe un cierre por fallo de energía


En este fichero tambien nos muestra los diferentes niveles de ejecución.

El nivel de ejecución 0 es apagar.

El nivel de ejecución 1 es ejecutar el sistema como monousuario.

Los niveles de ejecución de 2 al 5 es ejecutar el sistema como multiusuario.

El nivel de ejecución 6 es reiniciar.



3-¿Qué es upstart? Distribuciones de GNU/Linux donde se usa.

Upstart es un remplazo basado en eventos para el demonio init utilizado en sistemas UNIX, como GNU/Linux. Upstart (programado por Scott James Remnant, trabajador de Canonical Ltd) opera asíncronamente y dirige el inicio de las tareas y servicios, los controla mientras el sistema está encendido y los detiene durante el apagado.

Upstart es un init daemon creado por el Ubuntu-team que pretende ser sustituto del init de System V. Es el único proceso que arranca el núcleo y encargado de llamar al resto de programas/servicios del sistema. En Linux, todo proceso es hijo de init.

Ciertamente Upstart presenta interesantes mejoras respecto del init de System V: Arranque de servicios en paralelo, guiado por eventos, servicios que se rearrancan automáticamente si mueren, etc …

Sin embargo, por el momento (este documento fue escrito en Agosto 2007) las únicas distribuciones que lo implementan son Ubuntu (Edgy/Feisty) y Debian Experimental. Es mas, toda la potencia de Upstart no es aprovechada pues, por retrocompatibilidad con los scripts de sysvinit, upstart solo se acaba comportando como un wrapper de éste.
En /etc/event.d/ tenemos los archivos de configuración de upstart que, podríamos decir, funcionan como si fueran el archivo /etc/inittab:

Archivos ttyX: que llaman a la creación de las terminales con getty.

Archivos rcX: que acaban ajustando el runlevel y llamando a /etc/init.d/rc para ejecutar los scripts del nivel de arranque correspondiente.

Otros archivos como ctrl-alt-del que mapea dicha combinación al reincio ordenado del equipo, o rc-default que define el nivel de inicio por defecto.

Una de las cosas que llama la atencion es que upstart esta relacionado directamente con grub. En su archivo de configuracion /boot/grub/menu.lst

Las características más relevantes de este sistema son las siguientes:
- Tareas y servicios se inician y detienen por eventos
- Los eventos se generan como tareas y los servicios se inician y detienen
- Los eventos pueden ser recibidos desde cualquier otro proceso en el sistema
- Los servicios pueden ser regenerados si mueren inesperadamente
- Supervisión y reaparición de demonios que se separan de su proceso padre
- La comunicación con el demonio init sobre D-Bus


¿Dónde se encuentra el sistema Upstart?

Upstart está incluido en la versión de Ubuntu 6.10 "Edgy Eft" como un reemplazo para sysvinit, y en 7.04 "Feisty Fawn", reemplazando a cronatdanacron e inetd.
Upstart ha sustituido sysvinit en Fedora 9. Actualmente funciona de la misma manera como lo hace en Ubuntu, es decir, que reemplaza sysvinit, manteniendo los actuales scripts.
Se ha anunciado que Debian esta considerando usar Upstart en su versión Squeeze.
openSUSE ha adoptado Upstart desde la versión 11.3 Milestone
Upstart es usado en webOS de Palm para el Palm Pre.
Upstart reemplaza a sysvinit en el sistema operativo Maemo 
Upstart se usará también en Google Chrome OS.

4- Diferencias entre Upstart e inittab


Con Upstart se pasa de un aspecto más estático y fijo (inittab) a un método más dinámico, basado en la noción de tareas (Jobs) y de entornos.

Upstart, a diferencia de inittab, inicia o detiene una tarea en un nivel de ejecución en lugar de cambiar globalmente todo el nivel. En el directorio de eventos se puede añadir o modificar fácilmente un script.

5-Fuentes.