inittab - Format du fichier inittab utilisé dans le processus de
démarrage des systèmes UNIX Système V et
compatibles
Le fichier
inittab décrit l'ensemble des processus qui doivent
être lancés au démarrage du système et pendant un
fonctionnement normal (par exemple, /etc/init.d/boot, /etc/init.d/rc,
gettys…). Le programme
init(8) distingue différents
niveaux_exécution (runlevel), chacun pouvant avoir ses propres
processus à démarrer. Les niveaux d'exécution valables
sont
0-
6, et
A,
B ou
C pour des niveaux
personnalisés (
ondemand). Typiquement, une entrée dans
le fichier inittab a la forme suivante :
id:
niveaux_exécution:
action:
processus
Les lignes commençant par le caractère
« # » sont ignorées.
- id
- Séquence unique de 1 à 4 caractères
qui identifient une entrée dans inittab (pour les versions
de sysvinit compilées avec les anciennes
bibliothèques libc5 (< 5.2.18) ou a.out, la limite est de 2
caractères).
Remarque : pour les programmes de connexion comme les getty ou
d'autres, le champ id doit être le numéro du tty
correspondant à la console, par exemple 1 pour tty1.
Des anciens programmes de gestion des connexions peuvent également
se baser là-dessus, même si je n'en ai pas le souvenir.
- niveaux_exécution
- Liste des niveaux d'exécution pour lesquels l'action
doit être faite.
- action
- Description de l'action à faire.
- processus
- Commande à exécuter. Si ce champ commence par
le caractère « + », init
n'enregistrera pas les connexions dans utmp et wtmp. C'est requis par
getty qui utilise son propre gestionnaire de utmp ou de wtmp. C'est
également un bogue qui reste pour des raisons historiques. La
taille de ce champ est limitée à
127 caractères.
Please note that including certain characters in the process field will
result in init attempting to launch a shell to interpret the
command contained in the process field. The characters which will trigger
a shell are: ~`!$^&*()=|{}[];
On systems which do not have a shell to be launched or which do not wish to
use a shell to interpret the process field, the process field can be
prefixed with the @ symbol. The @ will be ignored and everything followed
will be treated as a command to be launched, literally, by the init
service.
In cases where both a + and @ sign are to be used (to turn off logging and
shell interpretation), place the + sign before the @ symbol. Both flags
will be handled and then everything following the @ will be handled by
init
Le champ
niveaux_exécution peut contenir plusieurs
caractères indiquant différents niveaux d'exécution. Par
exemple,
123 signifie que le processus sera exécuté dans
les niveaux d'exécution 1, 2 et 3. Les
niveaux
d'exécution pour les entrées
ondemand peuvent
contenir un
A,
B ou
C. Les champs
niveaux_exécution des entrées
sysinit,
boot
et
bootwait sont ignorés.
Quand le niveau d'exécution est changé, tous les processus qui ne
sont pas spécifiés démarrés dans ce nouveau niveau
d'exécution sont tués, d'abord avec SIGTERM, puis avec SIGKILL.
Les actions valables pour le champ
action sont :
- respawn
- Le processus est redémarré à chaque
fois qu'il se termine (par exemple : getty).
- wait
- Le processus n'est démarré qu'une seul fois,
lors de l'entrée dans le niveau d'exécution et init
attend qu'il se termine.
- once
- Le processus est exécuté une seule fois, lors
de l'entrée dans le niveau d'exécution.
- boot
- Le processus est exécuté pendant le
démarrage du système. Le champ
niveaux_exécution est ignoré.
- bootwait
- Le processus est exécuté pendant le
démarrage du système et init attend que le processus
se termine (par exemple : /etc/rc). Le champ
niveaux_exécution est ignoré.
- off
- Ne fait rien.
- ondemand
- Un processus marqué dans un niveau
d'exécution ondemand est exécuté à
chaque fois que le niveau d'exécution ondemand est
appelé. Cependant, aucun changement de niveau d'exécution ne
survient (les modes de démarrage pour ondemand sont
« a », « b » et
« c »).
- initdefault
- Une entrée initdefault indique qu'on entrera
dans ce niveau d'exécution une fois le système effectivement
opérationnel. Si aucun n'existe, init demandera un niveau
d'exécution sur la console. Le champ processus est
ignoré.
- sysinit
- Le processus est exécuté pendant le
démarrage du système. Il est exécuté avant les
entrées boot ou bootwait. Le champ
niveaux_exécution est ignoré.
- powerwait
- Le processus est exécuté quand la machine est
sur le point de s'éteindre. init est normalement
informé de cela par un programme qui discute avec un UPS
connecté à la machine. init attend que le processus
se termine avant de continuer.
- powerfail
- Comme powerwait, mis à part que init
n'attend pas la fin du processus avant de continuer.
- powerokwait
- Le processus est exécuté dès que
init est informé que l'alimentation est remise en
route.
- powerfailnow
- Ce processus est exécuté quand init
est informé que la batterie de l'onduleur externe est presque vide
et que la tension faiblit (à condition que l'onduleur et le
processus de surveillance soient capables de détecter cette
condition).
- ctrlaltdel
- Le processus est exécuté lorsque init
reçoit le signal SIGINT. Cela signifie que quelqu'un a
tapé dans la console système la combinaison de touches
CTRL-ALT-SUPPR. Typiquement, on a voulu exécuter une sorte
d'arrêt, soit pour démarrer en mode mono-utilisateur, soit
pour redémarrer la machine.
- kbrequest
- Le processus est exécuté quand init
reçoit un signal du gestionnaire de clavier indiquant qu'une
combinaison spéciale de touches a été
actionnée sur le clavier de la console.
La documentation pour cette fonction n'est pas encore
complète ; il est possible de trouver de la documentation
supplémentaire dans le paquet kbd-x.xx paquets (le plus
récent était kbd-0.94 au moment où ces lignes sont
écrites). Vous pouvez affecter des combinaisons de touches à
l'action « KeyboardSignal ». Par exemple, pour
affecter Alt-FlècheHaut pour cet usage, utilisez ce qui suit dans
votre fichier keymaps :
alt keycode 103 = KeyboardSignal
Voici un exemple d'un fichier inittab qui ressemble à un ancien fichier
inittab sous linux :
# inittab for Linux
id:1:initdefault:
rc::bootwait:/etc/rc
1:1:respawn:/etc/getty 9600 tty1
2:1:respawn:/etc/getty 9600 tty2
3:1:respawn:/etc/getty 9600 tty3
4:1:respawn:/etc/getty 9600 tty4
Ce fichier inittab exécute
/etc/rc pendant le démarrage du
système et démarre getty sur les tty 1 à 4.
Un fichier
inittab plus élaboré avec différents
niveaux d'exécution (notez bien les commentaires) :
# Runlevel à démarrer
id:2:initdefault:
# Script de configuration / initialisation du système au démarrage.
si::sysinit:/etc/init.d/rcS
# Que faire dans le mode mono-utilisateur.
~:S:wait:/sbin/sulogin
# /etc/init.d exécute les scripts S et K pour les changements
# de niveau d'exécution.
#
# Le niveau 0 est pour l'arrêt.
# Le niveau 1 est pour le mode mono-utilisateur.
# Les niveaux 2 à 5 correspondent aux niveaux multi-utilisateurs.
# Le niveau 6 correspond au redémarrage.
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Que faire du « salut à 3 doigts ».
ca::ctrlaltdel:/sbin/shutdown -t1 -h now
# niveau d'exécution 2,3 : getty sur les consoles virtuelles
# niveau d'exécution 3 : getty sur le terminal (ttyS0) et
# sur le port modem.
1:23:respawn:/sbin/getty tty1 VC linux
2:23:respawn:/sbin/getty tty2 VC linux
3:23:respawn:/sbin/getty tty3 VC linux
4:23:respawn:/sbin/getty tty4 VC linux
S0:3:respawn:/sbin/getty -L 9600 ttyS0 vt320
S1:3:respawn:/sbin/mgetty -x0 -D ttyS1
/etc/inittab
init was written by
Miquel van
Smoorenburg This manual page was written by
Sebastian
Lederer and modified by
Michael
Haardt
init(8),
telinit(8)