Runlevels

Rafa Morales 11 Septiembre 2013
3min
0
Linux

Los sistemas Linux trabajan en función a los runlevels, niveles de ejecución o modos de ejecución. Cada uno de los diferentes runlevels definidos en el sistema posee asignados una serie de servicios que deberían de activarse.

Después de la carga del kernel, Linux da paso al runlevel predeterminado que tenga configurado y que nosotros podemos modificar y, como hemos dicho, comenzará a arrancar los servicios que dicho runlevel tenga asignados. Pero no vamos a hablar de diferentes formas de arrancar solamente el sistema, si no de diferentes estados en los que se puede encontrar trabajando el sistema, y que nosotros configuraremos en función de los servicios que deseemos tener corriendo en el sistema en ese estado en concreto.

Los niveles de ejecución suelen varias de unas distribuciones a otras, pero normalmente suelen tener unas características comunes. Nos solemos encontrar 7 runlevels o niveles, y su utilización suele ser la siguiente:

  • Nivel 0: Apagado. Si nuestro sistema se encuentra en este nivel sabremos que se está produciendo actualmente un apagado del mismo.

  • Nivel 1, S, s: Monousuario, sólo con el usuario root. Se utiliza con fines de mantenimiento. Se puede arrancar desde GRUB en este modo incluyendo la opción single en los parámetros del kernel. También se le conoce como Recovery Mode (Modo de Recuperación) en algunas distribuciones.

  • Nivel 2: Multiusuario con red e interfaz gráfica en Debian y derivados.

  • Nivel 3: Multiusuario con red en modo consola en Fedora, Madriva y RedHat.

  • Nivel 4: Reservada para uso local.

  • Nivel 5: Multiusuario con red e interfaz gráfica en Fedora, Mandrila y RedHat.

  • Nivel 6: Reinicio del sistema.

 

Comprobando nuestro runlevel actual

Para comprobar el runlevel que actualmente se está ejecutando en nuestro sistema sólo debemos ejecutar el siguiente comando:

runlevel
N 2

La salida nos muestra como primer carácter el runlevel anterior al que estamos ejecutando, y como segundo carácter el runlevel actual. El carácter “N” indica que anteriormente no se ha ejecutado otro runlevel diferente desde que se arrancó el sistema.

 

Cambiando de runlevel predeterminado

Podemos cambiar el runlevel que se ejecuta al arrancar la máquina.

Si utilizamos SysV debemos localizar en el fichero /etc/inittab la siguiente línea y modificar el número que indica el runlevel por el que deseemos arrancar. Si nos fijamos en la sintaxis de esa línea no se indica al final el process como se explicó anteriormente.

id:2:initdefault:

Si estamos utilizando Upstart deberemos localizar en el fichero /etc/init/rc-sysinit.conf la siguiente línea e indicar el número de runlevel a arrancar.

env DEFAULT_RUNLEVEL=2

 

Cambiando de runlevel

Podemos cambiar de runlevel utilizando la siguiente orden en la que indicaremos el runlevel al que queremos cambiar:

init 1

Existe otro comando que realiza lo mismo pero antes de realizar el cambio hace una lectura del fichero /etc/inittab si existe.

telinit 1

Se podría cambiar al runlevel 0 y 6 para detener o reiniciar la máquina, pero no se suele utilizar a no ser que estemos en modo monousuario, ya que de esta forma no se les avisa a los usuarios del apagado o reinicio del sistema. Por lo que el comando recomendado para esto es shutdown.