Le processus de démarrage d’un système est un élément important à bien maitriser pour toute personne ayant l’ambition de devenir un jour l’administrateur d’un système Debian ou de toute autre distribution Linux.
Au démarrage de la machine, le BIOS (chargé en mémoire morte : la ROM (Read Only Memory))active le chargeur.
Le chargeur active le système d’exploitation installé ou propose d’activer un des systèmes d’exploitation déjà installé sur la machine, en cas de configuration multi-boot.
Le noyau du système (Kernel) active ensuite le 1er programme de démarrage /sbin/init dont le PID vaut toujours 1, car init est l’ancêtre de tous les processus système.
Le fichier /sbin/init consulte le fichier /etc/inittab pour connaitre l’ordre dans lequel il doit démarrer les processus du système.
Le schéma de lancement des processus a donc l’aspect d’un arbre généalogique ayant plusieurs niveaux, numéroté de 0 à 6 en pour une grande majorité des distributions Linux et de 0 à 2 pour les systèmes Debian. Ces niveaux dans l’arborescence de démarrage des processus systèmes sont appelés niveaux d’init, Run Level, ou encore RC (Run Commands) en référence à l’ancien système de lancement des processus système sous Unix version 7.
Runlevel ou niveaux d’init sous Linux
Parmi les 7 niveaux d’init (runlevel) d’un système Linux, certains niveaux correspondent à une utilisation particulière
- 0 arrêt du système
- 1,SSsignifie synonyme. C’est le runlevel du mode maintenance (mono-utilisateur)
- 2,3,4,5 les niveaux d’init multi-utilisateurs
- 6 le niveau de redémarrage du système
RC alias service
Un RC est est un processus qui se lance au démarrage du système à un niveau d’init (runlevel) et se termine à un autre niveau d’init (runlevel). Un service est constitué au minimum :
- d’ un fichier de script répertorié dans /etc/init.d
- d’un lien symboliques de démarrage comme S10service placé dans l’un des 6 répertoires /etc/rc0.d/, /etc/rc1.d/, /etc/rc2.d/, /etc/rc3.d/, /etc/rc4.d/, /etc/rc5.d/. Chaque répertoire contient les liens symboliques des scripts à démarrer ou à terminer. S est mis pour indiquer le démarrage (Start), et le chiffre qui suit (10) donne l’ordre d’exécution du service au sein du runlevel concerné.
- d’un lien symboliques pour l’arrêt du service (kill), par exemple K20service placé dans l’un des 6 répertoires /etc/rc1.d/, /etc/rc2.d/, /etc/rc3.d/, /etc/rc4.d/, /etc/rc5.d/, /etc/rc6.d/. K est mis pour indiquer le Kill du service (son arrêt), et le chiffre qui suit (ici 20) donne l’ordre d’arrêt du service au sein du runlevel concerné.
Les commandes de gestion des runlevels ( niveaux d’init )
Les commandes telinit et runlevel sont accessibles uniquement par l’administrateur (compte root).
runlevel |
affiche le runlevel courant.
grep initdefault /etc/inittab |
affiche le runlevel au démarrage, sous Debian, on est en runlevel 2. Ici on utilise le format du fichier inittab en cherchant la ligne contenant initdefault.
grep -e '^[^:]*:[^:]2*' -e '^[^:]*::' /etc/inittab |
affiche les programmes associés au niveau d’init 2
shutdown -h +20 |
h signifie halt, le système s’arrêtera complètement dans 20 minutes
shutdown -c |
interruption de l’arrêt déclenché par la commande précédente (doit être exécute à partir d’un autre terminal)
shutdown now |
passe en mode maintenance
telinit 2 |
repasse en runlevel 2.
Les commandes de gestion des services
/etc/init .d /apache2 start |
/etc/init .d /apache2 stop |
arrête le service Apache2
/etc/init .d /apache2 reload |
recharge la configuration du service Apache2
/etc/init .d /apache2 restart |
redémarre le service Apache2
source : http://www.admin-debian.com
Filed under: Articles | Tagged: Démarrage, init, inittab, RC, runlevel, service | Leave a comment »