Run level

Un article de Wikipédia, l'encyclopédie libre.

Le run level, ou niveau de fonctionnement, est une fonction utilisée par les systèmes d'exploitation de type Unix ou Linux utilisant le système d'init (système V).

Il existe différents run levels, qui correspondent chacun à un ensemble d'applications à mettre en marche. Ainsi, quand le système est démarré, il passe par le run level 1 puis par le run level 2, et il est possible de configurer les applications qui seront lancées à ce moment ; il existe en tout sept run levels, le run level 6 étant généralement affecté au redémarrage de l'ordinateur, et le run level 0 à l'arrêt. S'y ajoute souvent le niveau S (mode "single user").

Il est ainsi possible de configurer plusieurs run levels fonctionnant différemment : les niveaux utilisés sans redémarrer ou arrêter la machine sont donc de deux à cinq, et il est possible de passer de l'un à l'autre.

Pour passer d'un run level à l'autre, une commande comme "init X" suffit (X étant le niveau d'exécution choisi).

Le run level par défaut au démarrage est défini dans le fichier /etc/inittab.

Il est également possible de déterminer dans la commande de démarrage quel run level doit démarrer, simplement en ajoutant son chiffre à la suite de la commande d'initialisation du système.

Il n'y a pas de hiérarchie ni de chronologie dans les run levels (il n'est pas nécessaire de passer par 3 pour aller de 2 à 4, par exemple).

Sommaire

[modifier] Configuration

Pour définir le run level par défaut, il faut mettre une ligne comme

id:5:initdefault: (ici, le run level 5)

dans le fichier /etc/inittab.

Il ne faut pas mettre 0 ou 6 comme valeur numérique.

[modifier] Organisation « à la System V »

Ce type d'organisation est utilisé dans les distributions Red Hat, Debian, etc. Les scripts de lancement des applications sont regroupés dans un répertoire commun /etc/init.d. Ces scripts reçoivent un paramètre qui peut être start, stop, restart, etc. Ils ont généralement la structure suivante :

#!/bin/sh
case $1 in
start) ...
  # commandes pour démarrer le service
  ....
;;
stop) 
  # commandes pour arrêter le service
  ....
;;
restart)
  $0 stop
  sleep 1
  $0 start
;;
esac

À chaque niveau correspond un répertoire (typiquement /etc/rc.d/rc2.d pour le niveau 2 de liens symboliques vers des fichiers de /etc/init.d. Ces liens symboliques portent des noms commençant par la lettre S ou K, suivi d'un numéro sur deux chiffres.

Lors d'un changement de run level (commandes init et telinit)

  • les scripts dont le nom commence par un K dans le répertoire correspondant au niveau courant sont lancés (dans l'ordre des numéros) avec le parametre stop, ce qui a normalement pour effet d'arrêter le service correspondant.
  • les scripts du nouveau niveau qui commencent par S sont activés avec le paramêtre start.

[modifier] Signification conventionnelle des run level

Les run levels ne sont pas tous normalisés.

[modifier] Les run levels standard

  • 0 : Arrêt
  • 1 : Mode monoutilisateur
  • 6 : Redémarrage

[modifier] Les run levels Debian et Ubuntu

Toutes les distributions basées sur Debian, comme Ubuntu, ne font aucune distinction entre les runlevels allant de 2 à 5. Voir pour cela la FAQ de Debian au démarrage.

  • 0 : Arrêt
  • 1 : Mode maintenance
  • 2 à 5 : Mode multiutilisateur complet avec serveur graphique si installé.
  • 6 : Redémarrage

[modifier] Les run levels type RedHat (Mandriva, etc.)

  • 0 : Arrêt
  • 1 : Mode maintenance
  • 2 : Mode multiutilisateur (sans la couche réseau)
  • 3 : Mode multiutilisateur (avec la couche réseau)
  • 4 : Inutilisé
  • 5 : Mode multiutilisateur avec serveur graphique
  • 6 : Redémarrage

[modifier] Article connexe