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.
mount -o remount,rw /
. Nie zmieni urządzenia, które jest zamontowane, ale zmieni opcje montażu. Ze strony podręcznika:After this call mount reads fstab (or mtab) and merges these options with options from command line
lsinitramfs /boot/initrd* | fgrep fstab
i niespodzianka, initramfs do zawiera plik fstab, przynajmniej dla mnie.Może, ale nie musi. Ponieważ Initramfs można konstruować na różne sposoby (jądro po prostu ładuje je i uruchamia,
/init
co robi cokolwiek). Jednak użycie parametru jest bardziej powszechne, ponieważ pozwala na większą elastyczność - tzn. Jeśli coś się zmieni, możesz po prostu edytować pozycję rozruchową i wszystko działa. Z wbudowanym rootem nie jest to konieczne.Wpis fstab może być nadal wymagany w obu kierunkach, ponieważ określa także inne rzeczy, takie jak opcje montowania (niektóre z nich można zmienić w drodze) i
fsck
kolejność. Nawet jeśli byłby całkowicie zbędny (a jeśli Initramfs sobie z tym poradzi, może działać bez niego), nadal trzymam tam wpis tylko ze względu na kompletność.źródło
Możesz uznać / etc / fstab za montowanie statyczne, to tylko sposób na wykonanie takiego zadania, ale nie jedyne, w rzeczywistości, uruchom polecenie mount, i widzisz wiele systemów plików, których brakuje w fstab. Serwis taki udev i udisk zarządzają dużą ilością „automatycznego montowania” ignorując plik / etc / fstab ...
Tak więc, jeśli coś jest zamontowane lub nie często, nie ma to nic wspólnego z / etc / fstab.
initramfs to tylko tymczasowe rootfy używane podczas procesu rozruchu do momentu zamontowania „prawdziwych” rootfów, więc dlaczego initramfs powinien być na / etc / fstab?
źródło