Jak już wspomniałeś, celem initramfs jest zamontowanie „prawdziwego” głównego systemu plików (może także robić inne rzeczy, ale jest to wspólne zadanie).
Bez initramfs jądro zwykle montuje partycję jako tylko do odczytu, a następnie przekazuje kontrolę nad /sbin/init
. Initramfs po prostu przejmuje to zadanie z jądra, zwykle gdy główny system plików nie jest normalną partycją (mdraid, lvm, szyfrowane itp.).
Teraz, oprócz tła na initramfs, /etc/fstab
rezydujesz w głównym systemie plików. Jako taki, po uruchomieniu initramfs, ten system plików root nie istnieje, więc nie może dostać się do fstab (problem z kurczakiem i jajami).
Zamiast tego musimy przekazać parametr do argumentów rozruchowych jądra, aby użyć initramfs. Zwykle jest to coś takiego root=/dev/sdX
. Jednak może również zrobić coś, aby automatycznie dowiedzieć się, gdzie jest twoje urządzenie root, a więc nie ma żadnego parametru. Ponieważ jest to tylko oprogramowanie (zazwyczaj skrypt), może naprawdę zrobić wszystko, co chce, aby zamontować urządzenie root.
Teraz, jak wspomniano wcześniej, jądro zamontuje prawdziwy root jako tylko do odczytu. Initramfs powinien to zrobić dokładnie. Po zakończeniu initramfs system uruchamia się dokładnie tak, jakby w ogóle nie było initramfs, i /sbin/init
uruchamia się. Ten init następnie uruchamia wszystkie normalne skrypty startowe i zadaniem jednego z tych skryptów jest czytanie /etc/fstab
, przełączanie roota na odczyt i zapis oraz montowanie wszystkich innych systemów plików.