• Catégories

Le démarrage et les services RC sous Linux

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