init

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

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, et 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 upstart au lieu de init.

Au boot[modifier | modifier le code]

Le chargeur d'amorçage charge le noyau (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 exécute lorsqu'on boot un ordinateur et la dernière tâche présente avant l'arrêt de l'ordinateur.

« init » de Unix BSD[modifier | modifier le code]

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.

« init » de Unix System V (SysVinit)[modifier | modifier le code]

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é.

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

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 ou de configurer le chargeur d'amorçage avec un mot de passe (s'il le permet) pour protéger le prompt, voire de chiffrer les partitions.

Comparaison avec Windows[modifier | modifier le code]

wininit.exe est l'application de démarrage de Microsoft Windows sur les versions récentes[1] de Windows, notamment Vista.

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

  • initng, un processus de démarrage plus rapide que init
  • upstart de ubuntu
  • systemd remplace init System V dans des distributions majeures GNU\Linux

Références externes[modifier | modifier le code]

Notes[modifier | modifier le code]

  1. wininit