Processus de boot

De ArchwikiFR

Cette page décrit le démarrage d'Archlinux, depuis le chargeur de démarrage (bootloader) jusqu'au login.

Chargeur de démarrage

Après avoir mené une détection du matériel, le BIOS charge les 512 premiers octets du MBR de votre disque dur. Les 446 premiers octets contiennent en général un programme qui fait partie du chargeur d'amorçage.

Le chargeur de démarrage va éventuellement afficher un menu. Si l'entrée Arch Linux est sélectionnée, il va copier en mémoire l'image du noyau (/boot/vmlinuz-linux), ainsi que l'initramfs (/boot/initramfs-linux.img). Le noyau est ensuite exécuté. Le noyau Arch officiel utilise un initramfs (INITial RAM FileSystem). Il s'agit d'une image de système de fichiers compressée. Le noyau la décompresse et la monte comme système de fichiers racine.

En effet, le noyau Arch officiel ne contient pas tous les pilotes, pour éviter d'être exagérément gros. L'initramfs contient un shell et une série de scripts qui permettent de charger les modules nécessaires pour reconnaître le périphérique contenant la partition racine, puis son système de fichiers. Il y a en général les pilotes SATA ou IDE, ext4… Cette image (initramfs-linux.img) est générée sous Arch à chaque mise à jour du noyau par mkinitcpio.

Si vous compilez votre propre noyau, vous pouvez vous passer d'initramfs et compiler ces divers modules en dur (c'est-à-dire dans l'image du noyau, vmlinuz-linux).

Ensuite, la partition racine définie par le paramètre root= de la cmdline est montée comme racine, généralement en lecture seule (si le paramètre ro a été passé sur la cmdline par le chargeur de démarrage).

Le programme /sbin/init est alors lancé, sauf si un autre est spécifié dans la cmdline à l'aide du paramètre init=.

Init

Archlinux utilise systemd comme système d'init.

Login

La dernière action (par défaut) de systemd est de lancer le programme agetty (par le biais de /etc/systemd/system/getty.target.wants/getty@tty1.service qui permet d'attacher une console virtuelle. agetty lance alors login, qui propose une invite de login et mot de passe, pour ouvrir un shell pour l'utilisateur de votre choix.