¿Qué son los «niveles de ejecución» en Linux?

imagen

Cuando se inicia un sistema Linux, ingresa a su nivel de ejecución predeterminado y ejecuta los scripts de inicio asociados con ese nivel de ejecución. También puede cambiar entre niveles de ejecución; por ejemplo, hay un nivel de ejecución diseñado para operaciones de recuperación y mantenimiento.

Tradicionalmente, Linux usaba scripts de inicio de estilo System V, mientras que los nuevos sistemas de inicio eventualmente dejarán obsoletos los niveles de ejecución tradicionales, todavía no lo han hecho. Por ejemplo, el sistema Upstart de Ubuntu todavía usa scripts tradicionales de estilo System V.

¿Qué es un nivel de ejecución?

Cuando un sistema Linux arranca, lanza los procesos init . init es responsable de lanzar los otros procesos en el sistema. Por ejemplo, cuando inicia su computadora Linux, el kernel inicia init, e init ejecuta las secuencias de comandos de inicio para inicializar su hardware, abrir redes, iniciar su escritorio gráfico.

Sin embargo, no hay un solo conjunto de scripts de inicio que init ejecuta. Hay varios niveles de ejecución con sus propios scripts de inicio; por ejemplo, un nivel de ejecución puede abrir la conexión en red e iniciar el escritorio gráfico, mientras que otro nivel de ejecución puede dejar la red desactivada y omitir el escritorio gráfico. Esto significa que puede pasar del “modo de escritorio gráfico” al “modo de consola de texto sin conexión en red” con un solo comando, sin iniciar y detener manualmente diferentes servicios.

Más específicamente, init ejecuta los scripts ubicados en un directorio específico que corresponde al nivel de ejecución. Por ejemplo, cuando ingresa al nivel de ejecución 3 en Ubuntu, init ejecuta los scripts ubicados en el directorio /etc/rc3.d.

imagen

Al menos, así es como funciona con un sistema de inicialización System V tradicional: las distribuciones de Linux están comenzando a reemplazar el antiguo sistema de inicialización de System V. Si bien Upstart de Ubuntu actualmente mantiene la compatibilidad con los scripts de inicio de SysV, es probable que esto cambie en el futuro.

Los niveles de ejecución

Algunos niveles de ejecución son estándar entre las distribuciones de Linux, mientras que algunos niveles de ejecución varían de una distribución a otra.

Los siguientes niveles de ejecución son estándar:

  • 0 – Detener (apaga el sistema).
  • 1 – Modo de usuario único (el sistema se inicia en modo de superusuario sin iniciar demonios o redes. Ideal para iniciar en un entorno de recuperación o diagnóstico).
  • 6 – Reiniciar

Los niveles de ejecución 2-5 varían según la distribución. Por ejemplo, en Ubuntu y Debian, los niveles de ejecución 2-5 son los mismos y proporcionan un modo multiusuario completo con conexión en red e inicio de sesión gráfico. En Fedora y Red Hat, el nivel de ejecución 2 proporciona el modo multiusuario sin conexión en red (solo inicio de sesión de la consola), el nivel de ejecución 3 proporciona el modo multiusuario con conexión en red (solo inicio de sesión de la consola), el nivel de ejecución 4 no se usa y el nivel de ejecución 5 proporciona el modo multiusuario con conexión en red y gráfica.

Cambiar a un nivel de ejecución diferente

Para cambiar a un nivel de ejecución diferente mientras el sistema ya se está ejecutando, use el siguiente comando:

sudo telinit #

Reemplace # con el número del nivel de ejecución al que desea cambiar. Omita sudo y ejecute el comando como root si está ejecutando una distribución que no usa sudo.

imagen

Arrancar directamente a un nivel de ejecución específico

Puede seleccionar un nivel de ejecución para arrancar desde el cargador de arranque – Grub, por ejemplo. Al inicio del proceso de inicio, presione una tecla para acceder a Grub, seleccione su entrada de inicio y presione e para editarla.

sshot-1

Puede agregar single al final de la línea de Linux para ingresar al nivel de ejecución de usuario único (nivel de ejecución 1). (Presione Ctrl + x para iniciar después). Es lo mismo que la opción de modo de recuperación en Grub.

imagen

Tradicionalmente, podría especificar un número como parámetro del kernel y arrancaría en ese nivel de ejecución; por ejemplo, usando 3 en lugar de single para arrancar en el nivel de ejecución 3. Sin embargo, esto no parece funcionar en las últimas versiones de Ubuntu. Upstart no parece permitirlo. De manera similar, la forma en que cambie el nivel de ejecución predeterminado dependerá de su distribución.


Si bien el demonio Upstart de Ubuntu todavía emula el sistema de inicio SystemV, gran parte de esta información cambiará en el futuro. Por ejemplo, Upstart se basa en eventos: puede detener e iniciar servicios cuando ocurren eventos (por ejemplo, un servicio podría iniciarse cuando un dispositivo de hardware está conectado al sistema y detenerse cuando se quita el dispositivo). Fedora también tiene su propio sucesor. para init, systemd.