A cosa serve Runlevel 'S' su Debian / Ubuntu


8

Secondo Wikipedia , "S" dovrebbe essere un runlevel standard: "Modalità utente singolo". Ma se non sbaglio, la modalità per utente singolo su Debian è Runlevel 1. Un articolo di Debian che ho trovato afferma che "S" è un runlevel "che il sistema usa nel suo cammino verso un altro runlevel". Interessante...

In realtà, finora ho sempre ignorato praticamente questo runlevel, ma oggi ho giocato con Firestarter (sì, davvero, un firewall per l'utente finale) solo perché ero curioso, quali regole del firewall avrebbe generato. Ma poi ho notato che crea un hook di avvio in /etc/rcS.d, e mi chiedevo se anche il mio script del firewall dovesse avere quello?

Aggiornare

Ora sono ancora più interessato a sapere cosa sia effettivamente su Debian / Ubuntu , perché il pacchetto Shorewall (che è un pacchetto fortemente "Debianized") crea anche il suo (unico!) Gancio di avvio in rcS.d!

Risposte:


3

Guardo i runlevel in questo modo:

 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

Pertanto, un firewall è davvero necessario se TCP / IP è attivo e funzionante e ciò generalmente accade solo nello stato Init 3.


1
L'intero concetto di runlevel è una cosa del passato. Oggi è di solito la modalità utente singolo (per manutenzione) e viene utilizzata un'altra modalità normale (come 2 o 5 a seconda della distribuzione). Non vedo davvero un caso d'uso per nient'altro.
cstamas,

In realtà ancora peggio, le nuove distribuzioni stanno eliminando tutti i livelli di esecuzione tutti insieme (essendo attualmente il supporto per questioni legacy) e andando a stati nominati con dipendenze sotto di loro (vedi Fedora 15).
mdpc,

3

Tutto quanto sopra sembra aggirare una risposta diretta alla domanda posta.

Da tutto quello che posso trovare, gli rcS.dscript sono implementati come lo è l'acronimo Sdi " avvio " non " singolo ".

Vengono eseguiti tutti durante l'avvio. Se poi vuoi usare il livello di esecuzione 1, gli script in rc1.dvengono eseguiti (che potrebbe essere piuttosto vuoto, dato tutto il lavoro che abbiamo appena svolto rcS)

Più precisamente, gli rcSscript vengono eseguiti sulla strada per rc3- così efficacemente il sistema si posiziona in modalità utente singolo, quindi ripensa e decide cosa dovrebbe REALMENTE fare. Molto confuso e per lo più mal documentato.

Come prova, se si esamina /etc/inittab, si trova:

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

seguito in seguito da molte righe simili a:

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

1

Runlevel 1 è anche noto come runlevel s.

Nei sistemi basati su Debian questa è la modalità utente singolo / minima . Vedi Debian Runlevel :

Il runlevel è una cifra compresa tra 0 e 6 o la lettera S. I runlevel 0, 6 e S sono riservati rispettivamente allo spegnimento, al riavvio e alla modalità utente singolo.


0

S è per la modalità utente singolo.

http://wiki.debian.org/RunLevel


Quindi, se uno script ha solo un hook di avvio nel runlevel S (come ad esempio Shorewall), e avvio al runlevel '2', la sequenza di avvio avvierà lo script?
Chris Lercher,

In Linux, se il tuo stato predefinito (come descritto in / etc / inittab) è N, a differenza di UNIX, solo gli elementi 'S' in /etc/rc.d/rcN.d (questa posizione può variare a seconda della distribuzione Linux) eseguito durante l'avvio, non verrà utilizzata un'altra directory init.
mdpc,

In genere si imposta il runlevel predefinito in inittab. I numeri aumentano. Quindi, per esempio, se il tuo init è configurato solo in S che è lo stesso del runlevel 1. All'avvio, il tuo sistema inizierà al runlevel 1 e aumenterà l'esecuzione di tutti gli script di init per quel livello, quindi incrementa il runlevel e ripeti fino a quando arriva al runlevel predefinito specificato in inittab. Eccone due. Quindi tutto ciò che è stato configurato per accendersi in 1 o 2 sarà acceso.
dmourati,

1
Si noti che la mia domanda è specifica per Debian / Ubuntu! Ho appena provato quanto segue: ho inserito un semplice script /etc/rcS.de /etc/rc2.d, ciascuno scrivendo un breve messaggio (con un timestamp) in un file di registro. Risultato: dopo l'avvio, ho un messaggio di registro per rcS e 5 secondi dopo un messaggio di registro per rc2.
Chris Lercher,

Per modificare il runlevel predefinito in cui verrà avviato il sistema, modificare la variabile DEFAULT_RUNLEVEL nel file /etc/init/rc-sysinit.conf. Ad esempio, per fare in modo che il sistema si avvii di default in modalità utente singolo, impostare: env DEFAULT_RUNLEVEL = 1
dmourati,

0

Oltre alla risposta fornita da mdpc, nel livello di esecuzione 1, non vengono avviati daemon (servizi).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.