Au commencement était init

Lorsque le système démarre, après que le noyau a tout configuré et monté la racine du système de fichiers, il exécute le programme /sbin/init [31]. init est le père de tous les processus du système et il est chargé d'amener le système au niveau d'exécution ( runlevel ) voulu. Nous reviendrons sur les niveaux d'exécution dans la section suivante.

Le fichier de configuration d'init est /etc/inittab. Ce fichier possède sa propre page de manuel (inittab(5)), mais nous ne décrirons ici que quelques-unes des directives.

La ligne qui doit d'abord attirer votre attention est celle-ci :

si::sysinit:/etc/rc.d/rc.sysinit

Cette directive dit à init que /etc/rc.d/rc.sysinit doit être exécuté à l'initialisation du système (si pour System Init) avant tout autre chose. Pour déterminer le niveau d'exécution par défaut, init recherche ensuite la ligne contenant l'action initdefault :

id:5:initdefault:

En l'occurrence, init sait que le niveau d'exécution par défaut est 5. Il sait également que pour entrer dans le niveau 5, il lui faudra exécuter la commande suivante :

l5:5:wait:/etc/rc.d/rc 5

Vous constatez que la syntaxe pour chacun des niveaux d'exécution est similaire.

init est également chargé de relancer (respawn) certains programmes que lui seul est en mesure de relancer. C'est le cas, par exemple, de tous les programmes de connexion qui tournent sur chacun des 6 terminaux virtuels[32]. Pour la deuxième console virtuelle, cela donnera :

2:2345:respawn:/sbin/mingetty tty2



[31] Vous comprenez donc pourquoi placer /sbin sur un autre système de fichiers que le système de fichiers racine est une très mauvaise idée :-)

[32] En modifiant ce fichier, il vous est donc possible d'ajouter des consoles virtuelles (pour un maximum de 64) en suivant la syntaxe. Mais n'oubliez pas que X occupe également une console virtuelle ! Laissez-lui en au moins une...