Wie Sie bereits sagten, besteht der Zweck von initramfs darin, das "echte" Root-Dateisystem bereitzustellen (es kann auch andere Aufgaben übernehmen, dies ist jedoch die häufigste Aufgabe).
Ohne ein initramfs wird der Kernel normalerweise eine Partition schreibgeschützt mounten und dann die Kontrolle an übergeben /sbin/init
. Ein initramfs übernimmt diese Aufgabe nur vom Kernel, normalerweise, wenn das Root-Dateisystem keine normale Partition ist (mdraid, lvm, encrypted, etc).
Abgesehen vom Hintergrund in initramfs befinden Sie sich jetzt /etc/fstab
in Ihrem Root-Dateisystem. Wenn initramfs gestartet wird, ist das Root-Dateisystem daher nicht vorhanden, sodass es nicht an die fstab gelangen kann (Henne-Ei-Problem).
Stattdessen müssen wir einen Parameter an die Kernel-Boot-Argumente übergeben, damit das initramfs verwendet werden kann. Normalerweise ist das so etwas wie root=/dev/sdX
. Es kann jedoch auch hilfreich sein, um automatisch herauszufinden, wo sich Ihr Root-Gerät befindet. Es gibt also überhaupt keinen Parameter. Da es sich nur um Software (im Allgemeinen ein Skript) handelt, kann es wirklich alles tun, was es zum Mounten des Root-Geräts benötigt.
Wie bereits erwähnt, stellt der Kernel nun die reale Wurzel schreibgeschützt bereit. Die initramfs sollten genau das tun. Sobald die initramfs abgeschlossen sind, fährt das System mit dem Booten genau so fort, als gäbe es überhaupt keine initramfs und /sbin/init
startet. Dieser Init startet dann alle Ihre normalen Boot-Skripte, und es ist die Aufgabe eines dieser Skripte, zu lesen /etc/fstab
, root auf Lese- / Schreibzugriff zu schalten und alle Ihre anderen Dateisysteme bereitzustellen.