init
init (abréviation de initialisation) est le premier programme informatique exécuté sur les systèmes d'exploitation basés Unix. Il est exécuté comme un démon informatique et possède l'identifiant de processus (PID) 1. init est lancé par le noyau (kernel en anglais) et reste actif jusqu'à ce que le système soit éteint. Il est le parent direct ou indirect de tous les autres programmes lancés sur le système.
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 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 utilise upstart au lieu de init jusqu'à la version 14.10, puis systemd à partir de la version 15.04.
Au démarrage
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
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)
Au démarrage, le programme init du système Unix System V lit le fichier /etc/inittab, le champ initdefault déterminant le niveau de fonctionnement par défaut. En son absence, l'utilisateur indique manuellement sur sa console système le niveau de fonctionnement souhaité. Les autres lignes du fichier indiquent au programme quelles sont les tâches à lancer, et sur quel terminal virtuel il doit proposer un login en fonction du niveau de fonctionnement demandé.
Commande d'arrêt
La commande init
permet de stopper le système :
# Arrêt
init 0
# Reboot
init 6
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 boot 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
systemd est l’alternative la plus répandue sous GNU/Linux. On peut également citer initng, upstart sous Ubuntu ou GNU Shepherd[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
- (en) « GNU dmd », sur directory.fsf.org, FSF, (consulté le )
- (en) Ludovic Courtès, GNU Guix 0.4 released, guix-devel, (lire en ligne).
Liens externes
- (en) page man pour init
- runit, svscan et minit (schémas alternatifs pour cette phase d'initialisation)
- Portail GNU/Linux
- Portail des logiciels libres