Recherche de site Web

Un guide de base sur les différentes étapes du processus de démarrage Linux


Chaque fois que vous allumez votre PC Linux, il passe par une série d'étapes avant d'afficher enfin un écran de connexion vous demandant votre nom d'utilisateur ou votre mot de passe. Il existe 4 étapes distinctes que traverse chaque distribution Linux dans un processus de démarrage typique.

Dans ce guide, nous mettrons en évidence les différentes étapes suivies par le système d'exploitation Linux depuis sa mise sous tension jusqu'au moment où vous vous connectez. Veuillez noter que ce guide ne prend en compte que le chargeur de démarrage GRUB2 et systemd init car ils sont actuellement utilisés par une grande majorité de distributions Linux modernes.

Le processus de démarrage suit les 4 étapes suivantes que nous aborderons plus en détail :

  • Vérification de l'intégrité du BIOS (POST)
  • Chargement du Bootloader (GRUB2)
  • Initialisation du noyau
  • Démarrage de systemd, le parent de tous les processus

1. La vérification de l'intégrité du BIOS (POST)

Le processus de démarrage est généralement initialisé lorsqu'un utilisateur appuie sur le bouton de mise sous tension (si le PC était déjà éteint) ou redémarre le système à l'aide de l'interface graphique ou de la ligne de commande.

Lorsque le système Linux démarre, le BIOS (Basic Input Output System) entre en action et effectue un autotest à la mise sous tension (POST ). Il s'agit d'un contrôle d'intégrité qui effectue une multitude de contrôles de diagnostic.

Le POST sonde le fonctionnement matériel des composants tels que le HDD ou le SSD, le Clavier, la RAM<, les ports USB et tout autre élément matériel. Si un périphérique matériel n'est pas détecté ou s'il y a un dysfonctionnement dans l'un des périphériques, tel qu'un disque dur ou un SSD corrompu, un message d'erreur s'affiche à l'écran vous invitant à intervenir.

Dans certains cas, un bip retentira notamment en cas d'absence d'un module RAM. Toutefois, si le matériel attendu est présent et fonctionne comme prévu, le processus de démarrage passe à l'étape suivante.

2. Le chargeur de démarrage (GRUB2)

Une fois le POST terminé et la voie libre, le BIOS sonde le MBR (Master Boot Record) pour le chargeur de démarrage et les informations sur le partitionnement du disque.

Le MBR est un code de 512 octets situé sur le premier secteur du disque dur, généralement /dev/sda ou /dev/hda en fonction de l'architecture de votre disque dur. Notez cependant que parfois le MBR peut être situé sur une installation Live USB ou DVD de Linux.

Il existe 3 principaux types de chargeurs de démarrage sous Linux : LILO, GRUB et GRUB2. Le chargeur de démarrage GRUB2 est le dernier et principal chargeur de démarrage des distributions Linux modernes et explique notre décision de laisser de côté les deux autres qui sont devenus obsolètes au fil du temps.

GRUB2 signifie GRand Unified Bootloader version 2. Une fois que le BIOS localise le chargeur de démarrage grub2, il l'exécute et le charge dans la mémoire principale (RAM).

Le menu grub2 vous permet de faire plusieurs choses. Il vous permet de sélectionner la version du noyau Linux que vous souhaitez utiliser. Si vous avez mis à niveau votre système plusieurs fois, vous verrez peut-être différentes versions du noyau répertoriées. De plus, il vous donne la possibilité de modifier certains paramètres du noyau en appuyant sur une combinaison de touches du clavier.

De plus, dans une configuration à double démarrage dans laquelle vous disposez de plusieurs installations de système d'exploitation, le menu grub vous permet de sélectionner le système d'exploitation sous lequel démarrer. Le fichier de configuration grub2 est le fichier /boot/grub2/grub2.cfg. L'objectif principal de GRUB est de charger le noyau Linux sur la mémoire principale.

3. Initialisation du noyau

Le noyau est le cœur de tout système Linux. Il interface le matériel du PC avec les processus sous-jacents. Le noyau contrôle tous les processus de votre système Linux. Une fois le noyau Linux sélectionné chargé par le chargeur de démarrage, il doit s'auto-extraire de sa version compressée avant d'entreprendre toute tâche. Lors de l'auto-extraction, le noyau sélectionné monte le système de fichiers racine et initialise le programme /sbin/init communément appelé init.

Init est toujours le premier programme à être exécuté et se voit attribuer l'ID de processus ou le PID de 1. C'est le processus d'initialisation qui génère divers démons et monte toutes les partitions spécifiées dans le /etc/ fichier fstab.

Le noyau monte ensuite le disque RAM initial (initrd) qui est un système de fichiers racine temporaire jusqu'à ce que le véritable système de fichiers racine soit monté. Tous les noyaux se trouvent dans le répertoire /boot avec l'image disque RAM initiale.

4. Démarrage de Systemd

Le noyau charge enfin Systemd, qui remplace l'ancien init SysV. Systemd est la mère de tous les processus Linux et gère entre autres le montage des systèmes de fichiers, le démarrage et l'arrêt des services, pour n'en citer que quelques-uns.

Systemd utilise le fichier /etc/systemd/system/default.target pour déterminer l'état ou la cible dans laquelle le système Linux doit démarrer.

  • Pour un poste de travail de bureau (avec une interface graphique), la valeur cible par défaut est 5, ce qui équivaut au niveau d'exécution 5 pour l'ancienne init SystemV.
  • Pour un serveur, la cible par défaut est multi-user.target qui correspond au niveau d'exécution 3 dans SysV init.

Voici une répartition des cibles systemd :

  • poweroff.target (runlevel 0) : mettre hors tension ou arrêter le système.
  • rescue.target (runlevel 1) : lance une session de shell de secours.
  • multi-user.target (niveau d'exécution 2,3,4) : configure le système sur un système multi-utilisateurs non graphique (console).
  • graphical.target (runlevel 5) : configurez le système pour qu'il utilise une interface graphique multi-utilisateur avec les services réseau.
  • reboot.target (runlevel 6) : redémarre le système.

Pour vérifier la cible actuelle sur votre système, exécutez la commande :

systemctl get-default

Vous pouvez passer d'une cible à une autre en exécutant la commande suivante sur le terminal :

init runlevel-value

Par exemple, init 3 configure le système dans un état non graphique.

La commande init 6 redémarre votre système et init 0 éteint le système. Assurez-vous d'invoquer la commande sudo lorsque vous souhaitez basculer vers ces deux cibles.

Le processus de démarrage se termine une fois que systemd charge tous les démons et définit la valeur cible ou le niveau d'exécution. C'est à ce stade que vous êtes invité à saisir votre nom d'utilisateur et votre mot de passe grâce auxquels vous accédez à votre système Linux.