Różnica między initrd i initramfs?

Z tego co wiem,initrd działa jako urządzenie blokowe, co wymaga sterownika systemu plików (takiego jakext2). Jądro musi mieć co najmniej jeden wbudowany moduł do wykrywania systemu plikówinitrd. W tym artykule,Przedstawiamy initramfs, nowy model początkowych dysków RAM, napisano, że:

Ale ramdyski faktycznie tracą jeszcze więcej pamięci z powodu buforowania. Linux jest zaprojektowany do buforowania wszystkich plików i wpisów w katalogu odczytywanych lub zapisywanych w celu zablokowania urządzeń, więc Linux kopiuje dane do iz ramdysku do „pamięci podręcznej stron” (dla danych pliku) i „pamięci podręcznej dentysty” (dla wpisów katalogu) . Wadą ramdysku udającego urządzenie blokowe jest to, że jest traktowane jak urządzenie blokowe.

Co jestpage cache identry cache? Czy w akapicie oznacza to, że dane zostały zduplikowane, ponieważramdisk jest traktowane jako urządzenie blokowe, a więc wszystkie dane są buforowane?

W przeciwieństwie,ramfs:

Kilka lat temu Linus Torvalds wpadł na zgrabny pomysł: co, jeśli pamięć podręczna Linuksa mogłaby być zamontowana jak system plików? Po prostu przechowuj pliki w pamięci podręcznej i nie pozbywaj się ich, dopóki nie zostaną usunięte lub system nie uruchomi się ponownie? Linus napisał małe opakowanie wokół pamięci podręcznej o nazwie „ramfs”, a inni programiści jądra stworzyli ulepszoną wersję o nazwie „tmpfs” (która może zapisywać dane w celu zamiany przestrzeni i ograniczać rozmiar danego punktu montowania, aby wypełniał się przed konsumpcją). cała dostępna pamięć). Initramfs jest instancją tmpfs.

Te systemy plików oparte na pamięci RAM automatycznie rosną lub zmniejszają się, aby pasowały do ​​rozmiaru danych, które zawierają. Dodawanie plików do ramfów (lub rozszerzanie istniejących plików) automatycznie przydziela więcej pamięci, a usuwanie lub obcinanie plików uwalnia tę pamięć. Nie ma duplikacji między urządzeniem blokowym a pamięcią podręczną, ponieważ nie ma urządzenia blokującego. Kopia w pamięci podręcznej jest jedyną kopią danych. Co najważniejsze, nie jest to nowy kod, ale nowa aplikacja dla istniejącego kodu buforowania Linuksa, co oznacza, że ​​nie dodaje prawie żadnego rozmiaru, jest bardzo prosta i opiera się na wyjątkowo dobrze przetestowanej infrastrukturze.

W sumie,ramfs jest tylko plik otwarty i załadowany do pamięci, prawda?

Obieinitrd iramfs są spakowane w czasie kompilacji, ale różnica jest,initrd jest urządzeniem blokowym rozpakowanym do zamontowania przez jądro podczas uruchamianiaramfs jest rozpakowywany przez cpio do pamięci. Mam rację? Albo jestramfs bardzo minimalny system plików?

Wreszcie, aż do tego dniainitrd obraz jest nadal prezentowany w najnowszym jądrze. Jednak tak jestinitrd właściwie toramfs używane dzisiaj, a nazwa jest tylko dla celów historycznych?

questionAnswers(4)

yourAnswerToTheQuestion