Czy Ramdisk i initrd są takie same?


10

Podczas czytania dokumentacji jądra na ramdysku w ramfs-rootfs-initramfs.txt miałem wątpliwości, jak ramdisk wyjaśnił, że istnieją takie same funkcje jak initrd opisane w poście przy różnicy między initrd-i-initramfs .

Czy ktoś może mi to wyjaśnić?

A jeśli jest tak samo, czytam, że ma to wiele wad, ale nadal na moim fedora PC, widzę

initrd-2.6.29.4-167.fc11.i686.PAE.img

w moim folderze rozruchowym. Czy różni się od wspomnianego wyżej initrd?

UPDATE_EDIT:
W artykułach widziałem nawet takie polecenia
# update-initramfs -u all
update-initramfs: Generating /boot/initrd.img-2.6.18-5-amd64

Więc w jaki sposób ten initramfs jest powiązany z initrd.img?

Odpowiedzi:


13

Ramdysk to zestaw bloków, które są kopiowane do przydzielonej części pamięci, a następnie traktowane jako urządzenie blokowe. Na ramdysku tworzony jest normalny system plików. Initrd (początkowy ramdysk) to ramdysk montowany podczas uruchamiania.

Initramfs to coś innego. Jest to archiwum plików cpio, które jest ładowane podczas uruchamiania. Jądro ładuje zawartość do wirtualnego systemu plików, który nazywa rootfs. W przeciwieństwie do ramdysku, usuwanie plików bezpośrednio zwalnia pamięć i nie wymaga dodatkowego systemu plików ani warstwy blokowej.

Obie metody powodują, że pliki są dostępne dla jądra w czasie rozruchu, zanim zostaną załadowane jakiekolwiek urządzenia, więc w praktyce można osiągnąć podobne wyniki za pomocą obu. Starsze systemy używają initrd (został stworzony przed initramfs), ale wszystkie nowoczesne systemy powinny używać initramfs. Nadal możesz zobaczyć słowo initrd w odniesieniu do czegoś, co tak naprawdę jest initramfs; to tylko nazewnictwo ze względu na kompatybilność.


Dzięki efhemient, chciałbym wiedzieć, co masz na myśli mówiąc „ramdisk to zestaw bloków”. Jak traktowane jest to jako urządzenie blokowe po skopiowaniu?
Sen

@Sen: Istnieje rdmoduł (później przemianowany na brd, i może być wbudowany w jądro), który przydziela wiązkę pamięci, tworzy urządzenie blokowe i mapuje żądania do / z urządzenia blokowego do odczytu / zapisu w pamięci.
ephemient

Czy możesz dać mi więcej informacji na temat tego modułu rd / brd?
Sen

Chciałbym również wiedzieć, że jeśli utworzyłem obraz ramdysku, wykonując następujące kroki: mke2fs -vm0 / dev / ram 4096; mount -t ext2 / dev / ram / mnt; cd / mnt; pliki cp / bin, / sbin, / etc, / dev ... w mnt; Płyta CD ../; umount / mnt; dd if = / dev / ram bs = 1k count = 4096 of = ext2ramdisk; Jak mogę uruchomić ten ext2ramdisk na moim urządzeniu? Wystarczy załadować go do barana, czy to zadziała?
Sen

@Sen: Program ładujący jest odpowiedzialny za ładowanie zarówno jądra, jak i init (rd | ramfs) do pamięci RAM; zobacz dokumentację twojego bootloadera. Ale nawet jeśli budujesz go ręcznie (dlaczego?) Powinieneś użyć find /bin /sbin /etc /dev ... | cpio -o | gzip -c > initramfszamiast initrd.
ephemient
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.