Guide des Runlevels sous Linux

Compréhension des Runlevels dans les systèmes Linux

Introduction à init

Dans le processus de démarrage de Linux, init constitue le premier processus utilisateur (PID=1). Ses responsabilités principales incluent :

  • Déterminer le niveau d'exécution (runlevel) du système en se basant sur les fichiers de configuration ;
  • Démarrer les services et processus correspondants ;
  • Gérer les opérations d'arrêt et de redémarrage.

On peut considérer init comme :

Le "contrôleur de trafic" du système Linux, décidant de l'état de fonctionnement dans lequel le système doit entrer.

Les Niveaux d'Exécution (Runlevels)

Les niveaux d'exécution représentent le mode de travail actuel du système Linux. Chaque niveau active différents services et fonctionnalités.

Par exemple :

  • Certains niveaux autorisent uniquement les connexions en ligne de commande ;
  • D'autres activent l'interface graphique ;
  • Certains sont réservés à la maintenance sécurisée ou à l'arrêt du système.

Définitions traditionnelles des Runlevels SysV Init (init 0-6)

Niveau Nom Fonction
0 Arrêt (Halt) Éteint le système (équivalent à shutdown -h now)
1 Mode monoutilisateur Uniquement l'administrateur peut se connecter, pour la maintenance (comme la réparation de systèmes de fichiers)
2 Mode multi-utilisateurs (sans réseau) Autorise plusieurs utilisateurs, mais sans services réseau
3 Mode multi-utilisateurs (ligne de commande) Mode courant : multi-utilisateurs + réseau + sans interface graphique
4 Réservé (personnalisable) Laissé à la disposition des utilisateurs pour des besoins spécifiques
5 Mode graphique multi-utilisateurs Active l'interface graphique (X Window / GNOME / KDE)
6 Redémarrage (Reboot) Redémarre le système (équivalent à reboot)

Exemples concrets

  • init 0 → Arrêt immédiat
  • init 1 → Mode monoutilisateur, réservé à l'administrateur pour les réparations
  • init 3 → Mode courant pour les serveurs (ligne de commande, connexion SSH possible)
  • init 5 → Mode courant pour les postes de travail (interface graphique)
  • init 6 → Redémarrage du système

⚠️ **Attention : n'exécutez pas init 0 ou init 6 au hasard !**Ces commandes éteignent ou redémarrent immédiatement le système, entraînant la perte de toutes les données non sauvegardées.

Consultation et changement de niveau d'exécution

1. Vérifier le niveau d'exécution actuel

runlevel

Exemple de sortie :

N 3

  • N indique le niveau précédent (N pour "none" lors du premier démarrage)
  • 3 indique que le niveau actuel est 3 (mode multi-utilisateurs en ligne de commande)

2. Changer de niveau d'exécution

sudo init 5

Cela passe au mode interface graphique (niveau 5).

On peut aussi utiliser :

sudo telinit 3

telinit est un alias de init, mais sa version est plus recommandée.

Configuration du niveau d'exécution par défaut

Dans les anciens systèmes SysV init, le niveau par défaut est stocké dans :

/etc/inittab

Exemple de contenu :

id:3:initdefault:

Cela signfiie que le système démarrera par défaut au niveau 3.

Les nouveaux concepts dans systemd (applicable à Ubuntu 16.04+ / CentOS 7+)

Les systèmes Linux modernes (comme Ubuntu 20.04, CentOS 7 et versions ultérieures) utilisent systemd à la place de SysV init. systemd n'utilise plus les numéros de "niveaux d'exécution", mais plutôt le concept de cibles (targets).

Ancien runlevel Cible systemd correspondante Description
0 poweroff.target Arrêt
1 rescue.target Mode monoutilisateur
2,3,4 multi-user.target Mode multi-utilisateurs en ligne de commande
5 graphical.target Mode interface graphique
6 reboot.target Redémarrage

Exemples d'utilisation avec systemd

Vérifier le niveau d'exécution actuel

systemctl get-default

Définir le niveau d'exécution par défaut

sudo systemctl set-default multi-user.target

Changer de niveau d'exécution

sudo systemctl isolate graphical.target

Arrêt et redémarrage (méthode recommandée)

sudo systemctl poweroff
sudo systemctl reboot

Recommandations pratiques

Objectif Commande recommandée
Passer temporairement à l'interface graphique sudo systemctl isolate graphical.target
Définir définitivement le démarrage en ligne de commande sudo systemctl set-default multi-user.target
Entrer en mode maintenance monoutilisateur Sélectionner "Advanced options → Recovery mode" dans le menu de démarrage ou exécuter systemctl rescue
Arrêt sécurisé sudo systemctl poweroff
Redémarrage sécurisé sudo systemctl reboot

Résumé conceptuel

Système traditionnel :

niveau d'exécution init
│
├─ 0 → Arrêt (poweroff)
├─ 1 → Mode monoutilisateur (rescue)
├─ 2 → Multi-utilisateurs (sans réseau)
├─ 3 → Multi-utilisateurs (ligne de commande)
├─ 4 → Personnalisable
├─ 5 → Interface graphique
└─ 6 → Redémarrage

Équivalent systemd :

0 → poweroff.target
1 → rescue.target
3 → multi-user.target
5 → graphical.target
6 → reboot.target

Cosneils pour débutants

  • **Pour débuter, utilisez le niveau 3 (multi-user.target)**C'est l'environnement courant pour les serveurs, stable et peu gourmand en ressources.
  • L'interface graphique (niveau 5) convient aux postes de travail ou à l'apprentissage.
  • Le mode monoutilisateur (niveau 1) est réservé à la réparation du système ou à la réinitialisation du mot de passe root.
  • N'exécutez jamais init 0 ou init 6 à la légère !

Exercices pratiques

  1. Vérifier le niveau d'exécution actuel
runlevel

  1. Passer en mode monoutilisateur
sudo systemctl isolate rescue.target

  1. Définir le démarrage par défaut en mode ligne de commande
sudo systemctl set-default multi-user.target

  1. Restaurer le mode interface graphique
sudo systemctl set-default graphical.target

Étiquettes: Linux SysV init systemd runlevel target

Publié le 13 juillet à 06h02