Article original : Linux Boot Process – What Happens when Booting RHEL
Le processus de démarrage est constitué d'une série d'actions nécessaires qu'un ordinateur effectue au démarrage. Ces actions vont de la mise sous tension au chargement complet du système d'exploitation (OS) pour un fonctionnement optimal.
Il est essentiel de se familiariser avec le processus de démarrage pour diverses raisons. Tout d'abord, avoir une compréhension solide du processus de démarrage est crucial pour résoudre efficacement les problèmes de démarrage, améliorer les performances du système et contrôler efficacement les différents composants du démarrage du système.
Par exemple, cela vous aidera à identifier et à résoudre les problèmes qui peuvent survenir pendant le processus de démarrage, tels que les dysfonctionnements matériels ou les configurations incorrectes.
De plus, acquérir une compréhension approfondie du processus de démarrage peut vous aider à personnaliser vos configurations de démarrage. Cela inclut la possibilité de sélectionner les programmes ou services spécifiques qui sont lancés au démarrage, affectant finalement à la fois les performances globales du système et la satisfaction de l'utilisateur.
Table des matières
Voici ce que nous allons couvrir dans ce guide complet :
Aperçu général du processus de démarrage
Initialisation du matériel
Pendant le processus de démarrage, le micrologiciel de l'ordinateur (tel que le BIOS ou l'UEFI) prend le contrôle et configure tous les composants matériels nécessaires, y compris le processeur, la mémoire, les dispositifs de stockage et les périphériques. Cette étape cruciale d'initialisation garantit que ces composants sont entièrement préparés pour l'utilisation par le système d'exploitation.
Chargement du système d'exploitation
Une fois le matériel initialisé, le processus de démarrage commence par le chargement du système d'exploitation. Cette étape consiste généralement à charger le noyau et à initialiser les services cruciaux du système d'exploitation en mémoire.
Lancement des services système
Lorsque le système d'exploitation démarre, il active une série de services système et de pilotes. Ces composants essentiels assurent le bon fonctionnement de l'ordinateur, permettant des tâches telles que la gestion des connexions réseau, le traitement des opérations d'entrée/sortie et le maintien des mesures de sécurité.
Interaction utilisateur
Enfin, le processus de démarrage atteint son apogée en vous accueillant (l'utilisateur) avec un écran de connexion ou un environnement de bureau, vous donnant un accès complet à l'ordinateur et à ses diverses applications.
Comprendre le processus de démarrage en profondeur

Processus de démarrage
POST (Power-On Self-Test)
Lorsque qu'un ordinateur est allumé pour la première fois, un processus vital a lieu, connu sous le nom de Power-On Self-Test, ou POST en abrégé. Cette séquence de tests diagnostiques est effectuée par le micrologiciel du système, qu'il s'agisse du BIOS ou de l'UEFI, en tant qu'étape cruciale de la séquence de démarrage.
Son objectif principal est de vérifier que tous les composants matériels essentiels fonctionnent correctement avant de transférer le contrôle au système d'exploitation. En bref, le POST est une étape cruciale pour s'assurer qu'un ordinateur est prêt à fonctionner à son plein potentiel dès le démarrage.
Étapes et fonctions du POST
Initialisation
Lorsque l'ordinateur est allumé, le micrologiciel du système (BIOS ou UEFI) prend le contrôle.
Le micrologiciel commence par initialiser les composants matériels critiques comme le CPU, la RAM, le chipset et d'autres dispositifs essentiels.
Power-On Self-Test (POST)
La séquence POST commence immédiatement après l'initialisation. Elle vérifie divers composants matériels en leur envoyant des signaux et des commandes de test.
Elle vérifie le CPU, la RAM (mémoire), les dispositifs de stockage (disques durs, SSD), les cartes graphiques, les périphériques (clavier, souris) et d'autres matériels connectés.
Chaque composant est testé pour s'assurer qu'il répond correctement et fonctionne dans des paramètres acceptables.
Le CPU est vérifié en confirmant sa fréquence de fonctionnement et en exécutant un test simple.
La RAM est testée en écrivant et en lisant des données pour vérifier son intégrité.
Les dispositifs de stockage sont vérifiés pour leur présence et leur fonctionnalité de base.
Les périphériques peuvent être testés en vérifiant s'ils répondent aux commandes.
Tout échec pendant le processus POST entraîne des messages d'erreur ou des bips sonores indiquant quel composant a échoué au test.
Gestion des erreurs
Si une erreur est détectée pendant le POST, le système s'arrête généralement et affiche un message d'erreur, ou il peut émettre une série de bips sonores (connus sous le nom de codes de bips) indiquant la nature du problème.
Les codes ou messages d'erreur générés pendant le POST sont cruciaux pour diagnostiquer les problèmes matériels. Ils aident à identifier le composant ou la zone défaillante à l'origine du problème.
Achèvement et transfert
Une fois la séquence POST terminée sans détecter d'erreurs critiques, le micrologiciel détermine que le matériel fonctionne correctement.
Le micrologiciel procède ensuite à l'initialisation d'autres composants système et recherche un dispositif de démarrage pour charger le système d'exploitation.
Comprendre le BIOS/UEFI
Le BIOS et l'UEFI sont deux interfaces de micrologiciel essentielles responsables de l'initialisation des composants matériels, de l'exécution des diagnostics système et du support du démarrage du système d'exploitation sur un ordinateur. Ces interfaces sont des acteurs vitaux dans le processus de démarrage d'un système.
BIOS
Pendant des décennies, le BIOS a été une interface de micrologiciel dominante, stockée sur la puce de la carte mère. Son rôle crucial est d'activer et de superviser le matériel pendant la phase de démarrage.
Dès que l'ordinateur est allumé, le BIOS prend le commandement et exécute le Power-On Self-Test (POST) pour s'assurer que les composants matériels essentiels – y compris la RAM, le CPU et les dispositifs de stockage – fonctionnent tous correctement.
Après que le POST soit terminé avec succès, le BIOS recherche ensuite le dispositif de démarrage, en utilisant un ordre de démarrage prédéterminé qui a été précédemment défini dans les paramètres du BIOS. Cet ordre de démarrage inclut généralement des dispositifs populaires tels que les disques durs, les disques SSD, les lecteurs optiques (CD/DVD), les clés USB et les interfaces réseau.
Une fois le dispositif de démarrage identifié, le BIOS procède à la recherche de l'enregistreur de démarrage principal (MBR) ou de la table de partition GUID (GPT) sur le dispositif de stockage. Ceux-ci contiennent le code initial crucial du chargeur de démarrage. Le BIOS transmet ensuite les rênes au chargeur de démarrage désigné, tel que GRUB pour les systèmes d'exploitation Linux.
UEFI (Unified Extensible Firmware Interface)
L'UEFI est un remplacement plus moderne et polyvalent du BIOS. Il offre des fonctionnalités et des capacités plus avancées que le BIOS.
L'UEFI est un micrologiciel qui réside sur la carte mère et est responsable de l'initialisation du matériel et du démarrage du système d'exploitation.
Similaire au BIOS, l'UEFI commence par l'initialisation du matériel et les vérifications du système. Mais l'UEFI supporte des normes matérielles plus modernes et permet des temps de démarrage plus rapides par rapport au BIOS traditionnel.
L'UEFI inclut un gestionnaire de démarrage, qui est plus sophistiqué que les chargeurs de démarrage utilisés dans les systèmes BIOS. Il comprend différents systèmes de fichiers, permettant au système de démarrer à partir de lecteurs formatés avec des systèmes de fichiers plus récents comme le GPT. Il utilise des partitions de démarrage EFI pour stocker les chargeurs de démarrage et les informations connexes.
L'UEFI a introduit le Secure Boot, une fonctionnalité de sécurité qui vérifie les signatures numériques des chargeurs de démarrage et des noyaux du système d'exploitation pendant le processus de démarrage. Cela aide à prévenir le chargement de code non autorisé ou malveillant pendant le temps de démarrage.
Différences entre BIOS et UEFI
Le BIOS utilise la méthode Master Boot Record (MBR), tandis que l'UEFI utilise la méthode GUID Partition Table (GPT).
L'UEFI est plus flexible et supporte des capacités de stockage plus grandes, du matériel moderne et des temps de démarrage plus rapides par rapport au BIOS.
L'UEFI introduit le Secure Boot, améliorant la sécurité du système en vérifiant l'authenticité des composants du chargeur de démarrage et du système d'exploitation.
MBR (Master Boot Record)
Le Master Boot Record (MBR) joue un rôle vital dans la structure de stockage d'un disque. Il est étroitement lié aux systèmes basés sur le BIOS et sert de catalyseur pour le processus de démarrage initial.
Structure du MBR
Le MBR est situé dans le premier secteur d'un dispositif de stockage (généralement les premiers 512 octets d'un disque dur ou SSD). Il se trouve à un emplacement fixe, l'adresse LBA (Logical Block Address) 0.
Le Master Boot Record (MBR) a une taille de 512 octets. Il se compose de trois composants :

Structure du MBR : signature de démarrage, partitions et code de bootstrap
Les informations du chargeur de démarrage principal occupent les 446 premiers octets.
Ensuite, les informations de la table de partition remplissent les 64 octets suivants.
Enfin, la vérification de validation du MBR, également connue sous le nom de nombre magique, réside dans les 2 derniers octets.
Une table de partition est une petite base de données qui contient des informations sur les partitions du disque. Cette table peut stocker des informations pour jusqu'à quatre partitions principales ou trois partitions principales et une partition étendue.
Chaque entrée dans la table de partition se compose de :
Adresses de début et de fin de chaque partition.
Type de partition (tel que FAT, NTFS, système de fichiers Linux, etc.).
Indicateur de démarrage indiquant quelle partition est la partition active/démarrable.
Fonction du MBR
La fonction principale du code de démarrage du MBR est de localiser et de charger le chargeur de démarrage de la partition active/démarrable. Il lit la table de partition pour identifier quelle partition contient l'indicateur de démarrage et exécute le code du chargeur de démarrage à partir de cette partition.
Le chargeur de démarrage (par exemple, GRUB) prend ensuite le relais et présente un menu de démarrage si configuré, permettant à l'utilisateur de choisir un système d'exploitation à charger. Il charge ensuite le noyau du système d'exploitation sélectionné et initie son processus de démarrage.
Limites du MBR
Le MBR a des limites en ne supportant que quatre partitions principales ou trois partitions principales et une partition étendue, qui peut à son tour contenir plusieurs partitions logiques. Cela restreint le nombre de partitions utilisables sur un disque.
Le MBR utilise une adressage 32 bits, limitant la taille des disques à 2 téraoctets (To). Les disques plus grands ne peuvent pas être pleinement utilisés sous MBR en raison de cette limitation.
Il manque également de fonctionnalités de sécurité intégrées, le rendant vulnérable aux virus du secteur de démarrage ou au code malveillant écrasant le chargeur de démarrage.
GPT (GUID Partition Table)
La table de partition GUID (GPT) est un schéma de partitionnement utilisé sur les dispositifs de stockage modernes et est étroitement associée aux systèmes basés sur l'UEFI. Elle a remplacé l'ancien schéma de partitionnement Master Boot Record (MBR) en raison de ses nombreux avantages et capacités, en particulier en conjonction avec le micrologiciel UEFI.
Structure du GPT
Le GPT est un schéma de partitionnement qui définit la disposition des partitions sur un dispositif de stockage. Contrairement au MBR, qui a des limitations concernant la taille du disque et le nombre de partitions, le GPT offre plus de flexibilité et d'évolutivité.
Chaque partition dans un disque GPT est identifiée par un GUID (Identifiant Unique Global) unique. Cela permet jusqu'à 128 partitions par disque (bien que des limitations pratiques puissent s'appliquer en fonction du système d'exploitation et du micrologiciel du système).
Les disques GPT contiennent un MBR protecteur pour maintenir la compatibilité avec les anciens systèmes qui peuvent ne pas reconnaître les partitions GPT. Ce MBR protecteur indique aux anciens systèmes que le disque est en cours d'utilisation et les empêche d'écraser ou de modifier les partitions GPT.
Le GPT stocke les entrées de partition dans une table située au début et à la fin du disque. Cette redondance améliore l'intégrité des données et fournit des informations de sauvegarde sur la disposition des partitions.

Schéma de la table de partition GUID
Fonction du GPT
L'UEFI nécessite une partition spécifique connue sous le nom de partition système UEFI (ESP), qui est un composant principal du schéma GPT. L'ESP contient les chargeurs de démarrage, les exécutables du micrologiciel et d'autres fichiers nécessaires pour le processus de démarrage.
Le micrologiciel UEFI utilise les informations stockées dans le GPT pour localiser le chargeur de démarrage UEFI. Le chargeur de démarrage est stocké dans l'ESP et est spécifié dans les données de configuration de démarrage du micrologiciel.
Le micrologiciel UEFI comprend le GPT et peut lire les informations de partition directement à partir de l'en-tête GPT. Il utilise ces informations pour identifier la partition démarrable et charger le chargeur de démarrage UEFI à partir de l'ESP.
Le GPT et l'UEFI travaillent ensemble pour supporter la fonctionnalité Secure Boot. Secure Boot utilise les informations du GPT pour vérifier les signatures numériques des chargeurs de démarrage et des composants du système d'exploitation, assurant un processus de démarrage sécurisé.
Le GPT supporte des tailles de disque supérieures à 2 To, répondant aux limitations du schéma de partitionnement MBR. Il gère efficacement les partitions sur des disques plus grands et offre une évolutivité pour les futurs besoins de stockage.
GRUB (Grand Unified Boot Loader)
GRUB signifie Grand Unified Boot Loader. C'est un chargeur de démarrage largement utilisé dans le monde Linux, responsable de la gestion du processus de démarrage d'un ordinateur.
Un chargeur de démarrage est un programme qui charge le système d'exploitation dans la mémoire de l'ordinateur pendant le processus de démarrage. GRUB est spécifiquement conçu pour les systèmes d'exploitation de type Unix, en particulier Linux.
La fonction principale de GRUB inclut la localisation du noyau du système d'exploitation choisi et son chargement en mémoire. Il gère également le disque RAM initial (initrd/initramfs) qui assiste le noyau pendant le processus de démarrage.
GRUB utilise un fichier de configuration (grub.cfg ou menu.lst) où les utilisateurs peuvent définir les options de démarrage, spécifier les paramètres du noyau et personnaliser l'apparence du menu de démarrage. Cela permet aux utilisateurs de modifier les paramètres de démarrage ou d'ajouter des paramètres spécifiques pour que le système d'exploitation les utilise pendant le démarrage.
Pendant l'installation des distributions Linux, GRUB est généralement installé dans le Master Boot Record (MBR) du disque dur ou dans la partition système EFI (pour les systèmes utilisant l'UEFI). Cela permet à GRUB de prendre le contrôle pendant le démarrage et de présenter son interface de menu.
Initrd (Initial RAM Disk) Image
Un disque RAM initial (initrd), également connu sous le nom de système de fichiers RAM initial (initramfs), est un système de fichiers temporaire chargé en mémoire pendant le processus de démarrage d'un ordinateur avant que le système d'exploitation principal ne prenne le relais. C'est un composant essentiel dans le démarrage moderne de Linux.
Le but principal de l'initrd est de fournir un ensemble minimal d'outils, de pilotes et d'utilitaires nécessaires pour monter le système de fichiers racine. Il contient les pilotes essentiels pour les contrôleurs de stockage, les systèmes de fichiers et d'autres composants matériels dont le noyau pourrait avoir besoin pour accéder au système de fichiers racine réel.
Pendant le démarrage, le chargeur de démarrage (tel que GRUB) charge le noyau Linux en mémoire. Le noyau décompresse ensuite lui-même et, s'il est configuré pour utiliser un initrd, charge l'image initrd en tant que système de fichiers racine temporaire dans un emplacement mémoire prédéterminé.
Une fois l'initrd en place, le noyau exécute le code contenu dans l'initrd. Ce code effectue diverses tâches comme le chargement des pilotes essentiels (par exemple, pour les contrôleurs de disque, les systèmes de fichiers, etc.), l'initialisation du matériel et l'exécution des vérifications nécessaires pour préparer le système à la transition vers le système de fichiers racine réel.
Après que le noyau ait initialisé et détecté le matériel, le travail de l'initrd est largement terminé. Il transmet le contrôle au noyau principal, qui démonte ensuite l'initrd et monte le système de fichiers racine réel (spécifié par le chargeur de démarrage ou les paramètres du noyau).
Traditionnellement, initrd était utilisé, mais les systèmes modernes utilisent souvent initramfs (un successeur plus flexible). Initramfs est une archive cpio qui est décompressée dans un disque RAM au moment du démarrage. Il est plus polyvalent, permettant une approche plus modulaire pour inclure des fichiers et des pilotes essentiels.
Noyau
Le noyau est le cœur du système d'exploitation, gérant les ressources matérielles, fournissant des abstractions et contrôlant les interactions entre le matériel et le logiciel.
Après que l'image initrd ait terminé ses tâches, le noyau prend le contrôle. Il initialise le matériel système, monte le système de fichiers racine et commence le processus d'initialisation de l'espace utilisateur.
Le noyau utilise les informations fournies par l'initrd pour monter le système de fichiers racine réel (par exemple, ext4, XFS) spécifié dans les paramètres de démarrage.
RootFS
Le système de fichiers racine (rootfs) est un composant critique dans le processus de démarrage d'un système d'exploitation. Il s'agit de la hiérarchie de répertoires de niveau supérieur du système de fichiers et contient les fichiers et répertoires système essentiels.
Dans le contexte du processus de démarrage, le système de fichiers racine est le premier système de fichiers que le noyau du système d'exploitation monte pendant la séquence de démarrage.
Le système de fichiers racine est le point de départ de toute la hiérarchie du système de fichiers. Il est monté par le noyau pendant le processus de démarrage, et tous les autres systèmes de fichiers sont montés en tant que sous-répertoires du système de fichiers racine.
Le chargeur de démarrage, tel que GRUB dans de nombreux systèmes Linux, est configuré pour spécifier l'emplacement du système de fichiers racine. Cette information est cruciale pour que le noyau sache où trouver les fichiers et répertoires principaux nécessaires pour démarrer le système d'exploitation.
Le système de fichiers racine peut être de différents types, tels que ext4, XFS ou d'autres systèmes de fichiers supportés. Le choix du type de système de fichiers dépend des préférences et des exigences de l'administrateur système.
Dans certains cas, en particulier dans des scénarios de stockage complexes (par exemple, configurations RAID ou LVM), un disque RAM initial (initramfs) est utilisé. L'initramfs fournit les modules et outils nécessaires pour que le noyau initialise et monte le système de fichiers racine. Ensuite, le noyau bascule vers le système de fichiers racine réel.
Le système de fichiers racine contient des répertoires critiques tels que /bin, /etc, /sbin et /lib. Ces répertoires abritent des binaires essentiels, des fichiers de configuration, des bibliothèques système et des scripts requis pour le fonctionnement du système.
Le système de fichiers racine est généralement un système de fichiers persistant stocké sur un dispositif de stockage comme un disque dur ou un SSD. Il conserve les données et les configurations entre les redémarrages, assurant un environnement cohérent pour le système d'exploitation.
La stabilité et la fonctionnalité du système d'exploitation dépendent de l'initialisation et du montage réussis du système de fichiers racine. Il fournit la base pour l'ensemble de l'environnement du système d'exploitation.
Processus Init
Le processus init, abréviation de initialisation, est une partie fondamentale du processus de démarrage dans les systèmes d'exploitation de type Unix, y compris de nombreuses distributions Linux. Sa responsabilité principale est d'initialiser le système et de l'amener à un état fonctionnel en démarrant divers services système et processus de l'espace utilisateur.
Après que le noyau ait été chargé et initialisé, il transmet le contrôle au processus init. Les paramètres de la ligne de commande du noyau ou les fichiers de configuration spécifient le processus auquel le contrôle doit être transféré.
Les systèmes Unix traditionnels utilisaient le processus init avec différents niveaux d'exécution, où chaque niveau d'exécution représentait un état différent du système. Mais les systèmes Linux modernes, y compris ceux basés sur Red Hat Enterprise Linux (RHEL), ont fait la transition vers l'utilisation de systemd, qui sert de remplacement à init et introduit une approche plus flexible et efficace pour gérer l'initialisation du système.
Sur les systèmes Linux modernes comme RHEL, systemd est devenu le système init par défaut. Il initialise le système en parallèle, améliorant les temps de démarrage et la réactivité du système. systemd lit sa configuration à partir de fichiers d'unité situés dans des répertoires tels que /etc/systemd/system et /usr/lib/systemd/system.
Le processus init, qu'il s'agisse de l'init traditionnel ou de systemd, est responsable du démarrage des services système et des démons. Ces services fournissent des fonctionnalités essentielles au système d'exploitation, telles que la mise en réseau, la journalisation et les services liés au matériel.
Démons du système
Les démons du système, également connus sous le nom de processus en arrière-plan ou services, jouent un rôle vital dans le processus de démarrage et le fonctionnement continu des systèmes d'exploitation de type Unix, y compris ceux basés sur Red Hat Enterprise Linux (RHEL). Ces démons sont des programmes spécialisés qui s'exécutent en arrière-plan, fournissant des services essentiels au système et aux utilisateurs.
Un démon est un processus en arrière-plan qui s'exécute indépendamment de l'interaction de l'utilisateur. Les démons effectuent des tâches spécifiques, telles que la gestion du matériel, la gestion des événements système ou la fourniture de services réseau.
Pendant le processus de démarrage, le processus init ou systemd est responsable du démarrage des démons du système. Ces démons sont configurés pour se lancer automatiquement à des niveaux d'exécution spécifiques (dans le cas de l'init traditionnel) ou comme défini dans les fichiers d'unité systemd.
Les démons sont généralement initialisés par le processus init ou systemd dans le cadre du démarrage du système. Le processus d'initialisation peut impliquer la lecture de fichiers de configuration, la mise en place de canaux de communication et l'allocation de ressources.
Exemples de démons du système :
Services réseau : Démons comme
sshdpour l'accès shell sécurisé,httpdpour les services web, etdhcpdpour le protocole de configuration dynamique des hôtes.Services de journalisation :
rsyslogdousyslog-ngpour la gestion des journaux système.Synchronisation de l'heure :
ntpdpour la synchronisation du protocole de temps réseau (NTP).Services d'impression :
cupsdpour le système d'impression Unix commun.Gestion du matériel :
udevpour la gestion des dispositifs etacpidpour les événements de l'interface de configuration et de gestion de l'alimentation avancée.
Le processus init ou systemd gère les dépendances entre les démons. Il garantit que les démons dépendant de ressources ou de services spécifiques sont démarrés dans le bon ordre pour satisfaire ces dépendances.
systemd, en particulier, introduit l'initialisation parallèle, ce qui signifie que plusieurs démons et services peuvent être démarrés simultanément, améliorant les temps de démarrage en tirant parti des systèmes multicœurs modernes.
Une fois les démons du système initialisés, le système est prêt à gérer les interactions de l'utilisateur. Par exemple, les services réseau sont disponibles, et les utilisateurs peuvent se connecter ou accéder à diverses ressources système.
Conclusion
Merci d'avoir exploré le processus de démarrage dans RHEL avec moi aujourd'hui. Vous pouvez approfondir le domaine de l'expertise Linux et rester à l'écoute pour plus de contenu perspicace dans mes futurs tutoriels.
Vous pouvez me suivre sur :