Table des matières
Résumé
L'amorçage d'un système Linux est une procédure complexe. De nombreux
composants différents sont impliqués et doivent interagir sans heurts. Ce
chapitre fournit une description sommaire des principes sous-jacents et des
composants qui interviennent. Le principe des niveaux d'exécution et la
configuration du système SUSE avec sysconfig sont
également abordés ci-après.
Le processus d'amorçage de Linux se compose de plusieurs étapes dont chacune est représentée par un autre composant. La liste suivante résume brièvement le processus d'amorçage et décrit tous les composants majeurs concernés.
Le BIOS
Une fois que l'ordinateur est allumé, le BIOS initialise l'écran et le clavier, puis teste la mémoire centrale. Jusqu'à ce stade, la machine n'accède à aucun support de stockage de masse. Par la suite, les informations sur la date et l'heure actuelles, ainsi que les périphériques sont chargés à partir des valeurs en mémoire non volatile (Réglages CMOS). Lorsque le premier disque dur et sa géométrie sont reconnus, le contrôle du système passe du BIOS au chargeur d'amorçage.
Le chargeur d'amorçage
Le premier secteur de données physiques de 512 octets du premier disque dur est chargé dans la mémoire centrale et le chargeur d'amorçage, placé au début de ce secteur, prend le contrôle. Les commandes exécutées par le chargeur d'amorçage déterminent le reste du processus d'amorçage. Par conséquent, les 512 premiers octets du disque dur sont appelés Master Boot Record (MBR, secteur d'amorçage maître). Le chargeur d'amorçage passe ensuite le contrôle au système d'exploitation proprement dit, dans ce cas, le noyau Linux. Vous trouverez plus d'informations sur GRUB, le chargeur d'amorçage de Linux dans Chapitre 8, Le gestionnaire d'amorçage.
Le noyau et initrd
Pour transmettre le contrôle du système, le chargeur d'amorçage charge à la fois le noyau et un disque virtuel (RAM disk) initial en mémoire. Le noyau Linux offre la possibilité d'avoir de petits systèmes de fichiers chargés dans un disque virtuel et de lancer des programmes avant que le système de fichiers racine proprement dit ne soit monté. Le noyau décompresse ensuite l'initrd et le monte à titre de système de fichiers racine temporaire. Le contenu d'initrd est un système Linux minimal qui contient un exécutable appelé linuxrc. Cet exécutable est exécuté avant que le système de fichiers racine réel ne soit monté. Lorsque cela est possible, le noyau libère la mémoire occupée par initrd et démarre init dès que linuxrc a terminé sa tâche. Vous trouverez plus d'informations sur initrd dans Section 7.1.1, « initrd ».
linuxrc
Ce programme effectue toutes les actions nécessaires pour monter le véritable système de fichiers racine comme fournir les fonctionnalités du noyau pour le système de fichiers nécessaire et les pilotes de périphériques pour les contrôleurs de mémoire de masse. Dès que le système de fichiers réel a été monté avec succès, linuxrc s'arrête et le noyau démarre le programme init. Vous trouverez plus d'informations sur linuxrc dans Section 7.1.2, « linuxrc ».
init
init prend en charge l'amorçage effectif du système par l'intermédiaire de plusieurs niveaux différents qui fournissent différentes fonctionnalités. init est décrit dans Section 7.2, « Le programme init ».
initrd est un petit système de fichiers (généralement compressé) que le noyau peut charger dans un disque virtuel puis monter en tant que système de fichiers temporaire. Il fournit un environnement Linux minimal qui permet d'exécuter des programmes avant que le système de fichiers racine réel ne soit monté. Cet environnement Linux minimal est chargé en mémoire par les routines BIOS et ne nécessite pas une configuration matérielle particulière autre que suffisamment de mémoire. initrd doit toujours fournir un exécutable nommé linuxrc qui doit être quitté sans erreur.
Avant que le système de fichiers racine réel puisse être monté et le système d'exploitation réel ne soit démarré, le noyau a besoin des pilotes correspondants pour accéder au périphérique sur lequel réside le système de fichiers racine. Ces pilotes peuvent contenir des pilotes spéciaux pour un certain type de disques durs, voire des pilotes réseau pour accéder à un système de fichiers en réseau (voirGérer la configuration réseau). Le noyau doit également contenir le code nécessaire pour lire le système de fichiers de initrd. Les modules pour le système de fichiers racine peuvent être chargés par linuxrc.
Créez un initrd avec le script
mkinitrd. Dans SUSE LINUX, les modules à charger sont
indiqués par la variable INITRD_MODULES dans le
fichier /etc/sysconfig/kernel.
Après
l'installation, cette variable se voit automatiquement affecter la valeur
correcte (le linuxrc d'installation enregistre la liste des modules qui ont
été chargés). Les modules sont chargés dans l'ordre exact dans lequel ils
apparaissent dans INITRD_MODULES. C'est
particulièrement important si l'on fait appel à plusieurs pilotes SCSI, car
sinon les noms des disques durs changeraient. À proprement parler, il
serait suffisant de ne charger que ces pilotes nécessaires pour accéder au
système de fichiers racine. Cependant, tous les pilotes SCSI requis pour
l'installation sont chargés au moyen d'initrd car les charger plus tard
pourrait être problématique.
![]() | Mettre à jour initrd |
|---|---|
Le chargeur d'amorçage charge initrd de la même manière que le noyau. Il n'est pas nécessaire de réinstaller GRUB après la mise à jour de l'initrd, car GRUB cherche dans le répertoire le fichier correct lors de l'amorçage. | |
L'objectif principal de linuxrc est de préparer le montage du système de fichiers racine réel et l'accès à ce dernier. Selon votre configuration système effective, linuxrc se charge des tâches suivantes.
Selon votre configuration matérielle, des pilotes spéciaux peuvent être nécessaires pour accéder aux composants matériels de votre ordinateur (le composant le plus important étant votre disque dur). Pour accéder au système de fichiers racine final, le noyau doit charger les pilotes appropriés du système de fichiers.
Si vous avez configuré votre système qui contienne le système de fichiers racine en RAID ou sous LVM, linuxrc configure LVM ou le RAID pour permettre d'accéder plus tard au système de fichiers racine. Vous trouverez plus d'informations sur le RAID dans Section 3.8, « Configuration RAID logiciel ». D'autres information sur LVM sont disponibles dans Section 3.7, « Configuration du gestionnaire de volumes logiques (LVM) ».
Si vous avez configuré votre système pour utiliser un système de fichiers racine monté en réseau (monté via NFS), linuxrc doit être sûr que les pilotes réseau corrects sont chargés et qu'ils sont configurés pour permettre l'accès au système de fichiers racine.
Quand linuxrc est appelé au cours de l'amorçage initial en tant que partie de la procédure d'installation, ses tâches diffèrent de celles mentionnées plus haut :
Lorsque vous démarrez le processus d'installation, votre machine charge un noyau d'installation et un initrd spécial avec l'utilitaire d'installation YaST à partir du support d'installation. Le programme d'installation YaST, qui est exécuté dans un système de fichiers en mémoire vive, doit avoir des informations sur l'emplacement réel du support d'installation pour y accéder et installer le système d'exploitation.
Comme mentionné dans Section 7.1.1, « initrd », le
processus d'amorçage démarre avec un ensemble minimal de pilotes que
l'on peut utiliser avec la plupart des configurations matérielles.
linuxrc démarre un processus initial d'analyse du matériel qui détermine
l'ensemble de pilotes appropriés pour votre configuration matérielle.
Ces valeurs sont écrites ultérieurement dans
INITRD_MODULES, dans le fichier
/etc/sysconfig/kernel pour permettre à n'importe
quel processus d'amorçage qui viendrait plus tard d'utiliser un initrd
personnalisé. Pendant le processus d'installation, linuxrc charge cet
ensemble de modules.
Dès que le matériel a été correctement reconnu et que les pilotes appropriés ont été chargés, linuxrc démarre le système d'installation qui contient le programme d'installation YaST réel ou le système de secours.
Pour finir, linuxrc démarre YaST, qui démarre à son tour l'installation des paquetages et la configuration du système.