Ist Ramdisk und initrd dasselbe?

10

Beim Lesen der Kerneldokumentation zu ramdisk in ramfs-rootfs-initramfs.txt hatte ich Zweifel, wie die Ramdisk erklärt hat, dass es die gleichen initrd-Funktionen gibt, die im Beitrag über den Unterschied zwischen initrd und initramfs beschrieben wurden .

Könnte mich jemand darüber klären?

Und wenn es das gleiche ist, habe ich gelesen, dass es viele Nachteile gibt, aber immer noch in meinem Fedora-PC, sehe ich

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

in meinem Boot-Ordner. Unterscheidet es sich von der oben erwähnten initrd?

UPDATE_EDIT:
In den Artikeln habe ich sogar einen Befehl wie gesehen
# update-initramfs -u all
update-initramfs: Generating /boot/initrd.img-2.6.18-5-amd64

Wie ist dieses initramfs mit initrd.img verknüpft?

Sen.
quelle

Antworten:

13

Eine Ramdisk ist eine Gruppe von Blöcken, die in einen zugewiesenen Speicherblock kopiert und dann als Blockgerät behandelt werden. Auf der Ramdisk wird ein normales Dateisystem erstellt. Die initrd (anfängliche Ramdisk) ist eine Ramdisk, die während des Startvorgangs bereitgestellt wird.

Das initramfs ist etwas anderes. Es ist ein CPIO-Archiv von Dateien, das während des Startvorgangs geladen wird. Der Kernel lädt den Inhalt in ein virtuelles Dateisystem, das er rootfs aufruft. Im Gegensatz zu einer Ramdisk wird durch das Löschen von Dateien direkt Speicher freigegeben, und es sind keine zusätzlichen Dateisysteme und Blockschichten erforderlich.

Beide Methoden führen dazu, dass dem Kernel beim Booten Dateien zur Verfügung stehen, bevor Geräte geladen wurden. In der Praxis können Sie mit beiden Methoden ähnliche Ergebnisse erzielen. Ältere Systeme verwenden initrd (es wurde vor initramfs erstellt), aber moderne Systeme sollten alle initramfs verwenden. Möglicherweise sehen Sie das Wort initrd immer noch in Bezug auf etwas, das wirklich ein initramfs ist. Es wird nur aus Kompatibilitätsgründen benannt.

kurzlebig
quelle
Vielen Dank, Ephemient, ich würde gerne wissen, was Sie mit "Ramdisk ist eine Reihe von Blöcken" gemeint haben. Wie wird dies nach dem Kopieren als Blockgerät behandelt?
Sen
@Sen: Es gibt ein rdModul (später umbenannt in brdund möglicherweise in den Kernel integriert), das eine Menge Speicher zuweist, ein Blockgerät erstellt und Anforderungen an / von dem Blockgerät in Lese- / Schreibvorgänge im Speicher abbildet.
Ephemient
Können Sie mir etwas mehr über dieses rd / brd-Modul erzählen?
Sen
Ich würde auch gerne wissen, ob ich ein Ramdisk-Image erstellt habe, indem ich die folgenden Schritte befolge: mke2fs -vm0 / dev / ram 4096; mount -t ext2 / dev / ram / mnt; cd / mnt; cp / bin, / sbin, / etc, / dev ... Dateien in mnt; cd ../; umount / mnt; dd if = / dev / ram bs = 1k count = 4096 of = ext2ramdisk; Wie starte ich diese ext2ramdisk auf meinem Gerät? Laden Sie es einfach in den Widder. Funktioniert das?
Sen
@Sen: Der Bootloader ist dafür verantwortlich, sowohl den Kernel als auch den init (rd | ramfs) in den RAM zu laden. Weitere Informationen finden Sie in der Dokumentation Ihres Bootloaders. Aber selbst wenn Sie es von Hand erstellen (warum?), Sollten Sie find /bin /sbin /etc /dev ... | cpio -o | gzip -c > initramfsanstelle von initrd verwenden.
Ephemient