Problem beim Erstellen von RAMDISK > 500MB

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Benutzeravatar
eagle
Beiträge: 2282
Registriert: 05.11.2002 11:20:53
Wohnort: Berlin

Problem beim Erstellen von RAMDISK > 500MB

Beitrag von eagle » 27.11.2007 16:35:08

Ich wollte auf einem Rechner eine RAMDISK ca. 1,5GB erstellen. Dazu habe ich dem Kernel beim Booten die Größe mit dem Parameter ramdisk_size=1500000 mitgegeben. Eine Prüfung mit dem Befehl dmesg | grep RAMDISK zeigt, dass er den Wert akzeptiert hat. Versuche ich nun die mit ext2 formatierte RAMDISK zu mounten bekomme ich Fehlermeldungen.

Code: Alles auswählen

# mke2fs -m0 /dev/ram0
..
# mount /dev/ram0 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/ram0,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
Verkleinere ich die Größe der RAMDISK mit dem Befehl mke2fs -m0 /dev/ram0 500000 auf ca. 500MB, dann funktionierts.

eagle
"I love deadlines. I love the whooshing sound they make as they fly by." -- Douglas Adams

storm
Beiträge: 1581
Registriert: 01.05.2004 13:21:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DE

Beitrag von storm » 27.11.2007 19:53:47

Ich kann dir den Grund auch nicht nennen, warum dass so ist. Im Netz findet sich auch nirgends eine konkrete Antwort. Folgendes hat hier gerade funktioniert (mit qemu ein etch gebootet, 2.6.18.y mit 768MB Speicher verfügbar, ramdisk_size=550000):

Code: Alles auswählen

mke2fs -v -m0 -b1024 /dev/ram0
...
tune2fs -l /dev/ram0
...
tune2fs -c 50 /dev/ram0
...
mount -v -t ext2 /dev/ram0 /mnt/test
Bin ich nur geringfügig von der Reihenfolge der Befehle abgewichen oder haben ramdisk und Dateisystem unterschiedliche Blockgrößen, schlägt das erste tune2fs fehl und auch die weiteren Befehle. Eventuell müsstest du beim booten auch gleich ein passende Blockgröße (1024/2048) für die ramdisk mitgeben, dann sollte es nahtlos gehen. Aber trotzdem ist das komisch. Die Grenze für dieses Verhalten liegt bei 513MB.
Irgendwie hatte ich beim Lesen eines Posts auf lkml.org den Eindruck, dass keiner richtig Lust hat, sich um diesen Code zu kümmern. Da hatte einer mit exakt dem gleichen Anliegen nachgefragt [1].

ciao, storm

[1] http://marc.info/?l=linux-kernel&m=117025183215965&w=2
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */

Benutzeravatar
eagle
Beiträge: 2282
Registriert: 05.11.2002 11:20:53
Wohnort: Berlin

Beitrag von eagle » 28.11.2007 09:13:07

Vielen Dank für den Hinweis. Ich habe jetzt beim Booten den Parameter ramdisk_size=1638400 angegeben und beim Erstellen des Dateisystems die Blockgröße auf 1024 gesetzt. Damit lässt sich die RAMDISK einhängen und verwenden.

Code: Alles auswählen

# mke2fs -m0 -b 1024 /dev/ram0
..
# mount /dev/ram0 /mnt
eagle
"I love deadlines. I love the whooshing sound they make as they fly by." -- Douglas Adams

Antworten