Qu'est-ce que Runlevel 'S' sur Debian / Ubuntu pour

8

Selon Wikipedia , «S» est censé être un niveau d'exécution standard: «Mode mono-utilisateur». Mais si je ne me trompe pas, le mode mono-utilisateur sur Debian est le niveau d'exécution 1. Un article Debian que j'ai trouvé prétend que «S» est un niveau d'exécution «que le système utilise sur son chemin vers un autre niveau d'exécution». Intéressant...

En fait, j'avais toujours pratiquement ignoré ce niveau d'exécution jusqu'à présent, mais aujourd'hui j'ai joué avec Firestarter (oui, vraiment, un pare-feu d'utilisateur final) juste parce que j'étais curieux, quelles règles de pare-feu il générerait. Mais alors j'ai remarqué que cela crée un hook de démarrage dans /etc/rcS.d, et je me suis demandé si mon script de pare-feu devrait peut-être avoir cela aussi?

Mise à jour

Maintenant, je suis encore plus intéressé à savoir de quoi il s'agit réellement sur Debian / Ubuntu , car le paquet Shorewall (qui est un paquet fortement "Debianisé") crée également son (seulement!) Crochet de démarrage dans rcS.d!

Chris Lercher
la source

Réponses:

3

Je regarde les niveaux d'exécution de cette façon:

 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

Ainsi, un pare-feu est vraiment nécessaire si TCP / IP est opérationnel et cela ne se produit généralement que dans l'état initial 3.

mdpc
la source
1
Tout ce concept de niveau d'exécution est un héritage du passé. De nos jours, il s'agit généralement d'un mode utilisateur unique (pour la maintenance) et d'un autre mode normal (comme 2 ou 5 selon la distribution) est utilisé. Je ne vois pas vraiment de cas d'utilisation pour autre chose.
cstamas
En fait, pire encore, les dernières distributions suppriment tous les niveaux d'exécution (actuellement pris en charge en tant qu'héritage) et vont dans des États nommés avec des dépendances en dessous (voir Fedora 15).
mdpc
3

Tout ce qui précède semble contourner une réponse directe à la question posée.

De tout ce que je peux trouver, les rcS.dscripts sont implémentés de la même manière Sque " startup " et non " single ".

Ils sont tous exécutés au démarrage. Si vous souhaitez ensuite utiliser le niveau d'exécution 1, les scripts rc1.dsont exécutés (ce qui peut être assez vide, compte tenu de tout le travail que nous venons de faire rcS)

Plus précisément, les rcSscripts sont exécutés sur le chemin de rc3- si efficacement que le système se place en mode mono-utilisateur, puis repense et décide de ce qu'il doit vraiment faire. Très déroutant et généralement peu documenté.

Pour preuve, si vous examinez /etc/inittab, vous trouvez:

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

suivi plus tard de nombreuses lignes ressemblant à:

l3:3:wait:/etc/init.d/rc 3
David Collier
la source
1

Le niveau d'exécution 1 est également appelé niveau d'exécution.

Dans les systèmes basés sur Debian, c'est le mode mono-utilisateur / minimal . Voir Debian Runlevel :

Le niveau d'exécution est un chiffre compris entre 0 et 6 ou la lettre S. Les niveaux d'exécution 0, 6 et S sont réservés respectivement pour l'arrêt, le redémarrage et le mode mono-utilisateur.

jonasjacek
la source
0

S est pour le mode mono-utilisateur.

http://wiki.debian.org/RunLevel

dmourati
la source
Donc, si un script n'a qu'un hook de démarrage au niveau d'exécution S (comme par exemple Shorewall), et que je démarre au niveau d'exécution '2', la séquence de démarrage démarrera-t-elle le script?
Chris Lercher
Sous Linux, si votre état par défaut (tel que décrit dans / etc / inittab) est N, contrairement à UNIX, seuls les éléments 'S' dans /etc/rc.d/rcN.d (cet emplacement peut varier en fonction de la distribution Linux) seront être exécuté au démarrage, aucun autre répertoire init ne sera utilisé.
mdpc
Vous définissez généralement votre niveau d'exécution par défaut dans inittab. L'incrémentation des nombres. Donc, pour votre exemple, si votre init est configuré en S uniquement, c'est la même chose que le niveau d'exécution 1. Au démarrage, votre système démarrera au niveau d'exécution 1 et augmentera l'exécution de tous les scripts d'initialisation pour ce niveau, puis incrémentera le niveau d'exécution et répétez jusqu'à ce qu'il obtient le niveau d'exécution par défaut spécifié dans inittab. Ici, c'est deux. Donc, tout ce qui a été configuré pour être activé en 1 ou 2 sera activé.
dmourati
1
Veuillez noter que ma question est spécifique à Debian / Ubuntu! J'ai juste essayé ce qui suit: j'ai mis un script simple /etc/rcS.det /etc/rc2.d, chacun écrivant un court message (avec un horodatage) dans un fichier journal. Résultat: après le démarrage, j'ai un message de journal pour rcS et 5 secondes plus tard un message de journal pour rc2.
Chris Lercher
Pour changer le niveau d'exécution par défaut dans lequel le système va démarrer, modifiez la variable DEFAULT_RUNLEVEL dans le fichier /etc/init/rc-sysinit.conf. Par exemple, pour faire démarrer le système par défaut en mode mono-utilisateur, définissez: env DEFAULT_RUNLEVEL = 1
dmourati
0

En plus de la réponse fournie par mdpc, au niveau d'exécution 1, aucun démon (service) n'est démarré.

Yasser - TechToolbox
la source