SystemV e init: Linux en el recuerdo (¡o no tanto!)

Inclusive hoy, a principios de Noviembre de 2017, podemos encontrar equipos en producción que utilicen alguna distribución con SystemV e init. Probablemente se trate de Debian Wheezy (soportado por Debian LTS), por nombrar un ejemplo. Por eso, refrescar un poco la memoria sobre este venerable sistema de inicio de servicios no viene mal.

SystemV e init

Luego de que init (PID 1) es iniciado por el kernel, lee el archivo /etc/inittab para identificar los próximos pasos a seguir. Para empezar, se detecta el runlevel por defecto (2 en el siguiente ejemplo):

# The default runlevel.
id:2:initdefault:

A partir del mismo, se dirige al directorio /etc/rc2.d. En el mismo se encuentra una serie de enlaces simbólicos cuyos nombres comienzan con la letra S y un número de dos dígitos. Cada uno de ellos se refiere a un servicio que se debe levantar en el nivel de corrida correspondiente (por orden numérico y alfabético). Por ejemplo, en la Fig. 1 vemos que S01motd recibirá atención en primer lugar, seguido por S13rpcbind, y así sucesivamente. Entre los que compartan el mismo prefijo (como por ejemplo S16rsyslog y S16virtualbox-guest-utils), el orden de inicio se decide por orden alfabético. De esta manera, S16rsyslog será llamado primero que S16virtualbox-guest-utils.

SystemV e init: El runlevel 2
Figura 1 – SystemV e init: El runlevel 2

Bajo este esquema, se puede evitar que un servicio dado se inicie borrando el symlink correspondiente.

Desventajas

Con el correr del tiempo, las siguientes limitaciones se hicieron notorias:

  • El proceso de inicio de servicios es estrictamente síncrono. Se espera a que un daemon esté corriendo antes de iniciar el próximo). Esto impacta en el tiempo de inicio.
  • Necesidad de chequear dependencias antes de iniciar un servicio. Por ejemplo, que el servicio de red esté disponible antes de iniciar un web server.
  • Cualquier evento posterior al inicio del equipo (identificación y montaje de dispositivos extraíbles, por ejemplo) necesitan intervención manual del usuario.

Espero que este post, humilde descripción de la funcionalidad básica de SystemV e init, les haya resultado interesante.

¡Aprovechá la oportunidad de suscribirte al blog para recibir en tu correo el post nuestro de cada día, novedades, y promociones exclusivas!