Après la première phase de démarrage d'un système Linux, le programme init est exécuté. Il a la charge de lancer les programmes et processus inscrits dans le fichier /etc/inittab. Init exécute les commandes en fonction du niveau d'exécution du système. On parle alors de runlevels.
LES DIFFERENTS NIVEAUX
Les niveaux d'exécution «classiques» sont les suivants : 0, 1, 2, 3, 4, 5, 6 et S. Il est également possible d'utiliser 7, 8, 9, a, b et c, mais ceux-ci ne sont quasiment jamais utilisés. A, b et c sont les niveaux appelés ondemand runlevels.
Parmi les niveaux «classiques», il faut distinguer :
Le niveau Q n'existe pas en tant que tel. Il s'agit plutôt d'un paramètre passé à la commande init pour forcer la relecture du fichier inittab.
Il reste donc les niveaux 2, 3, 4 et 5 qui sont personnalisables selon votre convenance par l'intermédiaire du fichier inittab.
LE FICHIER /ETC/INITTAB
Le contenu du fichier se présente sous forme de lignes avec la syntaxe suivante : code:niveau:action:commande.
Code est le label de la ligne.
Niveau correspond au(x) niveau(x) où doit être exécutée la commande.
L'action peut être :
EXEMPLE DE FICHIER INITTAB
Voici un fichier /etc/inittab typique provenant d'une distribution Slackware 3.3.
# On commence par la définition du niveau par défaut :
id:3:initdefault:
#On lance le fichier script /etc/rc.d/rc.S durant le boot (action sysinit)
si:S:sysinit:/etc/rc.d/rc.S
#On définit le script à lancer en passant en mono-utilisateur
su:1S:wait:/etc/rc.d/rc.K
#On définit le script à lancer en passant en multi-utilisateur
rc:2345:wait:/etc/rc.d/rc.M
#On définit la commande à lancer lors d'un CTRL+ALT+SUPP
ca::ctrlaltdel:/sbin/shutdown -t5 -rfn now
#On définit le script à lancer pour l'arrêt du système (niveau 0)
l0:0:wait:/etc/rc.d/rc.0
#On définit le script pour le redémarrage du système
l6:6:wait:/etc/rc.d/rc.6
#On définit la commande pour un problème d'alimentation
pf::powerfail:/sbin/shutdown -f +5 «OH, JE PERD MA VA NIL LE»
#Si l'alimentation revient avant l'extinction, on annule de # shutdown
pg:0123456:powerokwait:/sbin/shutdown -c «RHAAAHHH LOVELY»
#Si l'alimentation revient en mono-utilisateur, on passe en # multi-utilisateur
ps:S:powerokwait:/sbin/init 5
#Lancement des 6 consoles virtuelles agetty en respawn
c1:1235:respawn:/sbin/agetty 38400 tty1 linux
c2:1235:respawn:/sbin/agetty 38400 tty2 linux
c3:1235:respawn:/sbin/agetty 38400 tty3 linux
c4:1235:respawn:/sbin/agetty 38400 tty4 linux
c5:1235:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux
# Définition du Runlevel 4 pour le système Xwindow
# Ici 4 et sur une RedHat c'est le niveau 5
# Habituellement on lance xdm, ici on préfère Login.app plus # sympathique
x1:4:respawn:/usr/local/bin/Login.app >& /dev/null
Dernier point, la commande runlevel vous permet de savoir dans quel niveau vous vous trouvez et quel était le niveau précédent.
Attention tout de même, avant de vous lancer dans le bidouillage nocturne : le fichier /etc/inittab est lu au démarrage, et, de ce fait, une erreur dans ce fichier peut paralyser votre système Linux pendant un bon bout de temps...