Scroll to navigation

boot(7) Miscellaneous Information Manual boot(7)

NOM

boot - processus de démarrage du système basé sur System V version 4 d'UNIX

DESCRIPTION

The bootup process (or "boot sequence") varies in details among systems, but can be roughly divided into phases controlled by the following components:

(1)
matériel
(2)
chargeur de démarrage
(3)
noyau
(4)
root user-space process (init(8) and inittab(5))
(5)
scripts de démarrage

Chaque composant est décrit plus en détails ci-dessous.

Matériel

After power-on or hard reset, control is given to a program stored in read-only memory (normally PROM); for historical reasons involving the personal computer, this program is often called "the BIOS".

This program normally performs a basic self-test of the machine and accesses nonvolatile memory to read further parameters. This memory in the PC is battery-backed CMOS memory, so most people refer to it as "the CMOS"; outside of the PC world, it is usually called "the NVRAM" (nonvolatile RAM).

The parameters stored in the NVRAM vary among systems, but as a minimum, they should specify which device can supply an OS loader, or at least which devices may be probed for one; such a device is known as "the boot device". The hardware boot stage loads the OS loader from a fixed position on the boot device, and then transfers control to it.

Le périphérique depuis lequel le chargeur d'amorçage est lu peut être attaché via un réseau, auquel cas les détails de démarrage sont indiqués par des protocoles tels que DHCP, TFTP, PXE, Etherboot, etc.

Chargeur de démarrage

Le rôle principal du chargeur de démarrage est de localiser le noyau sur un périphérique, 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.

In a traditional PC, the OS loader is located in the initial 512-byte block of the boot device; this block is known as "the 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 – et rend quasiment impossible d'y insérer beaucoup de fonctionnalités.

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. Ce chargeur de démarrage secondaire peut se trouver dans un plus grand emplacement de stockage persistant, comme une partition de disque.

Sous Linux, le chargeur de démarrage est souvent grub(8) (lilo(8) est une alternative).

Noyau

When the kernel is loaded, it initializes various components of the computer and operating system; each portion of software responsible for such a task is usually consider "a driver" for the applicable component. The kernel starts the virtual memory swapper (it is a kernel process, called "kswapd" in a modern Linux kernel), and mounts some filesystem at the root path, /.

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 processus en espace utilisateur, qui porte le numéro de processus 1 (PID). 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.

Processus root en espace utilisateur

La description suivante s'applique aux systèmes basés sur System V release 4. Cependant, un certain nombre de systèmes très répandus ont adopté une approche semblable mais fondamentalement différente appelée systemd(1), pour laquelle le processus de démarrage est détaillé dans bootup(7).

Lorsque /sbin/init démarre, il lit /etc/inittab pour y trouver ses instructions. Ce fichier définit ce qui doit s'exécuter lorsque le programme /sbin/init doit entrer dans un mode de fonctionnement (run-level) particulier. Cela donne à l'administrateur une méthode simple pour établir un environnement pour un usage donné. Chaque mode de fonctionnement est associé à un ensemble de services (par exemple, S correspond à un mode maintenance (single-user) et 2 implique le fonctionnement de la plupart des services réseaux).

L'administrateur peut modifier le mode de fonctionnement grâce à init(1) et consulter le mode de fonctionnement actuel avec runlevel(8).

Toutefois, comme il n'est pas pratique de gérer les services individuellement en éditant ce fichier, /etc/inittab se limite à l'appel d'un ensemble de scripts qui démarrent/arrêtent les services.

Scripts de démarrage

La description suivante s'applique aux systèmes basés sur System V release 4. Cependant, un certain nombre de systèmes très répandus (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 existe 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

To make specific scripts start/stop at specific run levels and in a specific order, there are sequencing directories, normally of the form /etc/rc[0-6S].d. In each of these directories, there are links (usually symbolic) to the scripts in the /etc/init.d directory.

A primary script (usually /etc/rc) is called from inittab(5); this primary script calls each service's script via a link in the relevant sequencing directory. Each link whose name begins with 'S' is called with the argument "start" (thereby starting the service). Each link whose name begins with 'K' is called with the argument "stop" (thereby stopping the service).

Pour définir l'ordre de démarrage ou d'arrêt au sein d'un même run level, le nom d'un lien contient un numéro d'ordre. Aussi, pour rendre les noms plus clairs, ceux-ci se terminent par le nom du service auquel ils se réfèrent. Exemple : le lien /etc/rc2.d/S80sendmail démarre le service sendmail(8) 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.

Gérer ces liens revient à gérer l'ordre de démarrage et les run levels. Toutefois, sur beaucoup de systèmes, il existe des outils qui facilitent cela (exemple : chkconfig(8)).

Configuration de démarrage

A program that provides a service is often called a "daemon". Usually, a daemon may receive various command-line options and parameters. To allow a system administrator to change these inputs without editing an entire boot script, some separate configuration file is used, and is located in a specific directory where an associated boot script may find it (/etc/sysconfig on older Red Hat systems).

In older UNIX systems, such a file contained the actual command line options for a daemon, but in modern Linux systems (and also in HP-UX), it just contains shell variables. A boot script in /etc/init.d reads and includes its configuration file (that is, it "sources" its configuration file) and then uses the variable values.

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 française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org> et David Prévot <david@tilapin.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.

17 mai 2025 Pages du manuel de Linux (non publiées)