Commandes de Démarrage de Linux
Mise à jour :
Sur Linux, la gestion des arrêts, démarrages et redémarrages s’appuie sur des commandes simples mais essentielles pour tout administrateur système. Comprendre ces commandes, ainsi que le fonctionnement des runlevels et leurs équivalents modernes sous systemd, permet de maîtriser le cycle de vie d’une machine Linux.
fonctionnement des commandes de démarrage
Les runlevels : héritage de SysVinit
Les runlevels sont des niveaux d’exécution qui définissent l’état d’un système Linux. Chaque niveau représente un mode précis de fonctionnement : arrêt complet, maintenance, mode multi-utilisateur ou interface graphique. Ce concept provient du modèle SysVinit, un héritage direct des systèmes Unix System V.
Historiquement, au démarrage du système, Linux lançait un script principal
(/etc/inittab
), qui déterminait le runlevel à atteindre. Chaque runlevel avait
des répertoires associés, tels que /etc/rc0.d
, /etc/rc1.d
, jusqu’à
/etc/rc6.d
. Ces répertoires contenaient des scripts nommés de façon
standardisée :
- SXXnom_du_service : démarrait un service.
- KXXnom_du_service : arrêtait un service.
L’ordre d’exécution était déterminé par les numéros XX
. Par exemple, au
runlevel 3 (multi-utilisateur avec réseau), Linux exécutait tous les scripts K
pour stopper les services inutiles du runlevel précédent, puis tous les scripts
S
pour activer les services requis.
Voici un récapitulatif des runlevels standards :
- 0 : arrêt du système (shutdown)
- 1 : mode mono-utilisateur (maintenance)
- 2 : multi-utilisateur sans réseau (variable selon les distributions)
- 3 : multi-utilisateur avec réseau (mode console)
- 4 : non standard (réservé à l’administrateur)
- 5 : multi-utilisateur avec interface graphique (X11)
- 6 : redémarrage du système
Ce système avait des limites : chaque changement de runlevel impliquait d’exécuter manuellement ou via script les modifications nécessaires, ce qui pouvait rendre la gestion lourde et peu flexible.
L’évolution vers systemd : la fin des runlevels classiques
Avec l’adoption massive de systemd dans la plupart des distributions Linux modernes (comme Debian, Ubuntu, CentOS, Arch Linux), la gestion des runlevels a été remplacée par une approche plus puissante : les targets.
Les targets dans systemd remplissent le même rôle que les runlevels, mais avec des avantages clés :
- Modularité : un target peut dépendre d’autres targets, ce qui permet d’organiser finement les services à lancer.
- Flexibilité : il est possible de créer ses propres targets pour des besoins spécifiques.
- Parallélisation : systemd lance les services en parallèle pour accélérer le démarrage.
Les principales équivalences entre les anciens runlevels et les nouveaux targets sont :
Runlevel (SysV) | Target (systemd) |
---|---|
0 | poweroff.target |
1 | rescue.target |
2 | multi-user.target |
3 | multi-user.target |
4 | multi-user.target |
5 | graphical.target |
6 | reboot.target |
Le mode par défaut est défini par un lien symbolique vers le target choisi. Pour vérifier le target par défaut :
systemctl get-defaultgraphical.target
Pour changer le target par défaut, utilisez la commande suivante :
sudo systemctl set-default multi-user.target
Changer l’état du système à la volée se fait également via la commande isolate
:
sudo systemctl isolate rescue.targetsudo systemctl isolate graphical.target
Cette commande interrompt les services inutiles pour le nouveau target et active uniquement ceux qui sont nécessaires.
Un fonctionnement plus dynamique et intégré
Outre la gestion des niveaux d’exécution, systemd gère l’ensemble du cycle de vie des services : démarrage, arrêt, redémarrage, surveillance et relance automatique en cas d’échec. Chaque target regroupe des unités (units), qui peuvent être :
- des services (.service)
- des points de montage (.mount)
- des dispositifs (.device)
- ou encore des sockets (.socket)
Cela permet une approche globale et moderne, où chaque élément du système est sous contrôle. Le démarrage est plus rapide et plus stable, car les dépendances sont gérées de manière explicite et optimisée.
Pour explorer tous les targets existants :
systemctl list-units --type=target
En résumé, si les runlevels représentaient des “niveaux fixes”, les targets de
systemd offrent une vision modulaire et adaptative de l’état du système.
Cela garantit à la fois compatibilité avec les outils traditionnels (via des
liens symboliques de compatibilité comme /lib/systemd/system/runlevel3.target
)
et une flexibilité accrue pour les besoins actuels des administrateurs systèmes.
Commandes pour arrêter une machine Linux
Arrêter proprement une machine Linux est une opération courante mais essentielle pour garantir l’intégrité du système de fichiers et éviter toute perte de données. Plusieurs commandes permettent de réaliser cette tâche, chacune avec des particularités et des options adaptées aux besoins spécifiques.
La commande shutdown
La commande shutdown est la méthode la plus classique pour planifier un arrêt immédiat ou différé. Elle informe les utilisateurs connectés de l’arrêt et leur laisse le temps de se préparer.
Exemples d’utilisation :
-
Arrêt immédiat :
Terminal window sudo shutdown -h now -
Arrêt dans 10 minutes :
Terminal window sudo shutdown -h +10 -
Avec un message personnalisé :
Terminal window sudo shutdown -h +5 "Maintenance programmée"
Pour annuler un arrêt programmé (avant que l’arrêt ne débute) :
sudo shutdown -c
halt : l’arrêt immédiat
La commande halt arrête immédiatement la machine sans forcément éteindre l’alimentation (sur certains matériels anciens).
sudo halt
Cette commande est généralement équivalente à shutdown -h now
mais sans la
même gestion des notifications.
poweroff : arrêter et éteindre
poweroff est similaire à halt
, mais son but est aussi d’éteindre la
machine complètement (utile pour les serveurs physiques).
sudo poweroff
Cette commande est souvent utilisée sur des systèmes où l’on souhaite s’assurer que l’alimentation est coupée après l’arrêt.
init 0 ou telinit 0
Ces commandes changent directement le runlevel du système à 0, ce qui correspond à un arrêt complet dans le modèle SysVinit.
sudo init 0# ousudo telinit 0
Elles restent compatibles avec de nombreuses distributions Linux même si systemd est maintenant la norme.
Avec systemd : systemctl poweroff
Sur les distributions modernes, systemctl permet de gérer facilement l’arrêt via targets :
sudo systemctl poweroff
Cette commande est la méthode recommandée avec systemd car elle suit la nouvelle architecture de gestion des services et des états.
Commandes pour redémarrer une machine Linux
Redémarrer une machine Linux est indispensable après certaines mises à jour critiques, des changements de configuration du noyau ou en cas de maintenance planifiée. Comme pour l’arrêt, plusieurs commandes existent pour redémarrer proprement le système.
reboot : le classique
La commande reboot est la méthode la plus directe pour redémarrer immédiatement la machine. Elle prévient les utilisateurs connectés, termine les processus en cours, démonte les systèmes de fichiers et relance la machine.
sudo reboot
Cette commande est rapide et fonctionne sur toutes les distributions, quelle que soit l’init utilisée.
shutdown -r : redémarrage planifié
La commande shutdown permet aussi de planifier un redémarrage, avec les mêmes options que pour l’arrêt.
-
Redémarrage immédiat :
Terminal window sudo shutdown -r now -
Redémarrage dans 5 minutes :
Terminal window sudo shutdown -r +5
Pour annuler un redémarrage programmé (avant qu’il ne commence) :
sudo shutdown -c
init 6 ou telinit 6
Pour les systèmes utilisant encore SysVinit ou pour des compatibilités anciennes, on peut forcer le passage au runlevel 6, qui correspond au redémarrage.
sudo init 6# ousudo telinit 6
Cela permet un redémarrage propre en suivant le modèle traditionnel des runlevels.
Avec systemd : systemctl reboot
Sous systemd, la commande recommandée est systemctl reboot. Elle respecte les nouvelles conventions de gestion des services et s’intègre pleinement au système moderne.
sudo systemctl reboot
Pour redémarrer directement en mode single-user ou vers un autre target après le redémarrage, on peut préciser la target souhaitée :
sudo systemctl reboot --target rescue.target
Redémarrer en mode maintenance
Le mode rescue (mode de secours) est une fonctionnalité essentielle pour les administrateurs systèmes confrontés à des problèmes critiques : corruption du système de fichiers, erreurs de configuration réseau, ou besoin de changer un mot de passe root perdu. Ce mode démarre un environnement minimaliste permettant de diagnostiquer et réparer un système sans démarrer tous les services habituels.
Différence entre mode rescue et mode single-user
Il existe souvent une confusion entre le mode rescue et le mode single-user (mono-utilisateur) :
-
Single-user (runlevel 1 / rescue.target) : Démarre un système avec un minimum de services et monte le système de fichiers en lecture/écriture. → Utilisé pour des tâches de maintenance rapide.
-
Mode rescue complet : Propose souvent un environnement complet avec des outils plus avancés, par exemple via un live CD ou un environnement de récupération.
Activer le mode rescue avec systemd
Pour basculer vers le mode rescue directement depuis un système en cours de fonctionnement :
sudo systemctl isolate rescue.target
Cette commande arrête tous les services non essentiels et active uniquement le strict minimum nécessaire pour la maintenance.
Pour démarrer directement en mode rescue lors du boot, modifiez la ligne de commande du noyau (dans le menu GRUB) :
- Éditez la ligne de démarrage en ajoutant
systemd.unit=rescue.target
à la fin. - Démarrez.
Activer le mode single-user (ancien SysVinit)
Sous SysVinit, le mode mono-utilisateur était accessible via le runlevel 1 :
sudo init 1# ousudo telinit 1
Cette méthode reste fonctionnelle sur certains systèmes ou via des cibles de compatibilité avec systemd.
Utilisation pratique : exemples courants
-
Réinitialiser un mot de passe root oublié :
-
Démarrez en mode rescue.
-
Montez le système de fichiers en lecture/écriture si nécessaire :
Terminal window mount -o remount,rw / -
Réinitialisez le mot de passe :
Terminal window passwd root
-
-
Corriger des erreurs de montage :
-
Passez en mode rescue.
-
Utilisez des outils comme
fsck
pour réparer les partitions :Terminal window fsck /dev/sdX
-
Mode rescue via live CD / USB
Si le système est totalement inopérant, le recours à un live CD (comme celui d’Ubuntu, Debian ou SystemRescue) permet d’accéder à un shell de secours, monter les partitions et effectuer des réparations :
sudo mount /dev/sdXn /mntsudo chroot /mnt
Contrôle de connaissances
Pourquoi ce contrôle ?
Cet contrôle va vous permettre de valider vos connaissances sur le sujet abordé dans le guide. Il comporte des QCM, des questions vrai/faux et des réponses ouvertes à un mot.
🕒 Le chronomètre commence dès que vous cliquez sur Démarrer le test. Vous devrez terminer l’examen avant la fin du temps imparti.
🎯 Pour réussir, vous devez obtenir au moins 80% de bonnes réponses.
💡 Je ne fournis pas directement les réponses aux questions. Cependant, si certaines sont complexes, des pistes d’explication pourront être proposées dans le guide ou après l’examen.
Bonne chance ! 🚀
Conclusion
La gestion des démarrages, arrêts et redémarrages sous Linux est essentielle pour tout administrateur système. Que ce soit via les anciennes commandes SysVinit ou les modernes commandes systemd, il est crucial de comprendre comment ces mécanismes fonctionnent pour garantir la stabilité et la sécurité du système. En maîtrisant ces commandes, vous serez en mesure de gérer efficacement le cycle de vie de vos machines Linux, que ce soit pour des opérations de maintenance, des mises à jour ou des interventions d’urgence.