Table des matières
Résumé
L'amorçage d'un système Linux implique de nombreux composants. Ce chapitre décrit les principes sous-jacents et présente en détail les composants impliqués. Le concept de niveau d'exécution et la configuration du système SUSE avec sysconfig sont également abordés dans ce chapitre.
Le processus d'amorçage de Linux se compose de plusieurs étapes, chacune représentée par un autre composant. La liste suivante résume brièvement le processus d'amorçage et présente tous les principaux composants impliqués.
BIOS. Une fois l'ordinateur allumé, le BIOS initialise l'écran et le clavier, puis teste la mémoire principale. La machine n'accède jusque-là à aucun support de stockage de masse. Ensuite, les informations sur la date et l'heure actuelles ainsi que sur les périphériques les plus importants sont chargées à partir des valeurs 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.
Chargeur d'amorçage. Le premier secteur de données de 512 octets du premier disque dur est chargé dans la mémoire principale et le chargeur d'amorçage qui réside au début de ce secteur prend la relève. Les commandes exécutées par le chargeur d'amorçage déterminent la partie restante du processus d'amorçage. Par conséquent, les 512 premiers octets du premier disque dur sont appelés MBR (Master Boot Record - secteur d'amorçage principal). Le chargeur d'amorçage passe ensuite le contrôle au système d'exploitation, en l'occurrence le kernel Linux. Pour plus d'informations sur GRUB, le chargeur d'amorçage Linux, consultez le Chapitre 29, Chargeur d'amorçage.
Kernel et initramfs. Pour transmettre le contrôle du système, le chargeur d'amorçage charge le kernel et le système de fichiers initial basé sur la RAM (initramfs) dans la mémoire. Le contenu du système ramfs initial peut être utilisé par le kernel directement. Ce système contient un petit fichier exécutable appelé init qui traite le montage du système de fichiers racine réel. Dans les versions précédentes de SUSE Linux, ces tâches étaient traitées par initrd et linuxrc, respectivement. Pour plus d'informations sur initramfs, consultez la Section 28.1.1, « initramfs ».
init sur initramfs. Ce programme effectue toutes les actions nécessaires au montage du système de fichiers racine adéquat, notamment la mise en place des fonctionnalités du kernel pour le système de fichiers nécessaire et des pilotes de périphérique pour les contrôleurs de stockage de masse. Une fois le système de fichiers racine détecté, il est contrôlé afin de détecter les erreurs, puis monté. Si cette opération aboutit, le système initramfs est nettoyé et le programme init du système de fichiers racine est exécuté. Pour plus d'informations sur init, consultez la Section 28.1.2, « init sur initramfs ».
init. init prend en charge l'amorçage effectif du système par plusieurs niveaux qui fournissent des fonctionnalités différentes. Il est décrit à la Section 28.2, « Le processus init ».
initramfs est un petit système de fichiers que le kernel peut charger sur un disque virtuel. Il fournit un environnement Linux minimal qui permet d'exécuter des programmes avant le montage du système de fichiers racine réel. Cet environnement Linux minimal est chargé en mémoire par les routines du BIOS et n'a pas de configuration matérielle spécifique autre que suffisamment de mémoire. initramfs doit toujours fournir un fichier exécutable nommé init qui doit exécuter le programme d'initialisation proprement dit sur le système de fichiers racine afin de lancer le processus d'amorçage.
Avant que le système de fichiers racine réel puisse être monté et que le système d'exploitation puisse démarrer, le kernel a besoin des pilotes correspondants pour accéder au périphérique sur lequel est situé le système de fichiers racine. Il peut s'agir de pilotes spéciaux pour certains types de disques durs ou de pilotes réseau permettant d'accéder à un système de fichiers réseau. Les modules nécessaires au système de fichiers racine peuvent être chargés par init sur initramfs. initramfs est disponible tout au long du processus d'amorçage. Tous les événements d'enfichage à chaud générés au cours de l'amorçage peuvent ainsi être traités.
Si vous devez changer le matériel (disques durs) sur un système installé et que ce matériel nécessite des pilotes différents dans le kernel au moment de l'amorçage, vous devez mettre à jour initramfs. Cette opération s'effectue comme avec son prédécesseur, initrd, en appelant mkinitrd. L'appel de mkinitrd sans argument crée initramfs. L'appel de mkinitrd -R
crée initrd. Dans SUSE Linux, les modules à charger sont spécifiés par la variable INITRD_MODULES dans /etc/sysconfig/kernel. Après l'installation, cette variable adopte automatiquement la valeur correcte. Les modules sont chargés exactement dans l'ordre dans lequel ils apparaissent dans INITRD_MODULES. Cet aspect est très important, notamment en présence de plusieurs pilotes SCSI car sinon, les noms des disques durs seraient modifiés. En d'autres termes, il suffirait de charger uniquement les pilotes nécessaires pour accéder à ce système de fichiers racine. Cependant, tous les pilotes SCSI nécessaires à l'installation sont chargés au moyen d'initramfs ou d'initrd car un chargement ultérieur risquerait de poser problème.
![]() | Mise à jour d'initramfs ou d'initrd |
|---|---|
Le chargeur d'amorçage charge initramfs ou initrd de la même manière que le kernel. Il est inutile de réinstaller GRUB après la mise à jour d'initramfs ou d'initrd car GRUB recherche le fichier correct dans le répertoire lors de l'amorçage. | |
L'objectif principal d'init sur initramfs est de préparer le montage du système de fichiers racine réel ainsi que son accès. En fonction de la configuration actuelle de votre système, init est responsable des tâches suivantes.
En fonction de 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 kernel doit charger les pilotes corrects du système de fichiers.
Si vous avez configuré votre système pour que le système de fichiers racine soit contenu sous RAID ou LVM, init configure LVM ou RAID pour permettre l'accès ultérieur au système de fichiers racine. Pour plus d'informations sur RAID, consultez la Section 2.3, « Configuration de Soft RAID ». Pour plus d'informations sur LVM, consultez la Section 2.2, « Configuration du gestionnaire de volumes logiques (LVM) ».
Si vous avez configuré votre système pour qu'il utilise un système de fichiers racine monté sur un réseau (monté via NFS), init doit s'assurer que les pilotes réseau correspondants sont chargés et qu'ils sont configurés pour autoriser l'accès au système de fichiers racine.
Lorsque init est appelé au cours de l'amorçage initial dans le cadre du processus d'installation, ses tâches diffèrent de celles mentionnées précédemment :
Lorsque vous démarrez le processus d'installation, votre machine charge un kernel d'installation et un initrd spécial avec le programme d'installation de YaST à partir du support d'installation. Le programme d'installation de YaST, qui est exécuté dans un système de fichiers RAM, doit disposer d'informations sur l'emplacement réel du support d'installation pour y accéder et installer le système d'exploitation.
Comme l'indique la Section 28.1.1, « initramfs », le processus d'amorçage démarre avec un ensemble réduit de pilotes qui peuvent être utilisés avec la plupart des configurations matérielles. init démarre un processus de recherche matérielle qui détermine l'ensemble des pilotes adaptés à votre configuration matérielle. Ces valeurs sont ensuite écrites dans INITRD_MODULES dans /etc/sysconfig/kernel pour permettre à tout processus d'amorçage ultérieur d'utiliser un initrd personnalisé. Au cours du processus d'installation, init charge cet ensemble de modules.
Dès que le matériel a été correctement reconnu et que les pilotes correspondants ont été chargés, init démarre le système d'installation qui contient le programme d'installation de YaST proprement dit ou le système de secours.
Pour finir, init démarre YaST, qui lance l'installation des paquetages et la configuration du système.