C'est la pièce du démarrage que l'on ne voit jamais, sauf le jour où elle casse — et ce jour-là, le message est laconique : Kernel panic - not syncing: VFS: Unable to mount root fs. L'initramfs est pourtant l'un des mécanismes les plus élégants de Linux.
Le problème qu'il résout
Au moment où le noyau prend la main, il ne sait pas grand-chose de la machine. Votre système est peut-être sur un disque NVMe, derrière un RAID logiciel, dans un volume LVM, chiffré par LUKS — et il faudrait, pour le monter, les pilotes et les outils correspondants.
Deux solutions théoriques : tout compiler en dur dans le noyau — mais il faudrait alors un noyau par configuration matérielle, ce qui interdit toute distribution générique ; ou charger à la demande ce dont cette machine a besoin. C'est la seconde qu'a retenue Linux, et l'initramfs en est le véhicule.

Un mini-système en RAM monte le vrai disque, puis s'efface au profit du système définitif.
Ce que c'est, techniquement
Une archive cpio compressée. Le format cpio — copy in, copy out — est un format d'archive Unix volontairement rudimentaire : structure linéaire, aucune dépendance à un système de fichiers, analyse triviale. C'est exactement ce dont le noyau a besoin pour le lire sans rien savoir faire d'autre.
La compression (gzip, xz, lz4, zstd — le noyau détecte le format) réduit le temps de lecture et l'empreinte mémoire. Et point capital : l'initramfs n'est jamais monté depuis le disque. GRUB l'a chargé en mémoire juste après le noyau ; il est déjà là quand le noyau commence à s'exécuter.
Ce qu'il contient
/ ├── init ← le point d'entrée, exécuté par le noyau ├── bin/ sbin/ ← outils minimaux, presque toujours BusyBox ├── lib/ lib64/ ← modules noyau nécessaires ├── dev/ proc/ sys/ └── etc/
Le fichier /init est le cœur : script shell ou binaire, il est lancé directement par le noyau et devient PID 1 provisoire. Ses responsabilités :
- monter les pseudo-systèmes de fichiers —
/proc,/sys,/dev; - charger les modules nécessaires : pilotes de disque (
ahci,nvme,virtio), systèmes de fichiers (ext4,xfs,btrfs), chiffrement (dm-crypt), RAID et LVM ; - localiser puis monter le vrai système de fichiers racine, désigné par le paramètre
root=de la ligne de commande ; - préparer la transition.
C'est aussi à ce moment, et pas plus tard, qu'est demandée la phrase de passe d'un disque chiffré : le système réel n'existe pas encore.
Le moment clé : switch_root
switch_root /new_root /sbin/init
Trois effets simultanés :
- l'initramfs est abandonné — il n'est pas démonté, il est remplacé ;
- la mémoire qu'il occupait est libérée — d'où l'intérêt de le garder petit ;
/sbin/initdevient PID 1 définitif — systemd dans la plupart des distributions.
C'est l'instant précis de la naissance du système utilisateur. Tout ce qui précède appartient au démarrage ; tout ce qui suit est le système lui-même.
Ce que ça change quand on débogue
Comprendre ce découpage change la façon de lire une panne de démarrage :
- l'invite de secours de l'initramfs (
(initramfs)) signifie que le noyau a bien démarré et que l'initramfs tourne — mais qu'il n'a pas trouvé le disque racine. La cause est presque toujours un module manquant ou unroot=erroné, pas un noyau cassé ; - un noyau qui panique avant cette invite est un problème de chargement, pas de disque ;
- après un changement de matériel de stockage ou de chiffrement, régénérer l'initramfs est le premier réflexe — c'est lui qui embarque la liste des modules ;
- et un initramfs devenu obèse — parce qu'il embarque « tous les pilotes au cas où » — allonge chaque démarrage et consomme de la RAM jusqu'au
switch_root.
Le cas particulier des systèmes minimaux
Un système sans matériel exotique peut parfaitement se passer d'initramfs : il suffit de compiler en dur les pilotes du disque et du système de fichiers. C'est ce que font les systèmes embarqués — et c'est aussi ce que l'on expérimente dans la série suivante, où l'initramfs est écrit à la main, en une trentaine de lignes de shell, pour bien voir ce qu'il fait.
La page de référence est sur le wiki
Cet article ne remplace pas la documentation : il en reprend le fil et en explique les raisons. Le détail complet — toutes les commandes, tous les scripts, les options de configuration une par une — est publié sur mon wiki :
La série
Deux articles pour comprendre ce qui se passe au démarrage, trois pour fabriquer un système Linux complet à la main :
- Du bouton Power au noyau : la chaîne de démarrage x86
- initramfs et switch_root : le sas de démarrage — vous y êtes
- Fabriquer son Linux (1) : noyau et BusyBox
- Fabriquer son Linux (2) : disque, rootfs et PID 1
- Fabriquer son Linux (3) : initramfs, GRUB et premier boot