Der Unterschied zwischen initrd und initramfs?

Soweit ich weiss,initrd fungiert als Blockgerät und erfordert daher einen Dateisystemtreiber (wie zext2). Der Kernel muss mindestens ein eingebautes Modul zur Erkennung des Dateisystems von habeninitrd. In diesem Artikel,Einführung von initramfs, einem neuen Modell für anfängliche RAM-Festplattensteht geschrieben, dass:

Aber RAM-Disks verschwenden aufgrund von Caching sogar noch mehr Speicher. Linux ist so konzipiert, dass alle Dateien und Verzeichniseinträge zwischengespeichert werden, die von Blockgeräten gelesen oder auf diese geschrieben wurden. Daher kopiert Linux Daten von und auf die Ramdisk in den "Seiten-Cache" (für Dateidaten) und den "Dentry-Cache" (für Verzeichniseinträge). . Der Nachteil der Ramdisk, die vorgibt, ein Block-Gerät zu sein, ist, dass sie wie ein Block-Gerät behandelt wird.

Was istpage cache unddentry cache? Bedeutet das in diesem Absatz, dass die Daten dupliziert wurden, weilramdisk wird als Blockgerät behandelt, also werden alle Daten zwischengespeichert?

Im Gegenteil,ramfs:

Vor ein paar Jahren hatte Linus Torvalds eine gute Idee: Was wäre, wenn der Cache von Linux wie ein Dateisystem gemountet werden könnte? Bewahren Sie die Dateien einfach im Cache auf und entfernen Sie sie erst, wenn sie gelöscht oder das System neu gestartet wurde. Linus hat einen winzigen Wrapper namens "ramfs" um den Cache geschrieben, und andere Kernel-Entwickler haben eine verbesserte Version namens "tmpfs" erstellt (mit der die Daten geschrieben werden können, um Speicherplatz zu tauschen, und die Größe eines bestimmten Mount-Punkts so zu begrenzen, dass er vor dem Verbrauch voll wird alle verfügbaren Speicher). Initramfs ist eine Instanz von tmpfs.

Diese RAM-basierten Dateisysteme werden automatisch vergrößert oder verkleinert, um der Größe der enthaltenen Daten zu entsprechen. Durch das Hinzufügen von Dateien zu einem RAM (oder das Erweitern vorhandener Dateien) wird automatisch mehr Speicher zugewiesen, und durch Löschen oder Kürzen von Dateien wird dieser Speicher freigegeben. Es gibt keine Duplizierung zwischen Blockgerät und Cache, da kein Blockgerät vorhanden ist. Die Kopie im Cache ist die einzige Kopie der Daten. Das Beste daran ist, dass dies kein neuer Code ist, sondern eine neue Anwendung für den vorhandenen Linux-Caching-Code, was bedeutet, dass fast keine Größe hinzugefügt wird. Sie ist sehr einfach und basiert auf einer äußerst gut getesteten Infrastruktur.

In Summe,ramfs ist nur eine Datei geöffnet und in den Speicher geladen, nicht wahr?

Beideinitrd undramfs werden zur Kompilierungszeit komprimiert, aber der Unterschied ist,initrd ist ein Block-Gerät, das entpackt wurde, um vom Kernel beim Booten gemountet zu werdenramfs wird per cpio in den speicher entpackt. Hab ich recht? Oder istramfs ein sehr minimales Dateisystem?

Endlich, bis heute, dieinitrd Bild wird noch im neuesten Kernel präsentiert. Ist das jedochinitrd eigentlich dieramfs heute verwendet und der Name ist nur für historische Zwecke?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage