Date création : 30-03-2008 14:17:03
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section7 - Divers]
BOOT
Index
- NOM
- DESCRIPTION
- Amorçage matériel
- Chargeur de démarrage
- Démarrage du noyau
- init et inittab
- Scripts de démarrage
- Répertoires d'ordonnancement
- Configuration de démarrage
- FICHIERS
- VOIR AUSSI
- TRADUCTION
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, (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, et nous rejoindre au démarrage du noyau.
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,
voir 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,
etc.). 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 Système V release
4, ce qui couvre actuellement la plupart des Unices commerciaux (Solaris,
HP-UX, Irix, Tru64) ainsi que les distributions majeures de Linux (RedHat,
Debian, Mandrake, Suse, Caldera). Quelques 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 », enchaine 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 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'odre 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 RedHat et
Mandrake), et sont utilisés par les scripts de démarrage.
Sur les anciens Unices, 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)
TRADUCTION
Cette page de manuel a été traduite par
François Micaux en 2003, puis a été mise à jour par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».
|