Inittab y Upstart.

INITTAB.

¿Qué es inittab? Explicación, pequeño tutorial y distribuciones que lo usan.

Innitab es el encargado de lanzar los scripts de inicialización del sistema y de modificar el sistema operativo de su estado inicial de arranque al estado estándar multiusuario. Todas las tareas que realiza se definen en el fichero /etc/inittab.




Esa es la estructura que tiene el fichero inittab. En esas líneas nos muestra:

PID : runlevels : acción : proceso


Runlevels:
  • Al nivel de ejecución 1 se entra inmediatamente después de iniciar el sistema.
  • Los niveles de ejecución 2 y 3 son los modos de operación del sistema normal y multiusuario respectivamente.
  • El nivel de ejecución 4 lanza el sistema X Window(protocolo que nos permite usar interfaz gráfica) a través del X display manager - xdm(permite iniciar sesión en un servidor desde el mismo u otro equipo).
  • El nivel de ejecución 5 es el multiusuario con interfaz gráfica.  
  • El nivel de ejecución 6 reinicia el sistema.
Acción: Es la acción que se debe tomar para ese proceso. Tenemos muchos tipos, como por ejemplo "once"(solo una ejecución), "respawn"(si se muere, lo vuelve a arrancar), "wait" (ejecutar proceso y esperar a completarlo para seguir con otros), etc...

Pequeño tutorial:

Para saber el runlevel se usa el comando who -r:


Para cambiarlo de forma manual se usa init <runlevel>:


Para cambiar el runlevel por defecto nos vamos al archivo /etc/inittab, lo modificamos y reiniciamos el equipo, sería algo así:


Nos vamos al fichero inittab en la siguiente línea:


La cambiamos por el número que queremos que sea el runlevel por defecto:


Reiniciamos y comprobamos como se ha cambiado el runlevel por defecto:


¿Qué distribuciones Linux la usan?

Lo usan distribuciones Linux como Arch Linux, Debian, Solaris... 
Todos esos sistemas son descendientes de BSD (Sistema Operativo basado en Unix).

UPSTART.

¿Qué es upstart? Secuencia de arranque y distribuciones que la usa.

Upstart es un reemplazo basado en eventos para el demonio init, el método utilizado por varios sistemas operativos Unix para realizar tareas durante el arranque del sistema.

Explicando la secuencia de arranque se entiende mejor por qué está basado en eventos:

Lo que hace Inittab es leer su fichero para recibir parámetros básicos y entonces ejecuta los script del directorio /etc/rcS.d de forma secuencial, esa secuencia está establecida de antemano.
En cambio, Upstart se basa en eventos. 

Si entramos al directorio /etc/rcN.d podemos ver que hay archivos comenzados en "s", esos son los pertenecientes al startup.





Esto no son más que enlaces simbólicos a los scripts que se encuentran en /etc/init.d. La estructura del nombre de los enlaces simbólicos es el siguiente:

S/K (start/kill) xx (Número para establecer orden de arranque) Servicio.

Por ejemplo podemos encontrar nombres del tipo S24samba.

El número que tiene cada directorio rcN.d es el runlevel que se ejecuta, es decir, rc1.d contiene enlaces simbólicos de los servicios que inicia o mata en el nivel 1.

Entonces al iniciar el sistema y cargar el kernel, se lanza el evento startup que inicia "todos" los servicios comentados anteriormente que comiencen por "S".
Lo primero que inicia son los pertenecientes al directorio "/etc/rc1.d/" ya que son los servicios asociados al nivel 1 que es el de arranque del sistema. El número de dos cifras de cada enlace simbólico corresponde al orden de arranque. Tras iniciar los servicios del nivel 1, pasará al nivel que tenga por defecto el sistema, en este caso Ubuntu es nivel 2 y ejecutará los servicios que contenga el directorio rc2.d. 
Cuando termine de ejecutar las ordenes de dichos niveles podríamos decir que el sistema está completamente arrancado.

Crear los enlaces simbólicos.

Nosotros mismos podemos crear esos enlaces simbólicos y decir qué servicio se iniciará en cada nivel.
Estos enlaces se pueden crear con el comando update-rc.d. Ejemplo, si deseamos que el servicio ssh se arranque cuando el servidor inicia en los niveles 3, 4 y 5 y no arranque cuando inicia en los niveles 1, 2 y 6, ejecutaremos el siguiente comando (Ojo, no olvidar el punto del final (.) al escribir el comando):


De esta forma se crearán enlaces simbólicos de arranque con nombre S25ssh en las carpetas /etc/rc3.d, /etc/rc4.d y /etc/rc5.d  y de parada con nombre K85ssh en las carpetas /etc/rc0.d,/etc/rc1.d, /etc/rc2.d y /etc/rc6.d.




Programas para determinar el nivel de arranque de servicios.

No solo se usa el comando update-rc.d. También se usan programas muy sencillos para el usuariocomo sysv-rc-conf (modo texto) y bum (entorno gráfico).

Mostraré como lo haríamos con sysv-rc-conf, que lo instalaré con apt-get install y después lo ejecuto en consola con la orden:
$ sudo sysv-rc-conf


Su interfaz es muy intuitiva y nos muestra todos los servicios que tenemos instalados y moviendo el cursor con el teclado o ratón nos permite seleccionar los niveles con los que cada servicio arrancará, creando por tanto los enlaces simbólicos en sus respectivos directorios rcN.d.

Distribuciones que lo usan.


Estas son las distribuciones que lo usan:

·         Se comenzó a usar en Fedora 9, aunque en Fedora 15 ha sido reemplazado por systemd.
·        Red Hat incluye Upstart en Red Hat Enterprise Linux 6Como resultado, también es usado por sus variantes: Centos, Scientific Linux y Oracle Linux.
·         NixOS usó Upstart por defecto en sus comienzos.
·         Debian consideró realizar el cambio en la versión Squeeze.
·         openSUSE 11.3 Milestone 4 usó también Upstart pero no por defecto.




Diferencias entre Inittab y Upstart.

1. Pasamos de un aspecto más estático fijo a un método más dinámico, basado en la noción de tareas de entor­nos. 
2. Upstart, a diferencia de inittab, inicia o detiene una tarea en un nivel de eje­cución en lugar de cambiar globalmente todo el nivel. En el directorio de eventos se puede añadir o modificar fácilmente un script.



Fuentes:


http://es.wikipedia.org/wiki/Init
http://aprendiendoausarlinux.wordpress.com/category/etc/etcinittab/
http://diferenciasentreinittabyupstart.blogspot.com.es/
http://systemadmin.es/2009/10/el-proceso-init-y-el-fichero-etcinittab
http://www.freebsd.org/doc/es/articles/explaining-bsd/article.html#idp60280368
http://www.ite.educacion.es/formacion/materiales/85/cd/linux/m7/index.html
http://www.jl2.es/gnulinux/sistema-de-arranque-upstar-sustituto-de-init-de-system/

Comentarios

Entradas populares de este blog

Comando TOP y HTOP

Copias incrementales con Rsync. Linux a Windows (Parte 1).