Comme vous l'avez dit, le but d'initramfs est de monter le "vrai" système de fichiers racine (il peut aussi faire autre chose, mais c'est la tâche courante).
Sans initramfs, le noyau montera normalement une partition en lecture seule puis passera le contrôle à /sbin/init
. Un initramfs reprend simplement cette tâche à partir du noyau, généralement lorsque le système de fichiers racine n'est pas une partition normale (mdraid, lvm, crypté, etc.).
Maintenant, en dehors de l'arrière-plan sur initramfs, votre /etc/fstab
réside sur votre système de fichiers racine. En tant que tel, lorsque initramfs est lancé, ce système de fichiers racine n'est pas là, et il ne peut donc pas accéder au fstab (problème de poulet et d'oeuf).
Au lieu de cela, nous devons passer un paramètre dans les arguments de démarrage du noyau pour que les initramfs l'utilisent. Normalement, c'est quelque chose comme ça root=/dev/sdX
. Cependant, il pourrait également faire quelque chose pour déterminer automatiquement où se trouve votre périphérique racine, et donc il n'y a aucun paramètre du tout. Comme il ne s'agit que d'un logiciel (généralement un script), il peut vraiment faire tout ce qu'il veut pour monter le périphérique racine.
Maintenant, comme indiqué précédemment, le noyau montera la vraie racine en lecture seule. Les initramfs devraient faire exactement cela. Une fois les initramfs terminés, le système démarre le démarrage exactement comme s'il n'y avait aucun initramfs et /sbin/init
démarre. Cette init démarre alors tous vos scripts de démarrage normaux, et c'est le travail de l'un de ces scripts de lire /etc/fstab
, de basculer root en lecture-écriture et de monter tous vos autres systèmes de fichiers.