Es gab viele Fragen zu RAM-Festplatten, und mir sind RAMFS und TMPFS bekannt, die die Verwendung von RAM als Blockgerät ermöglichen. Mein Interesse ist jedoch die Verwendung eines festen Speicheradressbereichs als Blockgerät.
Dies ergibt sich aus der Notwendigkeit, nichtflüchtigen RAM zu verwenden, der in meinem System verfügbar ist. Ich habe 6 GB RAM zur Verfügung und 8 GB nichtflüchtigen RAM vorhanden. Die Ausgabe von / proc / iomem gibt mir Folgendes
100000000-17fffffff: System-RAM
180000000-37fffffff: reserviert
Hier entspricht der Bereich von 6 GB bis 14 GB dem nichtflüchtigen RAM-Bereich, der durch die E820-BIOS-Speicherzuordnung als reserviert markiert ist. Meine Hauptabsicht ist es, diesen NVRAM als Blockgerät unter Linux zu verwenden. Dies ist nützlich zum Testen von NVRAM-Systemen. Gibt es bereits einen Linux-Befehl, mit dem ich diese Region als Blockgerät verwenden kann, oder muss ich meinen eigenen Kernel-Gerätetreiber schreiben, um dies zu ermöglichen?
Antworten:
Ich bin kein Experte für Gerätetreiber, aber hier sind einige Hinweise für Ihre Forschung und Entwicklung:
Einige andere relevante Quellen:
quelle
Vor der Einführung von
tmpfs
/initramfs
wurderamdisk
zum Laden derinitrd
Images ein vordefiniertes Blockgerät mit fester Größe verwendet, das meiner Meinung nach zumindest bei früheren Implementierungen zusammenhängend ist.Der Blocktreiber selbst hat keine Parameter für die Speicheradresse, nur die Größe, sondern den Kernel, der zum Laden von initrd-Images an einer vordefinierten Adresse (per Konfiguration) verwendet wird, um einen Blick in main / init zu werfen Kernelcode hilfreich sein könnte (würde ich) Seien Sie überrascht, wenn Ramdisk für initrd nicht mehr unterstützt wird, aber da initramfs bereits seit vielen Jahren verfügbar ist, wird ramdisk nie mehr verwendet.
Die Treiberquelle war drivers / block / rd.c , wenn ich das jetzt richtig sehen ist drivers / block / brd.c .
Ansonsten habe ich auf der Suche nach Ramdisk eine Implementierung gefunden, die interessant aussieht:
Disk on RAM - Spielen mit Blocktreibern
quelle