Provided by: manpages-fr_3.65d1p1-1_all 

NOM
boot-scripts - Description générale du démarrage du système
DESCRIPTION
La séquence de démarrage est variable en fonction du système mais peut globalement être découpée selon
les étapes suivantes : (i) amorçage matériel, (ii) chargeur de démarrage du système d'exploitation, (iii)
démarrage du noyau, (iv) init et inittab, (v) scripts de démarrage. Nous allons décrire chacune d'entre
elles plus en détail ci-dessous.
Amorçage matériel
Après la mise sous tension ou un reset matériel, un programme stocké en mémoire morte (souvent une PROM)
prend le contrôle. Sur les PC, on appelle généralement ce programme le BIOS.
Ce programme effectue normalement un autotest de la machine et accède à la mémoire non volatile pour y
lire quelques paramètres. Dans les PC, cette mémoire est maintenue par une batterie de type CMOS. Ainsi
la plupart des gens l'appellent CMOS, alors qu'en dehors du monde des PC, elle est généralement appelée
nvram (non-volatile ram).
Les paramètres stockés dans la nvram varient d'un système à l'autre, mais au minimum, le programme
d'amorçage matériel devrait savoir quel est le périphérique d'amorçage, ou à défaut quels périphériques
il faut essayer pour amorcer le système.
Ensuite, la phase de démarrage matériel accède au périphérique d'amorçage, charge le chargeur de
démarrage, qui est situé à une position fixe sur le périphérique d'amorçage, et lui passe le contrôle.
Note : Nous n'abordons pas ici le démarrage à partir du réseau. Ceux qui s'intéressent à ce sujet
devraient rechercher du côté de DHCP, TFTP, PXE, Etherboot.
Chargeur de démarrage
Sur les PC, le chargeur de démarrage est situé sur le premier secteur du périphérique d'amorçage - c'est
le MBR (Master Boot Record).
Sur la plupart des systèmes, ce chargeur initial est très limité du fait de diverses contraintes. Même
sur des systèmes autres que le PC, il existe des limitations concernant la taille et la complexité de ce
chargeur, mais la taille du MBR des PC est limitée - 512 octets y compris la table de partition
(64 octets) et un identifiant de disque (2 octets) ne laissent que 446 octets pour le code - et rend
quasiment impossible le stockage d'un chargeur de démarrage complet.
Ainsi, sur la plupart des systèmes d'exploitation, le chargeur initial appelle un chargeur de démarrage
secondaire situé sur une partition du disque.
Sous Linux, le chargeur de démarrage est normalement lilo(8) ou grub(8). Chacun peut être installé soit
en tant que chargeur secondaire (si le MBR installé par DOS pointe vers eux), soit en tant que chargeur
en deux parties, car ils fournissent un MBR spécial contenant un code d'amorçage pour charger la seconde
partie du chargeur à partir de la partition principale.
Le rôle principal du chargeur de démarrage est de localiser le noyau sur le disque, le charger et
l'exécuter. La plupart des chargeurs de démarrage sont interactifs, pour permettre la spécification d'un
noyau alternatif (par exemple un noyau de sauvegarde dans le cas où la dernière version compilée ne
fonctionne pas) et le passage de paramètres optionnels au noyau.
Démarrage du noyau
Quand le noyau est chargé, il initialise les périphériques (via leurs pilotes), démarre le gestionnaire
de swap (c'est un « processus noyau », appelé kswapd sur les noyaux Linux modernes), et monte le système
de fichiers racine - appelé root filesystem - (/).
Quelques paramètres relatifs à cela peuvent être passés au noyau (par exemple : on peut spécifier un
autre système de fichiers racine que celui par défaut). Pour plus d'informations sur les paramètres du
noyau Linux, consultez bootparam(7).
C'est uniquement à cet instant que le noyau crée un premier (en espace utilisateur) processus, qui porte
le numéro 1. Ce processus exécute le programme /sbin/init, en lui passant tout paramètre qui n'est pas
déjà géré par le noyau.
init et inittab
Quand init démarre, il lit /etc/inittab pour y trouver ses instructions. Ce fichier définit ce qui doit
s'exécuter dans les différents modes de fonctionnement (run-levels).
Cela donne à l'administrateur système une méthode simple de gestion dans laquelle chaque run-level est
associé à un ensemble de services (par exemple : S correspond à un mode maintenance (single-user), en
run-level 2, la plupart des services réseaux sont actifs). L'administrateur peut changer le run-level
courant par init(8) et connaître le run-level courant par runlevel(8).
Toutefois, comme il n'est pas pratique de gérer les services individuellement en éditant ce fichier,
inittab se limite à l'appel d'un ensemble de scripts qui démarrent/arrêtent les services.
Scripts de démarrage
Note : La description suivante s'applique aux systèmes basés sur System V release 4, ce qui couvre
actuellement la plupart des systèmes UNIX commerciaux (Solaris, HP-UX, Irix, Tru64) ainsi que les
distributions majeures de Linux (Red Hat, Debian, Mandriva, SUSE, Ubuntu). Certains systèmes
(Slackware Linux, FreeBSD, OpenBSD) utilisent un procédé quelque peu différent pour les scripts de
démarrage.
Pour chaque service géré (messagerie, serveur nfs, cron, etc.) il y a un script de démarrage simple
stocké dans un répertoire spécifique (/etc/init.d dans la majorité des versions de Linux). Chacun de ces
scripts accepte en unique argument le mot « start » — dont l'effet est le lancement du service —, ou le
mot « stop » — pour arrêter le service. Le script peut éventuellement accepter d'autres paramètres
pratiques (par exemple : « restart », enchaîne un « stop » suivi d'un « start », « status » donne l'état
du service). Un appel du script sans argument permet d'afficher tous ceux possibles.
Répertoires d'ordonnancement
Pour permettre aux scripts spécifiques de démarrer/arrêter dans un run-level spécifique et dans un ordre
particulier, il y a des répertoires d'ordonnancement. Ce sont généralement /etc/rc[0-6S].d. Dans chacun
de ces répertoires, il y a des liens (généralement symboliques) vers les scripts du répertoire
/etc/init.d.
Un premier script (souvent /etc/rc) est appelé par inittab(5) et appelle lui-même les scripts des
services grâce aux liens des répertoires d'ordonnancement. Tous les liens dont le nom commence par « S »
sont appelés avec l'argument « start » (et démarrent le service concerné). Tous les liens dont le nom
commence par « K » sont appelés avec l'argument « stop » (et arrêtent le service concerné).
Pour définir l'ordre de démarrage ou d'arrêt au sein d'un même run-level, les noms des liens contiennent
des numéros d'ordre. Aussi, pour plus de clarté, ils se terminent par le nom du service auquel il se
réfère. Exemple : Le lien /etc/rc2.d/S80sendmail démarre le service sendmail dans le run-level 2. Cela
est fait après l'exécution de /etc/rc2.d/S12syslog mais avant celle de /etc/rc2.d/S90xfs.
Pour gérer l'ordre de démarrage et les run-levels, on doit gérer ces liens. Toutefois, sur beaucoup de
versions de Linux, il existe des outils qui facilitent cela. (exemple : chkconfig(8)).
Configuration de démarrage
Habituellement, les démons démarrés peuvent éventuellement recevoir des options et arguments sur leur
ligne de commande. Pour permettre aux administrateurs systèmes de modifier ces paramètres sans éditer le
script, des fichiers de configuration sont utilisés. Ils sont stockés dans un répertoire spécifique
(/etc/sysconfig sur les systèmes Red Hat et Mandrake), et sont utilisés par les scripts de démarrage.
Sur les anciens systèmes UNIX, ces fichiers contenaient les options de ligne de commande pour les démons,
mais sur les systèmes Linux modernes (et aussi sur HP-UX), ces fichiers contiennent uniquement des
variables shell. Les scripts de démarrage du répertoire /etc/init.d sourcent (par la commande interne
« . » du shell) les fichiers de configuration et utilisent ensuite les variables.
FICHIERS
/etc/init.d/, /etc/rc[S0-6].d/, /etc/sysconfig/
VOIR AUSSI
inittab(5), bootparam(7), init(8), runlevel(8), shutdown(8)
COLOPHON
Cette page fait partie de la publication 3.65 du projet man-pages Linux. Une description du projet et des
instructions pour signaler des anomalies peuvent être trouvées à l'adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.
François Micaux (2003), Alain Portal <http://manpagesfr.free.fr/> (2006). Julien Cristau et l'équipe
francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par
un rapport de bogue sur le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C
<section> <page_de_man> ».
Linux 19 septembre 2010 BOOT(7)