/etc/inittab

Le fichier /etc/inittab est le fichier de configuration du premier processus du système: init.

Au démarrage d'un système, le noyau Linux lance un premier processus qui sera le parent de tout les autres. Sauf en cas de dépannage, ce processus sera le processus init. Le processus init lit son fichier de configuration /etc/inittab afin de continuer le démarrage du système, mais aussi pour configurer certaines tâches critiques.

Précautions

Le fichier inittab doit être édité avec la plus grande attention car une erreur peut rendre le système inutilisable.

Une erreur dans un fichier inittab n'est pas fatale, il reste possible de la corriger, mais pour s'éviter des peines inutiles, mieux vaut être attentif et comprendre l'impact des modifications.

Niveau de démarrage

Avant d'aborder le format du fichier lui même, il est important de comprendre ce que sont les niveaux de démarrage (runlevels).

Les niveaux de démarrage sont des chiffres précisant un type d'initialisation du système. Il peut en exister 7, numérotés de 0 à 6.

La signification de ces chiffres est tout à fait arbitraire, c'est la façon dont est écrit le fichier inittab qui donne son sens à chaque niveau de démarrage. Différentes distributions donnent donc une signification différente à certains niveau.

Certains niveaux sont définit par convention:

Les niveaux entre 2 et 5 sont généralement les niveaux multi-utilisateurs. Sur certaines distribution (Fedora, openSuse, etc), le niveau 5 est le niveau pour lequel le système démarre avec une interface graphique, les niveau 2 à 4 étant utilisé pour la console.

Niveau de démarrage par défaut

Commençons par voir comment configurer le niveau de démarrage par défaut. La syntaxe précise du fichier sera vue plus loin, mais le changement de niveau de démarrage est la raison la plus courante de modifier inittab, si bien que nous verrons d'abord ceci.

L'action permettant de donner le niveau de démarrage par défaut est "initdefault", il faut donc trouver la ligne contenant cette action (c'est généralement la première directive du fichier).

Voici une ligne de configuration du niveau de démarrage par défaut:

# The default runlevel.
id:2:initdefault:

Le chiffre avant l'action initdefault donne le niveau de démarrage auquel l'action s'applique. Dans l'exemple, le niveau de démarrage par défaut est donc 2. Pour changer le niveau par défaut, il suffit donc de modifier ce chiffre.

Soyez attentif à ne pas utiliser les niveaux 0 (arrêt) et 6 (redémarrage), auquel cas votre système serait incapable de démarrer correctement. Un commentaire est généralement présent dans le fichier pour rappeler l'utilité de chaque niveau de démarrage:

# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

Format de fichier

La syntaxe du fichier inittab est réellement très simple, il est composé de lignes composés chacune de quatre partie séparée par des double points :

id:runlevels:action:process

Chaque ligne précise un processus a exécuter, lorsqu'une action se produit et ce aux niveaux de démarrage donnés.

Le fichier peut aussi contenir des commentaires sur les lignes débutants par le caractère dièse (#).

id

La première colonne d'une ligne donne l'identifiant unique de l'action. Cette identifiant est composé de au plus 4 caractères.

runlevels

La seconde colonne donne la liste des niveaux de démarrage pour lesquels l'action sera exécuté. Les niveaux de démarrage sont donnés les un à la suite des autres sans séparateur.

Voici par exemple les lignes configurant les deux premier terminaux:

1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2

On peut voir que le premier terminal est lancé pour les niveaux 2 à 5, tandis que le second terminal n'est lancé que pour les niveaux 2 et 3.

action

L'action donne le type d'action a exécuter.

Généralement l'action est accompagnée d'un processus dans la quatrième colonne. Dans ce cas, l'action détermine la façon dont le processus est exécuté.

Les actions disponibles sont nombreuses, la page de manuel de inittab en fournit la liste. Vous avez déjà découvert l'action initdefault qui sert à spécifier le niveau de démarrage par défaut.

Outre initdefault, la signification des actions wait et respawn est intéressante car elles sont très utilisés dans le fichier de configuration.

L'action wait est accompagnée d'un processus, elle signifie que init doit lancer le processus, et attendre qu'il se termine. Cette action est par exemple utilisé pour lancer les scripts des niveaux de démarrage, voici la ligne en question pour le niveau 3:

l3:3:wait:/etc/init.d/rc 3

L'action respawn signifie que le processus sera relancé si il se termine. Cette action est utilisé pour configurer les terminaux de façon à ce qu'ils soient toujours disponibles. Par exemple

1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3

process

La quatrième et dernière colonne donne le chemin d'un processus associé à l'action. Si l'action n'utilise pas de processus, cette colonne reste vide.

Page de manuel

La page de manuel de inittab décrit le format du fichier ainsi que l'ensemble des actions applicable.