init

Un article de Wikipédia, l'encyclopédie libre.

init (abréviation de initialisation) est le programme sous Unix qui lance toutes les autres tâches. Il s'exécute comme un démon informatique et typiquement il a un identifiant de processus (PID) de 1.

Les fonctionnalités du programme init divergent considérablement entre BSD et System V.

La plupart des distributions Linux sont compatibles avec le programme init d'Unix System V ; mais il y a des exceptions : certaines distributions comme la slackware utilisent un programme init qui est proche de celui d'Unix BSD  d'autres comme la distribution Gentoo ont un programme init personnalisé. Il y a aussi plusieurs autres schémas alternatifs pour cette phase d'initialisation (par exemple, pour Mac OS X 10.4 (TIGER), voir aussi les références externes au bas de cette page). La distribution Ubuntu (version 6.10) utilise une tâche appelée upstart au lieu de init, mais cette tâche dans sa version actuelle (janvier 2007) est très proche de l'init System V.

Sommaire

[modifier] Au boot

Le chargeur d'amorçage charge le noyau Linux (et un éventuel initrd), ensuite le noyau monte le système de fichier racine (le "/"), puis il initialise la console initiale. Ensuite, il lance la première tâche : "init".

Le programme init est à la fois la première tâche que le noyau Linux exécute lorsqu'on boote un ordinateur et la dernière tâche présente avant l'arrêt de l'ordinateur.

[modifier] "init" de Unix BSD

Au boot, le programme init d'Unix BSD exécute des shells d'initialisation localisés dans /etc/rc, puis met en place les différents terminaux virtuels, en mode texte ou en mode graphique (X ou autre).

La grosse différence entre l'init de BSD et celui de System V, c'est qu'il n'y a pas de niveaux de fonctionnement (runlevel) dans Unix BSD. Sur ces systèmes d'exploitation, ce sont les fichiers de /etc/rc qui déterminent comment cette initialisation s'effectue.

[modifier] "init" de Unix System V (SysVinit)

Au boot, le programme init d'Unix System V lit le fichier /etc/inittab, Le champ initdefault dans ce fichier détermine quel est le niveau de fonctionnement par défaut. Si ce champ est absent, l'utilisateur doit aller sur la console système pour indiquer manuellement quel est le niveau de fonctionnement (run level) choisi.

Les autres lignes du fichier inittab indiquent au programme init quelles sont les tâches à lancer et sur quel terminal virtuel, en fonction du niveau de fonctionnement demandé.

[modifier] Outrepasser les sécurités d'Unix en évitant de passer par la tâche init

Le programme init n'est pas la seule option proposée lorsqu'on boote un ordinateur sous Unix. Sur la plupart des chargeurs d'amorçage (bootloader) modernes (tels LILO ou GRUB), vous pouvez changer le nom du programme qui est lancé à la fin de l'initialisation par le noyau (par défaut, c'est /sbin/init).

En général, cette fonctionnalité est utilisée pour lancer un simple interpréteur de commandes (sh, bash ou zsh, etc.) à la place du programme init. Il suffit, par exemple, de taper init=/bin/sh au prompt du chargeur d'amorçage. Cela permet à un administrateur système de corriger les problèmes dans certains cas extrêmes.

Il n'est même pas nécessaire de taper un mot de passe. Pour pallier cette lacune, il est possible de paramétrer le BIOS pour qu'un mot de passe soit demandé avant le boot.

[modifier] Voir aussi

[modifier] Articles connexes

[modifier] Références externes