¿Qué es Runlevel 'S' en Debian / Ubuntu para


8

Según Wikipedia , se supone que 'S' es un nivel de ejecución estándar: "Modo de usuario único". Pero si no me equivoco, el modo de usuario único en Debian es Runlevel 1. Un artículo de Debian que encontré afirmaciones, que 'S' es un nivel de ejecución "que el sistema usa en su camino a otro nivel de ejecución". Interesante...

En realidad, siempre había ignorado este nivel de ejecución hasta ahora, pero hoy jugué con Firestarter (sí, realmente, un firewall de usuario final) solo porque tenía curiosidad, qué reglas de firewall generaría. Pero luego me di cuenta de que crea un enlace de inicio en /etc/rcS.d, y me pregunté si mi script de firewall también debería tener eso.

Actualizar

¡Ahora estoy aún más interesado en saber qué es realmente en Debian / Ubuntu , porque el paquete Shorewall (que es un paquete fuertemente "Debianized") también crea su (¡solo!) Gancho de inicio en rcS.d!

Respuestas:


3

Miro los niveles de ejecución de esta manera:

 S - true single user mode usually drops you into a minimal root shell
 1 - Administrative mode, you get a standard login request before access
 2 - Multi-user without TCP/IP networking -- could use serial ports for other logins
 3 - Multi-user with TCP/IP networking and text 
 4 - To be determined by the system owner
 5 - Multi-User with TCP/IP networking and graphic console 
 6 - reboot
 0 - shutdown and power down

Por lo tanto, realmente se necesita un firewall si TCP / IP está en funcionamiento y eso generalmente ocurre solo en Init State 3.


1
Todo este concepto de nivel de ejecución es un legado del pasado. Hoy en día es generalmente el modo de usuario único (para mantenimiento) y se utiliza algún otro modo normal (como 2 o 5 dependiendo de la distribución). Realmente no veo un caso de uso para nada más.
cstamas

En realidad, peor aún, las distribuciones más recientes están eliminando todos los niveles de ejecución (actualmente siendo el soporte como asuntos heredados) y yendo a estados nombrados con dependencias (ver Fedora 15).
mdpc

3

Todo lo anterior parece evitar una respuesta directa a la pregunta formulada.

Por todo lo que puedo encontrar, los rcS.dscripts se implementan como es el Ssignificado de " inicio ", no " único ".

Todos se ejecutan durante el arranque. Si luego desea utilizar el nivel de ejecución 1, las secuencias de comandos rc1.dse ejecutan (que puede estar bastante vacío, dado todo el trabajo que acabamos de hacer rcS)

Más concretamente, los rcSscripts se ejecutan en el camino, de manera rc3tan efectiva que el sistema se coloca en modo de usuario único, luego tiene un replanteamiento y decide lo que REALMENTE debería estar haciendo. Muy confuso y sobre todo mal documentado.

Como prueba, si examina /etc/inittab, encontrará:

 # Boot-time system configuration/initialization script.<br>
 # This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

seguido más tarde por muchas líneas parecidas a:

l3:3:wait:/etc/init.d/rc 3

1

Runlevel 1 también se conoce como runlevel s.

En los sistemas basados ​​en Debian, este es el modo de usuario único / mínimo . Ver Debian Runlevel :

El nivel de ejecución es un dígito del 0 al 6 o la letra S. Los niveles de ejecución 0, 6 y S están reservados para el apagado, reinicio y modo de usuario único respectivamente.


0

S es para el modo de usuario único.

http://wiki.debian.org/RunLevel


Entonces, si un script solo tiene un enlace de inicio en el nivel de ejecución S (como, por ejemplo, Shorewall), y arranco al nivel de ejecución '2', ¿la secuencia de arranque iniciará el script?
Chris Lercher

En Linux, si su estado predeterminado (como se describe en / etc / inittab) es N, a diferencia de UNIX, solo los elementos 'S' en /etc/rc.d/rcN.d (esta ubicación puede variar dependiendo de la distribución de Linux) se ejecutará durante el inicio, no se utilizará ningún otro directorio de inicio.
mdpc

Por lo general, establece su nivel de ejecución predeterminado en inittab. Los números aumentan. Entonces, para su ejemplo, si su init está configurado en S solo que es lo mismo que el nivel de ejecución 1. En el arranque, su sistema comenzará en el nivel de ejecución 1 y aumentará la ejecución de todos los scripts de inicio para ese nivel, luego incremente el nivel de ejecución y repita hasta que llega al nivel de ejecución predeterminado especificado en inittab. Aquí hay dos. Entonces, lo que esté configurado para activarse en 1 o 2 estará activado.
dmourati

1
¡Tenga en cuenta que mi pregunta es específica de Debian / Ubuntu! Simplemente intenté lo siguiente: puse un script simple /etc/rcS.dy /etc/rc2.dcada uno escribió un mensaje corto (con una marca de tiempo) en un archivo de registro. Resultado: después del arranque, tengo un mensaje de registro para rcS, y 5 segundos después un mensaje de registro para rc2.
Chris Lercher

Para cambiar el nivel de ejecución predeterminado en el que se iniciará el sistema, modifique la variable DEFAULT_RUNLEVEL en el archivo /etc/init/rc-sysinit.conf. Por ejemplo, para hacer que el sistema arranque por defecto en modo de usuario único, establezca: env DEFAULT_RUNLEVEL = 1
dmourati

0

Además de la respuesta proporcionada por mdpc, en el nivel de ejecución 1, no se inician demonios (servicios).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.