À chaque fois que vous allumez votre PC Linux, il passe par une série d’étapes avant d’afficher enfin un écran de connexion qui demande votre nom d’utilisateur ou votre mot de passe. Il y a 4 étapes distinctes que chaque distribution Linux parcourt dans un processus de démarrage typique.

Dans ce guide, nous mettrons en évidence les différentes étapes prises par le système d’exploitation Linux depuis sa mise sous tension jusqu’à votre connexion. Veuillez noter que ce guide ne prend en compte que le chargeur d’amorçage GRUB2 et l’init systemd car ils sont actuellement utilisés par une grande majorité de distributions Linux modernes.
Le processus de démarrage se déroule en quatre étapes que nous discuterons en détail:
- Vérification de l’intégrité du BIOS (POST)
- Chargement du chargeur d’amorçage (GRUB2)
- Initialisation du noyau
- Démarrage de systemd, le parent de tous les processus
1. Vérification de l’intégrité du BIOS (POST)
Le processus de démarrage est généralement initialisé lorsque l’utilisateur appuie sur le bouton d’alimentation – si le PC était déjà éteint – ou redémarre le système en utilisant soit l’interface graphique, soit en ligne de commande.
Lorsque le système Linux démarre, le BIOS (Basic Input Output System) entre en action et effectue un Test d’Autotest à la Mise Sous Tension (POST). Il s’agit d’une vérification d’intégrité qui effectue une pléthore de contrôles de diagnostic.
Le POST vérifie le bon fonctionnement du matériel tel que le HDD ou SSD, le clavier, la RAM, les ports USB, et tout autre composant 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 dispositifs comme un disque dur ou SSD corrompu, un message d’erreur s’affiche à l’écran vous invitant à intervenir.
Dans certains cas, un bip sonore retentira notamment en cas d’absence d’un module de RAM. Cependant, 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 d’amorçage (GRUB2)
Une fois que le POST est terminé et que tout va bien, le BIOS vérifie le MBR (Master Boot Record) pour les informations de démarrage et de partitionnement du disque.
Le MBR est un code de 512 octets situé sur le premier secteur du disque dur qui est 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 clé USB live ou une DVD d’installation de Linux.
Il existe 3 principaux types de chargeurs d’amorçage dans Linux : LILO, GRUB, et GRUB2. Le chargeur d’amorçage GRUB2 est le dernier et principal chargeur d’amorçage dans les distributions Linux modernes et cela explique notre décision de ne pas inclure les deux autres qui sont devenus obsolètes avec le temps.
GRUB2 signifie GRand Unified Bootloader version 2. Une fois que le BIOS localise le chargeur d’amorçage 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 pouvez voir différentes versions de 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 de double démarrage où vous avez plusieurs installations d’OS, le menu grub vous permet de sélectionner quel OS démarrer. Le fichier de configuration de grub2 est le fichier /boot/grub2/grub2.cfg. L’objectif principal de GRUB est de charger le noyau Linux dans la mémoire principale.
3. Initialisation du noyau
Le noyau est le cœur de tout système Linux. Il assure l’interface entre le matériel du PC et les processus sous-jacents. Le noyau contrôle tous les processus de votre système Linux. Une fois que le noyau Linux sélectionné est chargé par le chargeur d’amorçage, il doit s’extraire de sa version compressée avant d’entreprendre toute tâche. Après l’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’identifiant de processus ou PID 1. C’est le processus d’initialisation qui génère divers démons et monte toutes les partitions spécifiées dans le fichier /etc/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 du disque RAM initial.
4.Démarrage de Systemd
Le noyau charge enfin Systemd, qui remplace l’ancienne initialisation 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 une station de travail de bureau (avec une interface graphique), la valeur de cible par défaut est 5, ce qui équivaut au niveau d’exécution 5 pour l’ancienne initialisation SystemV.
- Pour un serveur, la cible par défaut est multi-user.target, qui correspond au niveau d’exécution 3 dans l’initialisation SysV.
Voici un aperçu des cibles systemd:
- poweroff.target (niveau d’exécution 0): Éteint ou arrête le système.
- rescue.target (niveau d’exécution 1): lance une session de shell de secours.
- multi-user.target (niveaux d’exécution 2,3,4): Configure le système en un système multi-utilisateur non graphique (console).
- graphical.target (niveau d’exécution 5): Configure le système pour utiliser une interface graphique multi-utilisateurs avec des services réseau.
- reboot.target (niveau d’exécution 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 dans 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 passer à ces deux cibles.
Le processus de démarrage se termine une fois que systemd charge tous les démons et définit la cible ou la valeur du niveau d’exécution. C’est à ce moment que vous êtes invité à saisir votre nom d’utilisateur et votre mot de passe, après quoi vous accédez à votre système Linux.