Niveau :      
Résumé : init ; telinit ; /etc/init.d/rc

Qu'est-ce qu'un runlevel ?

C'est un niveau représentant l'état du système dans lequel tourne votre unix. Ce niveau porte un nom (relativement arbitraire) et définit un ensemble de programmes qui doivent être lancés ou arrêtés.

Qui gère les runlevels ?

C'est init qui s'occupe de définir le runlevel quand on lui demande.

Comment connaître le runlevel courant ?

$ runlevel #root
$ who -r #user

Comment changer un runlevel ?

Le runlevel est défini au boot par un paramètre au noyau, paramètre qui est retransmis à init. Pour changer le runlevel en cours de fonctionnement du système, il faut utiliser (en tant que root) la commande telinit

$ telinit 6

Comment changer le runlevel par défaut ?

Vous pouvez soit passer le paramètre au noyau au boot (linux 2), soit modifier /etc/inittab :

# runlevel 2 par défaut
id:2:initdefault:

Quels sont les runlevels existants ?

Les runlevel portent des numéros, bien que cela soit totalement arbitraire et n'impliquent pas de notion d'ordre. 3 niveaux sont clairement définis:

  • 0 : arrêt de la machine
  • 1 : mode mono utilisateur (en général sans réseau)
  • 6 : reboot de la machine

Les niveaux 2 à 5 sont laissés à la libre imagination des distributions. Pour debian ils sont tous identiques, 2 étant le niveau par défaut. Sous redhat, seuls le 3 (sans interface graphique) et le 5 (avec interface graphique) sont définis, celui par défaut étant le 5.

De plus un autre niveau existe, nommé S, il s'agit d'un niveau lancé lors du lancement de la machine avant les autres, quel que soit le runlevel. On l'appelle souvent single user bien que son nom devrait plutôt être start car cette fois il y a bien une notion d'ordre.

Où sont définis les runlevel ?

La définition se fait à deux endroits. Tout d'abord dans la configuration de init, c'est-à-dire dans /etc/inittab. C'est ici qu'on trouve les commandes qui doivent être lancées à chacun des runlevel. L'autre partie se situe dans /etc/rcX.d (où X représente le niveau) ou /etc/rc.d/rcX.d selon votre distribution.

Comment init change de runlevel ?

Init lit tout simplement son fichier de configuration /etc/inittab. Il repère toutes les lignes qui contiennent le nouveau runlevel dans son 2e champ. Vous y verrez donc en général le lancement des terminaux linux et quelques autres détails. Mais surtout, vous trouverez le lancement de /etc/init.d/rc, ceci est un script qui va lire sa configuration à un nouvel endroit.

Il va lire le contenu du répertoire /etc/rcX.d (où X est le nouveau runlevel) et lancer dans l'ordre tous les scripts qu'il y trouve. Ceux qui commencent par un K avec le paramètre stop et ceux qui commencent par un S avec le paramètre start. Attention, toutefois, il ne prend en compte que les scripts dont le nom commence par K ou S suivi de 2 chiffres.