INIT
Section : Manuel de l'administrateur Linux (
8)
Mise à jour de la version anglaise : 29 juillet 2004
Index
Menu principal
NOM
init, telinit - Initialisation du contrôle des processus
SYNOPSIS
/sbin/init
[
-a ]
[
-s ]
[
-b ]
[
-z xxx ]
[
0123456Ss ]
/sbin/telinit
[
-t sec ]
[
0123456sSQqabcUu ]
DESCRIPTION
Init
init
est le père de tous les processus. Son rôle premier est de créer les processus
à partir d'un script enregistré dans le fichier
/etc/inittab
(voir
inittab(5)).
Ce fichier contient des entrées qui font que
init
génère dynamiquement des
getty
sur chaque ligne où les utilisateurs peuvent se connecter. Il contrôle
également les processus autonomes nécessaires à un système particulier.
NIVEAUX D'EXÉCUTION
Un
niveau d'exécution
est une configuration logicielle du sytème qui permet à un groupe de processus
sélectionnés d'exister. Les processus générés par
init
pour chacun des niveaux d'exécution sont définis dans le fichier
/etc/inittab.
init
peut être dans l'un des huit niveaux d'exécutions :
0-6 et
S ou
s. Le niveau d'exécution est modifié par
un utilisateur privilégié utilisant
telinit.
Cela envoie les signaux appropriés à
init,
lui indiquant dans quel niveau d'exécution entrer.
Les niveaux d'exécution 0, 1 et 6 sont réservés.
Le niveau 0 sert à arrêter le système, le niveau 6 sert à redémarrer le
système et le niveau 1 sert à entrer dans le mode simple utilisateur.
Le niveau S n'est pas vraiment conçu pour être utilisé directement, mais
plus pour les scripts exécutés lors de l'entrée dans le niveau 1. Pour plus
d'information, voir les pages de manuel
shutdown(8)
et
inittab(5).
Les niveaux d'exécution 7-9 sont également valides bien que pas vraiment
documentés. Ce sont de « traditionnelles » variantes Unix, ne les utilisez
pas. Au cas où vous seriez curieux, les niveaux d'exécution S et s
sont en fait le même. Ce sont, de manière interne, des aliases vers le même
niveau d'exécution.
DÉMARRAGE
Après que
init
ait été invoqué comme dernière étape de la séquence de démarrage du noyau,
il cherche, dans le fichier
/etc/inittab,
une entrée de type
initdefault
(voir
inittab(5)).
L'entrée
initdefault
détermine le niveau d'exécution initial du système. S'il n'y a pas de telle
entrée (ou pas de fichier
/etc/inittab),
un niveau d'exécution devra être saisi sur la console du système.
Les niveaux d'exécution S ou s font entrer le système en mode
simple utilisateur et ne nécessitent pas de fichier
/etc/inittab.
En mode simple utilisateur,
/sbin/sulogin
est invoqué sur
/dev/console.
Lorsqu'on entre en mode simple utilisateur,
init
initialise les réglages des consoles
stty
à des valeurs sûres.
Le mode Clocal est configuré. La vitesse du matériel et les liaisons
ne sont pas modifiées.
Lorsqu'on entre en mode multi utilisateur pour la première fois,
init
exécute les entrées
boot
et
bootwait
afin que les systèmes de fichiers soient montés avant que les utilisateurs
ne puissent se connecter. Ensuite, toutes les entrées correspondant au
niveau d'exécution sont traitées.
Lorsqu'il démarre un nouveau processus,
init
vérifie d'abord si le fichier
/etc/initscript
existe. Si c'est le cas, il utilise ce script pour démarrer le processus.
Chaque fois qu'un fils se termine,
init
enregistre ce fait et sa raison dans les fichiers
/var/run/utmp
et
/var/log/wtmp
s'ils existent.
CHANGER DE NIVEAU D'EXÉCUTION
Après qu'il ait généré tous les processus spécifiés,
init
attend que l'un des ses processus enfant meure, un signal de panne
d'alimentation, ou jusqu'à ce que
telinit
lui signale de changer le niveau d'exécution du système.
Lorsque l'une des conditions précédentes survient, il réexamine le fichier
/etc/inittab.
De nouvelles entrées peuvent être ajoutées à tout moment dans ce fichier.
Toutefois,
init
attendra toujours que l'une des conditions précédentes survienne. Pour avoir
une réponse instantanée, la commande
telinit Q
ou
q
peut réveiller
init
afin qu'il réexamine le fichier
/etc/inittab.
Si
init
n'est pas en mode simple utilisateur et recoit un signal de panne
d'alimentation
(SIGPWR),
il lit le fichier
/etc/powerstatus.
Il lance ensuite une commande basée sur le contenu du fichier :
- F(AIL)
-
L'alimentation est défaillante, l'onduleur (UPS) fournit la puissance.
Exécuter les entrées
powerwait
et
powerfail.
- O(K)
-
L'alimentation est à nouveau présente, exécuter les entrées
powerokwait.
- L(OW)
-
L'alimentation est défaillante et la batterie de l'onduleur est faible.
Exécuter les entrées
powerfailnow.
Si le fichier
/etc/powerstatus
n'existe pas ou qu'il contient autre chose que les lettres
F,
O
ou
L,
init
se comportera comme s'il avait lu la lettre
F.
L'utilisation de
SIGPW
et
/etc/powerstatus
est découragée. Ceux qui voudraient interagir avec
init
devraient utiliser le canal de contrôle
/dev/initctl
- voir le code source du paquet
sysvinit
pour plus de documentation.
Lorsqu'il est demandé à
init
de changer de niveau d'exécution, il envoie le signal d'avertissement
SIGTERM à tous les processus qui ne sont pas définis dans le
nouveau niveau d'exécution. Il attend ensuite 5 secondes avant de forcer
ces processus à se terminer par l'intermédiaire du signal SIGKILL.
Notez que
init
suppose que tous ces processus (et leurs descendants) restent dans le même
groupe de processus que
init
avait créé pour eux. Si un processus a modifié son affiliation de groupe de
processus, il ne recevra pas ces signaux. De tels processus devront être
terminés séparément.
TELINIT
/sbin/telinit
est lié à
/sbin/init.
Il prend un argument d'un seul caractère et signale à
init
d'effectuer l'action appropriée. Les arguments suivants servent de directives à
telinit :
- 0,1,2,3,4,5 ou 6
-
dire à
init
de basculer dans le niveau d'exécution spécifié.
- a,b,c
-
dire à
init
de ne traiter que les entrées du fichier
/etc/inittab
qui ont les niveaux d'exécution a, b ou c.
- Q ou q
-
dire à
init
de réexaminer le fichier
/etc/inittab.
- S ou s
-
dire à
init
de basculer en mode simple utilisateur.
- U ou u
-
dire à
init
de se ré-exécuter (préservant l'état). Aucun ré-examin du fichier
/etc/inittab
n'a lieu. Le niveau d'exécution doit être un parmi Ss12345, toute autre
requête sera silencieusement ignorée.
telinit
peut également indiquer à
init
combien de temps il doit attendre entre les envois des signaux
SIGTERM
et
SIGKILL
aux processus. La valeur par défaut est 5 secondes mais elle peut
être modifiée avec l'option
-t sec.
telinit
ne peut être invoqué que par des utilisateurs ayant les privilèges appropriés.
Le binaire
init
vérifie s'il s'agit de
init
ou de
telinit
en regardeant son PID ; le PID réel de
init
est toujours
1.
À partir de là, plutôt que d'appeler
telinit,
on peut simplement utiliser
init.
ENVIRONNEMENT
init
configure, pour tous ses enfants, les variables d'environnement suivantes :
- PATH
-
/bin:/usr/bin:/sbin:/usr/sbin
- INIT_VERSION
-
Comme son nom l'indique. Utile pour déterminer si un script a directement été
lancé par
init.
- RUNLEVEL
-
Le niveau d'exécution actuel du système.
- PREVLEVEL
-
Le niveau d'exécution précédent du système (utile après un changement
de niveau d'exécution).
- CONSOLE
-
La console système. Elle est héritée du noyau ; si elle n'est pas configurée,
init
la configurera avec
/dev/console
par défaut.
OPTIONS DE DÉMARRAGE
Il est possible de passer plusieurs options à
init
par l'intermédiaire du chargeur de démarrage (par exemple, LILO).
init
accepte les options suivantes :
- -s, S, single
-
Démarrage en mode simple utilisateur. Dans ce mode,
/etc/inittab
est examiné et les scripts rc de démarrage sont lancés avant que le shell
du mode simple utilisateur soit démarré.
- 1-5
-
Le niveau d'exécution dans lequel entrer.
- -b, emergency
-
Démarrer directement dans un shell simple utilisateur sans lancer les autres
scripts de démarrage.
- -a, auto
-
Le chargeur de démarrage LILO ajoute le mot « auto » à la ligne de commande
s'il a démarré le noyau avec la ligne de commande par défaut (sans intervention
de l'utilisateur). Si cette option est trouvée,
init
configure la variable d'environnement
AUTOBOOT
à « yes ». Notez que vous ne pouvez pas utiliser ceci pour des raisons de
sécurité. Bien sûr, l'utilisateur peut spécifier « auto » ou
-a
manuellement sur la ligne de commande.
- -z xxx
-
L'argument de
-z
est ignoré. Vous pouvez utiliser ceci pour allonger un peu la ligne de
commande, ainsi, cela prendra plus de place dans la pile.
init
peut ensuite manipuler la ligne de commande pour que
ps(1)
affiche le niveau d'exécution actuel.
INTERFACE
init
se met à l'écoute d'une
fifo
dans
/dev,
/dev/initctl,
pour des messages.
Cette interface n'est pas très bien documentée, ni finie. Ceux qui s'y
intéressent devraient étudier le fichier
initreq.h
dans le sous répertoire
src
de l'archive du code source de
init.
SIGNAUX
init
réagit à plusieurs signaux :
- SIGHUP
-
Même effet que
telinit q.
- SIGUSR1
-
À la reception de ce signal,
init
ferme et réouvre sa fifo de contrôle
/dev/initctl.
Utile aux scripts de démarrage lorsque
/dev
est remonté.
- SIGINT
-
Normalement, le noyau envoie ce signal à
init
lorsque la combinaison de touches CTRL-ALT-DEL a été pressée.
Cela active l'action
ctrlaltdel.
- SIGWINCH
-
Le noyau envoie ce signal lorsque la touche
KeyboardSignal
a été pressée. Cela active l'action
kbrequest.
CONFORMITÉ
init
est compatible avec init System V. Il fonctionne étroitement avec les scripts
des répertoires
/etc/init.d
et
/etc/rc{runlevel}.d.
Si votre système utilise cette convention, il devrait y avoir un fichier
README
dans le répertoire
/etc/init.d
expliquant comment fonctionnent ces scripts.
FICHIERS
/etc/inittab
/etc/initscript
/dev/console
/var/run/utmp
/var/log/wtmp
/dev/initctl
NOTES
init
suppose que les processus et leurs descendants restent dans le même groupe
de processus que celui qui a été créé pour eux. Si les processus changent
leur groupe,
init
ne pourra pas les tuer et vous pouvez finir avec deux processus lisant sur
un seul terminal.
DIAGNOSTICS
Si
init
trouve qu'il régénère de façon continue une entrée plus de 10 fois en
2 minutes, il considèrera qu'il y a une erreur dans la commande, génèrera
un message d'erreur sur la console système et refusera de regénérer cette
entrée pendant 5 minutes ou jusqu'à la réception d'un signal.
Cela permet d'éviter de dévorer les ressources système lorsque quelqu'un a
commis une erreur typographique dans le fichier
/etc/inittab
ou lorsque le programme correspondant à l'entrée a été supprimé.
AUTEUR
Miquel van Smoorenburg (
miquels@cistron.nl), page de manuel initiale
par Michael Haardt (
u31b3hs@pool.informatik.rwth-aachen.de).
VOIR AUSSI
getty(1),
login(1),
kill(1),
sh(1),
initscript(5),
inittab(5),
utmp(5),
runlevel(8),
shutdown(8)
TRADUCTION
Ce document est une traduction réalisée par Alain Portal
<aportal AT univ-montp2 DOT fr> le 26 juin 2006
et révisée le 19 novembre 2007.
L'équipe de traduction a fait le maximum pour réaliser une adaptation
française de qualité. La version anglaise la plus à jour de ce document est
toujours consultable via la commande : « LANG=C man 8 init ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute
erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- Init
-
- NIVEAUX D'EXÉCUTION
-
- DÉMARRAGE
-
- CHANGER DE NIVEAU D'EXÉCUTION
-
- TELINIT
-
- ENVIRONNEMENT
-
- OPTIONS DE DÉMARRAGE
-
- INTERFACE
-
- SIGNAUX
-
- CONFORMITÉ
-
- FICHIERS
-
- NOTES
-
- DIAGNOSTICS
-
- AUTEUR
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 19 novembre 2007