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 démarrage[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 démarrage, 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 (SysV init)[modifier | modifier le code]

Au démarrage du système Unix System V, ce programme lisait le fichier /etc/inittab, le champ initdefault déterminant le niveau de fonctionnement par défaut. En son absence, l'utilisateur indiquait manuellement sur sa console système le niveau de fonctionnement souhaité. Les autres lignes du fichier indiquaient au programme quelles étaient les tâches à lancer, et sur quel terminal virtuel il devait opérer en fonction du niveau de fonctionnement demandé. Il a été remplacé dans le système GNU par le démon dmd[1].

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.

Alternatives[modifier | modifier le code]

systemd est l’alternative la plus répandue sous GNU/Linux. On peut également citer initng, upstart sous Ubuntu ou GNU dmd[1], un ancien projet relancé en 2013 pour le trentième anniversaire du système GNU[2]. Ce programme, écrit en langage Scheme, est développé conjointement avec Guix pour servir de gestionnaire de démarrage officiel dudit système. Sous Microsoft Windows, l’application de démarrage baptisée wininit.exe se retrouve notamment sous Vista.

Notes et références[modifier | modifier le code]

  1. a et b (en) « GNU dmd », sur directory.fsf.org, FSF,‎ 7 juillet 2014 (consulté le 8 juillet 2014)
  2. (en) Ludovic Courtès (27-09-2013), « GNU Guix 0.4 released », guix-devel.

Liens externes[modifier | modifier le code]