Le rôle principal d'un système d'initialisation (init) est de démarrer et d'arrêter les processus essentiels. Linux a connu trois implémentations majeures d'init : System V, Upstart et systemd. Cette leçon se concentre sur la version la plus traditionnelle, System V init, souvent appelée SysV ou simplement systemv (prononcé 'System Five').
Pour déterminer si votre système utilise l'implémentation systemv, vérifiez l'existence d'un fichier /etc/inittab. Si ce fichier est présent, vous utilisez très probablement une distribution basée sur SysV.
Comment System V Gère les Processus
Le processus systemv init démarre et arrête les services séquentiellement. Par exemple, si un service nommé foo-b dépend de foo-a, foo-b ne peut pas démarrer tant que foo-a n'est pas entièrement opérationnel. Le système initv y parvient à l'aide de scripts shell. Ces scripts, situés dans des répertoires spécifiques, gèrent le démarrage et l'arrêt des services. Bien que vous puissiez écrire des scripts personnalisés, la plupart des systèmes s'appuient sur ceux pré-empaquetés qui gèrent les services essentiels du système d'exploitation.
Avantages et Inconvénients
L'avantage principal de cette approche séquentielle est sa simplicité et sa prévisibilité. Le dépannage des dépendances est simple car vous savez que foo-a démarre toujours avant foo-b. Cependant, le principal inconvénient du modèle init v est la performance, car les services sont généralement démarrés un par un, ce qui entraîne des temps de démarrage plus lents par rapport aux systèmes parallèles modernes.
Comprendre les Niveaux d'Exécution (Runlevels) dans System V
Dans un environnement systemv, l'état de la machine est défini par des niveaux d'exécution (runlevels), numérotés de 0 à 6. Ces modes peuvent varier légèrement entre les distributions Linux, mais ils suivent généralement cette convention standard :
- 0 : Arrêt (Shutdown)
- 1 : Mode Utilisateur Unique (Single User Mode)
- 2 : Mode multi-utilisateur sans mise en réseau
- 3 : Mode multi-utilisateur avec mise en réseau
- 4 : Inutilisé
- 5 : Mode multi-utilisateur avec mise en réseau et interface graphique (GUI)
- 6 : Redémarrage (Reboot)
Scripts et Répertoires Init
Lorsque votre système démarre, il vérifie son niveau d'exécution configuré et exécute les scripts correspondants. Ces scripts se trouvent généralement dans des répertoires comme /etc/rc.d/rc[runlevel].d/ ou dans un répertoire central /etc/init.d. Les scripts commençant par S (Start/Démarrer) sont exécutés au démarrage, tandis que ceux commençant par K (Kill/Tuer) sont exécutés lors de l'arrêt.
Les chiffres suivant S ou K dictent l'ordre d'exécution.
Par exemple :
pete@icebox:/etc/rc.d/rc0.d$ ls
K10updates K80openvpn
Dans cet exemple, passer au niveau d'exécution 0 (arrêt) exécutera d'abord le script pour tuer le service de mises à jour, suivi du script pour OpenVPN. Vous pouvez trouver le niveau d'exécution par défaut de votre machine dans le fichier /etc/inittab, où vous pouvez également le modifier.
Il est important de noter que System V a été largement remplacé par systemd dans la plupart des distributions Linux modernes. Cependant, vous pourriez toujours rencontrer le concept de niveaux d'exécution dans les systèmes d'initialisation plus récents, car ils fournissent souvent une couche de compatibilité pour prendre en charge les services hérités qui dépendent des scripts systemv init.