Le démarrage : de l'allumage à systemd
Tu sais réciter les cinq étapes du démarrage, dire ce que fait chacune, modifier GRUB et l'initramfs sans rien casser, et trouver quel maillon a lâché quand un serveur ne démarre plus.
Mis à jour le
Pourquoi on voit ça
Un serveur qui ne démarre plus, c’est une des pannes les plus stressantes : pas de SSH, juste un écran figé. Pour t’en sortir, tu dois savoir à quelle étape il s’est arrêté. Chaque étape a ses fichiers et ses commandes, donc trouver le maillon, c’est déjà savoir où réparer.
C’est aussi la suite logique des leçons précédentes : tu connais le noyau et les dossiers /sys, /etc et /boot. On les voit maintenant travailler ensemble.
La course de relais
Le démarrage est une course de relais à cinq coureurs. Chacun fait sa part, prépare le suivant et lui passe le témoin.
| Étape | Son travail | Elle passe le témoin à |
|---|---|---|
| BIOS/UEFI | vérifie et initialise le matériel, trouve le chargeur d’amorçage | GRUB |
| GRUB | affiche le menu, charge le noyau et l’initramfs en RAM | le noyau |
| Noyau | prend le contrôle du matériel, ouvre l’initramfs | l’initramfs |
| Initramfs | charge les pilotes du disque, monte le vrai / |
systemd |
| systemd | lance tous les services | (le serveur est prêt) |
Si un coureur tombe, la course s’arrête là. Les suivants ne partent jamais.
BIOS ou UEFI
Le BIOS et l’UEFI sont des micrologiciels (firmware) : de petits programmes stockés sur la carte mère. À l’allumage, ils testent le matériel puis cherchent un chargeur d’amorçage à lancer. L’UEFI est le remplaçant moderne du BIOS.
Pour savoir comment la machine a démarré, tu regardes si un dossier existe :
ls /sys/firmware/efi
- Le dossier existe → démarrage en UEFI.
- « Aucun fichier ou dossier de ce type » → démarrage en BIOS.
Pour retenir le chemin, lis-le mot par mot : /sys (le matériel vu par le noyau), firmware (le micrologiciel), efi.
Les deux ne rangent pas le chargeur au même endroit et n’offrent pas la même sécurité :
GRUB, le chargeur d’amorçage
GRUB affiche le menu de démarrage, puis va chercher deux fichiers dans /boot et les charge en RAM : le noyau et l’initramfs. Ensuite il lance le noyau.
Deux gestes au clavier, juste après le BIOS/UEFI :
- maintenir Maj (Shift) fait apparaître le menu, par exemple pour choisir un ancien noyau ;
- la touche
esur une entrée du menu permet de la modifier, pour ce démarrage seulement : rien n’est enregistré.
Deux fichiers à ne pas confondre
| Fichier | Rôle | Tu le modifies ? |
|---|---|---|
/etc/default/grub |
tes réglages | oui |
/boot/grub/grub.cfg |
le fichier que GRUB lit au démarrage | jamais à la main |
grub.cfg est généré automatiquement. Si tu le modifies à la main, ton changement sera écrasé à la prochaine régénération (par exemple lors d’une mise à jour du noyau), et une faute de frappe peut empêcher le serveur de démarrer.
Changer un réglage
Exemple : le délai d’affichage du menu, en secondes. Dans /etc/default/grub :
GRUB_TIMEOUT=5
Tu changes la valeur, puis tu régénères :
update-grub
update-grub relit /etc/default/grub et réécrit proprement /boot/grub/grub.cfg. Si tu l’oublies, rien ne change au prochain démarrage.
Le noyau
Le fichier du noyau est dans /boot et s’appelle vmlinuz-<version> (le z indique qu’il est compressé). La version en cours se lit avec :
uname -r
Une fois lancé, le noyau s’installe en mémoire, détecte le processeur, la RAM et le matériel de base. Il lui reste à monter la racine /, le vrai système de fichiers, celui qui est sur le disque. Et là, il y a un problème.
L’initramfs, la petite valise
Pour lire le disque, le noyau a besoin de pilotes : pour le contrôleur de disque, pour le RAID, pour LVM, pour le chiffrement. Or ces pilotes sont rangés… sur le disque. Il faudrait lire le disque pour apprendre à lire le disque.
La solution, c’est l’initramfs : un petit système de fichiers temporaire, chargé en RAM par GRUB en même temps que le noyau. C’est la petite valise qu’on garde avec soi en voyage : elle contient juste le nécessaire pour atteindre la maison, où se trouve tout le reste.
Son travail, dans l’ordre :
- charger les pilotes nécessaires ;
- trouver et monter le vrai
/; - basculer dessus avec
switch_root: la racine temporaire en RAM est abandonnée, le vrai/prend sa place ; - lancer systemd.
Ajouter un pilote à l’initramfs
Cas typique : tu migres une VM vers un autre hyperviseur. Le contrôleur de disque change, l’initramfs n’a pas le bon pilote, et la machine ne démarre plus. Il faut ajouter le module.
Tu écris son nom, sans l’extension .ko, dans /etc/initramfs-tools/modules :
virtio_scsi
Puis tu régénères l’initramfs :
update-initramfs -u
-u comme update : la commande met à jour l’initramfs existant.
La même logique partout
| Ce que tu veux changer | Fichier à modifier (dans /etc) |
Commande qui régénère | Résultat (dans /boot) |
|---|---|---|---|
| GRUB | /etc/default/grub |
update-grub |
/boot/grub/grub.cfg |
| Initramfs | /etc/initramfs-tools/modules |
update-initramfs -u |
/boot/initrd.img-… |
Tu modifies dans /etc, une commande update-… fabrique le fichier dans /boot. Tu ne touches jamais directement à /boot.
systemd, le PID 1
Dernier relais : après switch_root, l’initramfs lance /sbin/init, qui est un lien vers systemd. C’est le tout premier processus, il porte donc le PID 1. Tous les autres processus descendent de lui.
Son rôle : démarrer les services du serveur (réseau, SSH, serveur web…) et les surveiller pendant toute la vie de la machine. Comment on le pilote, c’est le sujet de la leçon suivante.
Trouver le maillon en panne
La méthode : repère la dernière étape qui a réussi. Le coupable est le coureur suivant.
| Ce que tu vois | Maillon en cause |
|---|---|
| Rien ne se lance, message du type « no bootable device » | BIOS/UEFI : il ne trouve pas de chargeur |
Pas de menu, une invite grub rescue> |
GRUB |
Le noyau démarre, puis une invite (initramfs) |
l’initramfs : il ne trouve pas le vrai / |
| Le système démarre, mais un service ne se lance pas | systemd |
À retenir
- La chaîne : BIOS/UEFI → GRUB → noyau → initramfs → systemd. Une course de relais.
/sys/firmware/efiexiste → UEFI. Sinon → BIOS.- GRUB charge le noyau et l’initramfs en RAM. On modifie
/etc/default/grub, jamais/boot/grub/grub.cfg, puisupdate-grub. - L’initramfs est la petite valise en RAM : les pilotes pour atteindre le vrai disque. Il finit par
switch_rootvers le vrai/. - Ajouter un module :
/etc/initramfs-tools/modules, puisupdate-initramfs -u. - systemd est le PID 1 : le premier processus, celui qui lance tous les services.
Entraînement
12 questions, dont 3 à compléter. Tu réponds, on passe à la suivante. La note arrive à la fin.
Ta note
Cartes · 14
Réviser les cartes ici
Pourquoi