Scroll to navigation

INIT(8) Manuel de l’Administrateur de Système Linux INIT(8)

NOM

init, telinit - Initialisation du contrôle des processus

SYNOPSIS

/sbin/init [ -a ] [ -s ] [ -b ] [ -z xxx ] [ 0123456Ss ]
/sbin/init [ --version ]
/sbin/telinit [ -t SECONDES ] [ 0123456sSQqabcUu ]
/sbin/telinit [ -e VAR[=VAL] ]

DESCRIPTION

Init

init est le parent de tous les processus. Son rôle principal est de créer des processus à partir d'un script stocké dans /etc/inittab (consultez inittab(5)). Ce fichier comporte généralement des entrées qui forcent init à lancer des getty sur chacune des lignes sur lesquelles des utilisateurs peuvent se connecter. Il contrôle également des processus autonomes nécessaires pour chaque système particulier.

NIVEAUX D'EXÉCUTION

Un niveau d'exécution est une configuration logicielle du système qui permet à seulement un certain groupe de processus d'exister. Les processus lancés par init pour chacun de ces niveaux d'exécution sont définis dans le fichier /etc/inittab. init peut être dans un des huit niveaux d'exécution : 0–6 et S (alias s). Le niveau d'exécution peut être modifié par un superutilisateur en exécutant telinit, qui envoie les signaux appropriés à init, lui indiquant dans quel niveau d'exécution se placer.

Les niveaux d'exécution S, 0, 1 et 6 sont réservés. Le niveau d'exécution S est utilisé pour initialiser le système au démarrage. Lors du lancement du niveau d'exécution S (au démarrage) ou 1 (depuis un niveau d'exécution multiutilisateur), le système entre en « mode mono-utilisateur », après lequel le niveau d'exécution est S. Le niveau d'exécution 0 est utilisé pour arrêter le système ; le niveau d'exécution 6 sert au redémarrage du système.

Après avoir démarré dans le niveau S, le système entre automatiquement dans un des niveaux multiutilisateurs 2 à 5, à moins qu'il n'y ait eu des problèmes qui nécessitent une correction de la part d'un administrateur en mode mono-utilisateur. Normalement, après être entré en mode mono-utilisateur, un administrateur effectue la maintenance puis redémarre le système.

Pour plus d'informations, voir les pages de manuel de shutdown(8) et inittab(5).

Les niveaux d'exécution 7 à 9 sont également valables, mais pas vraiment documentés. La raison pour cela est que les UNIX « traditionnels » ne les utilisent pas.

Les niveaux d'exécution S et s sont équivalents. Ils sont considérés en interne comme des alias vers les mêmes niveaux.

DÉMARRAGE

Après qu'init ait été appelé comme dernière étape de la séquence de démarrage du noyau, il regarde dans le fichier /etc/inittab pour voir s'il y a une entrée du type initdefault (consultez 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 /etc/inittab du tout), un niveau d'exécution doit être entré sur la console système.

Les niveaux d'exécution S ou s initialisent le système et ne nécessitent pas de fichier /etc/inittab.

En mode mono-utilisateur, /sbin/sulogin est invoqué sur /dev/console.

Quand il entre en mode mono-utilisateur, init initialise les paramètres des consoles stty à des valeurs saines. Le mode clocal est configuré. La vitesse matérielle et le mode d'établissement d'une liaison ne sont pas changés.

Quand il entre en mode multi-utilisateurs pour la première fois, init exécute les entrées boot et bootwait pour permettre aux systèmes de fichiers de se monter avant que les utilisateurs puissent se connecter. Ensuite, toutes les entrées correspondant au niveau d'exécution sont exécutées.

Lorsqu'il démarre un nouveau processus, init vérifie d'abord si le fichier /etc/initscript existe. S'il existe, il utilise ce fichier pour démarrer le processus.

Chaque fois qu'un fils se termine, init enregistre cela et la raison pour laquelle il est mort dans /var/run/utmp et /var/log/wtmp, si ces fichiers existent.

CHANGEMENT DE NIVEAU D'EXÉCUTION

After it has spawned all of the processes specified, init waits for one of its descendant processes to die, a powerfail signal, or until it is signaled by telinit to change the system's runlevel. When one of the above three conditions occurs, it re-examines the /etc/inittab file. New entries can be added to this file at any time. However, init still waits for one of the above three conditions to occur. To provide for an instantaneous response, the telinit Q or q command can wake up init to re-examine (reload) the /etc/inittab file.

Si init n'est pas en mode mono-utilisateur et reçoit un signal indiquant une perte de puissance (SIGPWR), il lit le fichier /etc/powerstatus. Il démarre ensuite une commande en fonction du contenu de ce fichier :

F(AIL) (échec)
Plus d'alimentation, l'UPS fournit la puissance. Exécuter les entrées powerwait et powerfail.
O(K)
L'alimentation a été rétablie, exécuter les entrées powerokwait.
L(OW) (bas)
Plus d'alimentation et le niveau de la batterie de l'UPS est faible. Exécuter les entrées powerfailnow.

Si le fichier /etc/powerstatus n'existe pas ou contient autre chose que les lettres F, O ou L, init se comportera comme si la lettre F y avait été lue.

Usage of SIGPWR and /etc/powerstatus is discouraged. Someone wanting to interact with init should use the /run/initctl control channel - see the initctl manual page for more documentation about this.

When init is requested to change the runlevel, it sends the warning signal SIGTERM to all processes that are undefined in the new runlevel. It then waits 3 seconds before forcibly terminating these processes via the SIGKILL signal. Note that init assumes that all these processes (and their descendants) remain in the same process group which init originally created for them. If any process changes its process group affiliation it will not receive these signals. Such processes need to be terminated separately.

TELINIT

/sbin/telinit est un lien vers /bin/init. Il prend un paramètre d'un caractère et signale à init d'effectuer l'action appropriée. Les paramètres suivants servent de directive à telinit :
0,1,2,3,4,5 ou 6
Demander à init de passer au niveau d'exécution spécifié.
a,b,c
Demander à init de ne traiter que les entrées du fichier /etc/inittab du niveau d'exécution a, b ou c.
Q ou q
Demander à init de réexaminer le fichier /etc/inittab.
S ou s
Demander à init de passer en mode mono-utilisateur
U ou u
tell init to re-execute itself (preserving the state). No re-examining of /etc/inittab file happens. Runlevel should be one of Ss0123456 otherwise request would be silently ignored.

telinit can tell init how long it should wait between sending processes the SIGTERM and SIGKILL signals. The default is 3 seconds, but this can be changed with the -t option.

telinit -e demande à init de changer l'environnement des processus qu'il lance. Le paramètre de -e est soit de la forme VAR=VAL, qui positionne la variable VAR à la valeur VAL, ou de la forme VAR (sans signe égal), qui retire la variable VAR.

telinit ne peut être appelé que par les utilisateurs avec les droits appropriés.

Le binaire init vérifie s'il s'agit d'init ou de telinit en fonction de l'identifiant du processus ; le véritable init a toujours un identifiant égal à 1. Grâce à cela, init peut également être appelé au lieu de telinit, comme raccourci.

ENVIRONNEMENT

init configure les variables d'environnement suivantes pour tous ses fils :
PATH
/bin:/usr/bin:/sbin:/usr/sbin
INIT_VERSION
Comme le nom l'indique. Utile pour déterminer si un script est exécuté directement par init.
RUNLEVEL
Le niveau d'exécution actuel du système.
PREVLEVEL
Le niveau d'exécution précédent (utile après un changement de niveau d'exécution).
CONSOLE
La console système. Cela provient du noyau ; cependant si elle n'existe pas, init la positionne à /dev/console par défaut.

ATTRIBUTS D'AMORÇAGE

It is possible to pass a number of flags to init from the boot monitor (eg. LILO or GRUB). Init accepts the following flags:
-s, S, single
Démarrage en mode mono-utilisateur. Dans ce mode, /etc/inittab est examiné et les scripts rc de démarrage sont généralement lancés avant que l'interpréteur de commande du mono-utilisateur ne commence.
1-5
Niveau d'exécution dans lequel il faut démarrer.
-b, emergency
Démarrage direct d'un interpréteur de commande en mode mono-utilisateur sans lancer aucun autre script de démarrage.
-a, auto
Le gestionnaire de démarrage LILO ajoute le mot « auto » sur la ligne de commande pour les démarrages utilisant la ligne de commande par défaut (sans intervention d'un utilisateur). Dans ce cas, init positionne la variable d'environnement AUTOBOOT à la valeur « yes ». Notez que vous ne pouvez utiliser cela à des fins sécuritaires ; un utilisateur pouvant bien sûr indiquer « auto » ou ajouter l'option -a lui-même sur la ligne de commande.
-z xxx
Le paramètre de -z est ignoré. Vous pouvez utiliser cela pour étendre légèrement la ligne de commande, pour qu'elle prenne plus de place sur la pile. init peut ensuite manipuler la ligne de commande de telle sorte que ps(1) affiche le niveau d'exécution actuel.
--version
This argument, when used on its own, displays the current version of init to the console/stdout. It is a quick way to determine which init software and version is being used. After the version information is displayed, init immediately exits with a return code of zero.

INTERFACE

Init listens on a fifo in /dev, /run/initctl, for messages. Telinit uses this to communicate with init. The interface is not very well documented or finished. Those interested should study the initreq.h file in the src/ subdirectory of the init source code tar archive.

SIGNAUX

init réagit à plusieurs signaux :
SIGHUP
Identique à telinit q.
SIGUSR1
On receipt of this signals, init closes and re-opens its control fifo, /run/initctl. Useful for bootscripts when /dev is remounted.
SIGUSR2
When init receives SIGUSR2, init closes and leaves the control fifo, /run/initctl, closed. This may be used to make sure init is not holding open any files. However, it also prevents init from switching runlevels. Which means commands like shutdown no longer work. The fifo can be re-opened by sending init the SIGUSR1 signal.
SIGINT
Normalement le noyau envoie ce signal à init à la combinaison de touches Ctrl-Alt-Suppr. Cela active l'action ctrlaltdel.
SIGWINCH
Le noyau envoie ce signal quand la touche KeyboardSignal est pressée. Cela active l'action kbrequest.

CONFORMITÉ

init est compatible avec l'init de Système V. Il collabore étroitement avec les scripts des répertoires /etc/init.d et /etc/rc{niveau_exécution}.d. Si votre système utilise cette convention, il devrait y avoir un fichier README dans le répertoire /etc/init.d qui explique comment ces scripts fonctionnent.

FICHIERS

/etc/inittab
/etc/initscript
/dev/console
/var/run/utmp
/var/log/wtmp
/run/initctl

AVERTISSEMENTS

init suppose que les processus et leurs descendants restent dans le même groupe de processus créé initialement pour eux. Si les processus changent leur groupe, init ne peut pas les tuer et cela peut conduire à avoir deux processus qui lisent la même ligne de terminal.

Sur un système Debian, entrer dans le niveau d'exécution 1 force tous les processus à être tués à l'exception des threads du noyau et du script qui s'occupe de tuer les autres processus ainsi que les autres processus de sa session. En conséquence, il n'est pas sûr de passer du niveau d'exécution 1 vers un niveau d'exécution multi-utilisateur : les démons qui étaient démarrés dans le niveau d'exécution S et qui sont nécessaires au bon fonctionnement ne tournent plus. Le système devrait être redémarré.

DIAGNOSTICS

Si init trouve qu'il n'arrête pas de relancer une entrée (plus de dix fois en deux minutes), il supposera qu'il y a une erreur dans la commande, générera une erreur sur la console système et refusera de relancer cette entrée à moins que cinq minutes se soient écoulées ou qu'il ait reçu un signal. Cela permet d'éviter de consommer des ressources système quand quelqu'un a fait une faute de frappe dans le fichier /etc/inittab ou que le programme de l'entrée a été supprimé.

AUTEUR

Miquel van Smoorenburg (miquels@cistron.nl), page de manuel originelle de Michael Haardt (u31b3hs@pool.informatik.rwth-aachen.de).

VOIR AUSSI

getty(1), login(1), sh(1), runlevel(8), shutdown(8), kill(1), initctl(5), inittab(5), initscript(5), utmp(5)

TRADUCTION

La traduction française de cette page de manuel a été créée par carmie, Thierry Vignaud <tvignaud@mandriva.com>, Éric Piel <eric.piel@tremplin-utc.net>, Gérard Delafond <gerard@delafond.org>, Danny <dannybrain@noos.fr>, Christophe Blaess <ccb@club-internet.fr>, Frédéric Delanoy <delanoy_f@yahoo.com>, François Wendling <frwendling@free.fr>, Philippe Batailler, Nicolas François <nicolas.francois@centraliens.net>, David Prévot <david@tilapin.org>, Romain Doumenc <rd6137@gmail.com> et Thomas Vincent <thomas@vinc-net.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à <debian-l10n-french@lists.debian.org>.

29 juillet 2004