boot(7) Miscellaneous Information Manual boot(7)
NOM
boot - processus de demarrage du systeme base sur System V version 4
d'UNIX
DESCRIPTION
Le processus de demarrage (ou << sequence de demarrage >>) depend des
systemes, mais peut grossierement etre divise en phases controlees par
les composants suivants :
(1) materiel
(2) chargeur de demarrage
(3) noyau
(4) processus root en espace utilisateur (init et inittab)
(5) scripts de demarrage
Chaque composant est decrit plus en details ci-dessous.
Materiel
Apres la mise sous tension ou une reinitialisation materielle, un
programme stocke en memoire morte (souvent une PROM) prend le controle.
Pour des raisons historiques liees au PC, on appelle generalement ce
programme le BIOS.
Ce programme effectue normalement un autotest de la machine et accede a
la memoire non volatile pour y lire quelques parametres. Dans les PC,
cette memoire est maintenue par une memoire CMOS entretenue par une
batterie. Ainsi la plupart des gens l'appellent CMOS, alors qu'en
dehors du monde des PC, elle est generalement appelee NVRAM (RAM non
volatile).
Les parametres stockes dans la NVRAM dependent des systemes, mais
doivent indiquer a minima quel peripherique peut fournir un chargeur de
demarrage, ou quels peripheriques peuvent etre sondes pour en trouver
un. Un tel peripherique est appele << peripherique d'amorcage >>. La
phase de demarrage materiel charge le chargeur de demarrage depuis une
position fixe sur le peripherique d'amorcage et lui passe le controle.
Note : Le peripherique depuis lequel le chargeur d'amorcage est lu peut
etre attache via un reseau, auquel cas les details de demarrage
sont indiques par des protocoles tels que DHCP, TFTP, PXE,
Etherboot, etc.
Chargeur de demarrage
Le role principal du chargeur de demarrage est de localiser le noyau
sur un peripherique, le charger et l'executer. La plupart des chargeurs
de demarrage sont interactifs, pour permettre la specification d'un
noyau alternatif (par exemple un noyau de sauvegarde dans le cas ou la
derniere version compilee ne fonctionne pas) et le passage de
parametres optionnels au noyau.
Sur les PC traditionnels, le chargeur de demarrage est situe sur le
premier bloc de 512 octets du peripherique d'amorcage - ce bloc est
appele le MBR (Master Boot Record).
Sur la plupart des systemes, ce chargeur initial est tres limite du
fait de diverses contraintes. Meme sur des systemes autres que le PC,
il existe des limitations concernant la taille et la complexite de ce
chargeur, mais la taille du MBR des PC est limitee - 512 octets y
compris la table de partition - et rend quasiment impossible d'y
inserer beaucoup de fonctionnalites.
Ainsi, sur la plupart des systemes d'exploitation, le chargeur initial
appelle un chargeur de demarrage secondaire situe sur une partition du
disque. Ce chargeur de demarrage secondaire peut se trouver dans un
plus grand emplacement de stockage persistant, comme une partition de
disque.
Sous Linux, le chargeur de demarrage est souvent grub(8) (lilo(8) est
une alternative).
Noyau
Quand le noyau est charge, il initialise divers composants de
l'ordinateur et du systeme d'exploitation. Chaque morceau de logiciel
responsable d'une telle tache est considere comme un << pilote >> pour
le composant concerne. Le noyau demarre le gestionnaire de swap (c'est
un processus noyau, appele kswapd sur les noyaux Linux modernes), et
monte le systeme de fichiers sur la racine << / >>).
Quelques parametres relatifs a cela peuvent etre passes au noyau (par
exemple : on peut specifier un autre systeme de fichiers racine que
celui par defaut). Pour plus d'informations sur les parametres du noyau
Linux, consultez bootparam(7).
C'est uniquement a cet instant que le noyau cree un premier processus
en espace utilisateur, qui porte le numero de processus 1 (PID). Ce
processus execute le programme /sbin/init, en lui passant tout
parametre qui n'est pas deja gere par le noyau.
Processus root en espace utilisateur
Note : La description suivante s'applique aux systemes bases sur
System V release 4. Cependant, un certain nombre de systemes
tres repandus ont adopte une approche semblable mais
fondamentalement differente appelee systemd(1), pour laquelle le
processus de demarrage est detaille dans bootup(7).
Lorsque /sbin/init demarre, il lit /etc/inittab pour y trouver ses
instructions. Ce fichier definit ce qui doit s'executer lorsque le
programme /sbin/init doit entrer dans un mode de fonctionnement
(run-level) particulier. Cela donne a l'administrateur une methode
simple pour etablir un environnement pour un usage donne. Chaque mode
de fonctionnement est associe a un ensemble de services (par exemple, S
correspond a un mode maintenance (single-user) et 2 implique le
fonctionnement de la plupart des services reseaux).
L'administrateur peut modifier le mode de fonctionnement grace a
init(1) et consulter le mode de fonctionnement actuel avec runlevel(8).
Toutefois, comme il n'est pas pratique de gerer les services
individuellement en editant ce fichier, /etc/inittab se limite a
l'appel d'un ensemble de scripts qui demarrent/arretent les services.
Scripts de demarrage
Note : La description suivante s'applique aux systemes bases sur
System V release 4. Cependant, un certain nombre de systemes
tres repandus (Slackware Linux, FreeBSD, OpenBSD) utilisent un
procede quelque peu different pour les scripts de demarrage.
Pour chaque service gere (messagerie, serveur nfs, cron,>etc.), il
existe un script de demarrage simple stocke dans un repertoire
specifique (/etc/init.d dans la majorite 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 arreter
le service). Le script peut eventuellement accepter d'autres parametres
pratiques (par exemple : << restart >>, enchaine un << stop >> suivi
d'un << start >>, << status >> donne l'etat du service). Un appel du
script sans argument permet d'afficher tous ceux possibles.
Repertoires d'ordonnancement
Pour permettre aux scripts specifiques de demarrer/arreter dans un mode
de fonctionnement (run level) specifique et dans un ordre particulier,
il y a des repertoires d'ordonnancement. Ce sont generalement
/etc/rc[0-6S].d. Dans chacun de ces repertoires, il y a des liens
(generalement symboliques) vers les scripts du repertoire /etc/init.d.
Un premier script (souvent /etc/rc) est appele par inittab(5) et
appelle lui-meme le script de chaque service grace a un lien dans le
repertoire d'ordonnancement correspondant. Tous les liens dont le nom
commence par << S >> sont appeles avec l'argument << start >> (et
demarrent le service concerne). Tous les liens dont le nom commence par
<< K >> sont appeles avec l'argument << stop >> (et arretent le service
concerne).
Pour definir l'ordre de demarrage ou d'arret au sein d'un meme run
level, le nom d'un lien contient un numero d'ordre. Aussi, pour rendre
les noms plus clairs, ceux-ci se terminent par le nom du service auquel
ils se referent. Exemple : le lien /etc/rc2.d/S80sendmail demarre le
service sendmail(8) dans le run level 2. Cela est fait apres
l'execution de /etc/rc2.d/S12syslog mais avant celle de
/etc/rc2.d/S90xfs.
Gerer ces liens revient a gerer l'ordre de demarrage et les run levels.
Toutefois, sur beaucoup de systemes, il existe des outils qui
facilitent cela (exemple : chkconfig(8)).
Configuration de demarrage
Un programme fournissant un service est souvent appele << demon >>.
Habituellement, un demon peut recevoir des options et arguments sur la
ligne de commande. Pour permettre aux administrateurs systeme de
modifier ces parametres sans editer un script complet de demarrage, un
fichier de configuration separe est utilise. Il est stocke dans un
repertoire specifique (/etc/sysconfig sur les anciens systemes Red Hat)
ou un script de demarrage associe pourra le trouver.
Sur les anciens systemes UNIX, ces fichiers contenaient les options de
ligne de commande pour les demons, mais sur les systemes Linux modernes
(et aussi sur HP-UX), ces fichiers contiennent uniquement des variables
shell. Un script de demarrage dans le repertoire /etc/init.d lit et
incorpore son fichier de configuration (il << source >> le fichier de
configuration) et utilise ensuite les valeurs des variables.
FICHIERS
/etc/init.d/, /etc/rc[S0-6].d/, /etc/sysconfig/
VOIR AUSSI
init(1), systemd(1), inittab(5), bootparam(7), bootup(7), runlevel(8),
shutdown(8)
TRADUCTION
La traduction francaise de cette page de manuel a ete creee par
Christophe Blaess , Stephan Rafin
, Thierry Vignaud ,
Francois Micaux, Alain Portal , Jean-Philippe
Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas
Huriaux , Nicolas Francois
, Florentin Duneau
, Simon Paillard , Denis Barbier et David Prevot
Cette traduction est une documentation libre ; veuillez vous reporter a
la GNU General Public License version 3
concernant les conditions
de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE.
Si vous decouvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message a .
Pages du manuel de Linux 6.8 2 mai 2024 boot(7)