"Init" est le père de tous les processus. Il est le seul processus lancé par le noyau après son chargement. Son rôle principal est de créer des processus fils à partir du script "inittab" (/etc/inittab).
Un "runlevel" est une configuration système qui autorise seulement un certain groupe de processus à éxister. Les processus engendrés pas "init" pour chacun de ces runlevels sont définis dans le fichier /etc/inittab. "init" peut être dans un des huit "runlevels" suivant: 0-6 et S ou s.
Par convention, les "runlevels" 0, 1 et 6 sont reservés :
Juste après que "init" est été invoqué par le noyau, l'entrée de type "initdefault" (dans le fichier "/etc/inittab") détermine le "runlevel" qui doit être exécuté. Si cette entrée ne figure pas dans inittab, un "runlevel" doit être entré dans la console.
Puis, le script "inittab" est chargé de lancer les processus définient pour le "runlevel" qui a été choisit.
Le fichier "inittab" définit quels processus sont lancés au démarrage. Comme dit précedemment, "init" distingue plusieurs "runlevels", chacun ayant une fonction particulière.
Une entrée dans le fichier "inittab" à le format suivant : id : runlevels : action : process
id : | séquence unique de 1 à 4 caractère qui identifie (de manière unique donc..) une entrée dans "inittab". |
runlevels : | liste des "runlevels" pour lesquels l'action specifiée doit être exécutée. |
action : | le type d'action qui doit être accomplit. |
process : | spécifie le processus à exécuter. |
respawn | Le processus serat relancé chaque fois qu'il se terminerat (e.g. getty). |
wait | Le processus serat lancé une seule fois; quand le runlevel est entré. "init" attend qu'il se termine pour continuer. |
once | Le processus serat lancé une seule fois; quand le runlevel choisit aurat été entré. |
boot | Le processus serat exécuté pendant le démarrage du système. La valeur du "runlevel" est ignoré (= marche qq soit le "runlevel"). |
bootwait | Le processus serat exécuté pendant le démarrage du système; "init" attend qu'il se termine pour continuer (e.g. /etc/rc). La valeur du "runlevel" est ignoré (= marche qq soit le "runlevel"). |
off | Ca ne fait rien. |
ondemand | Le processus est exécuté chaque fois que le "runlevel" "ondemand" est appellé. Cependant, il n'en découle pas un changement de "runlevel".(les "runlevels" "ondemand" sont `a', `b', et `c'). |
initdefault | L'entrée "initdefault" spécifie quel "runlevel" doit être lancé après le chargement du noyau. Si cette entrée n'est pas présente, "init" demanderat, dans une console, quel "runlevel" doit être lancé. La valeur du "runlevel" est ignoré (= marche qq soit le "runlevel"). |
sysinit | Le processus serat exécuté pendant le démarrage du système. Il serat exécuté avant même l'entrée 'boot' ou 'bootwait'. La valeur du "runlevel" est ignoré (= marche qq soit le "runlevel"). |
ctrlaltdel | Le processus serat exécuté quand "init" aurat reçut le signal SIGINT. C'est à dire que quelqu'un a pressé la combinaison CTRL-ALT-DEL dans la console. En règle général, le processus specifié par l'utilisateur a pour but de redémarrer la machine. |
kbrequest | Le processus est exécuté quand "init" reçoit un signal du gestionnaire de clavier, lui indiquant ainsi qu'une certaine combinaison de touches ont été pressés dans la console. Pour plus d'informations à ce sujet, allez regarder la documentation de 'kbd'. |
Nous allons éssayer d'analyser un exemple de fichier /etc/inittab, que l'on peut retrouver sur une machine tournant sous Debian Woody :
Pour s'assurer que vous avez tout compris, nous allons prendre un éxemple en particulier :
id | runlevels | action | process |
l2 | 2 | wait | /etc/init.d/rc 2 |
la séquence de caractères (unique) identifiant cette entrée dans le fichier inittab. | cette entrée serat interprété si et seulement si le "runlevel" est 2. | Le processus serat lancé une seule fois; quand le runlevel est entré. "init" attend qu'il se termine pour continuer. | cette entrée lance le script '/etc/init.d/rc' avec l'argument '2' |
Et voilà, vous devez maintenant être capable de modifier à souhait la configuration de démarrage de votre machine pour y ajouter des processus ou, au contraire, en supprimer pour rendre le démarrage plus rapide.