Vor zwei Tagen hab ich also die SCSI-Karte ausgetauscht... die
Kiste ist damit zwar nicht stabiler geworden, aber der Durchsatz
meiner DCAS4330 hat sich nach "hdparm -tT"  wunderbarerweise
verdoppelt - immerhin. Außerdem hat die Neue auch so'n feines
Bios-Setup, mit dem man herumspielen kann.
Egal.

Hier der Weg, um ein ramdisk-image zu mounten, zu beschreiben und
wieder verpacken:

Erstmal natürlich das Ding suchen und in ein Verzeichnis der Wahl
kopieren. Das ramdisk-image liegt immer in /boot und trägt einen
Namen wie "initrd" oder auch "initrd.img" (im Zweifelsfall in
/etc/lilo.conf nachschauen). Hier bei mir war's ein  link auf
"initrd-2.2.15-4mdk.img". 
Also ...

cd Verzeichnis
cp initrd-2.2.15-4mdk.img .

"file" sagt, daß das komprimiertes Zeug ist...

initrd-2.2.15-4mdk.img: gzip compressed data, deflated, 
last modified: Sun Sep 17 05:47:08 2000, 
max compression, os: Unix

...deshalb:

zcat initrd-2.2.15-4mdk.img > initrd

Jetzt sagt "file initrd":

initrd: Linux/i386 ext2 filesystem

Aha - Es wird spannend.

So ein unkomprimiertes image läßt sich übrigens problemlos auch
mit e2fsck überprüfen. Wenn man vergessen weiter unten  umount zu
machen, läßt sich das dann ganz einfach beheben (nur auf
/lost+found kann man gut verzichten - danach fragt es jedesmal).

Weil es eine ramdisk ist, sollte  es am Besten nach /dev/ram, oder?
Also erstmal Platz schaffen dort:

dd if=/dev/zero of=/dev/ram bs=1k count=2048
 2048+0 Records ein
 2048+0 Records aus
[optional]

...und die dekomprimierte ramdisk hineinschreiben:

dd if=initrd of=/dev/ram bs=1k count=2048
 1500+0 Records ein
 1500+0 Records aus

Trotz count=2048 sind also nur 1500 records hineingegangen, weil
initrd halt nur so groß ist. Diese Zahl benutzen wir dann später
wieder beim verpacken.

Heiho! Der Computer bleibt nicht stehen, keine panic, alles im
grünen Bereich. Der Kernel verschiebt offenbar alles, was da
vielleicht vorher drinstand irgendwo anders hin. Ich liebe es! :-).

Weiter im Programm:

mkdir Mounted
mount /dev/ram Mounted

...

Und da ist es:

cd Mounted
ls
  bin/  dev/  etc/  lib/  linuxrc*  loopfs/

In meinem Fall mußte ich erstmal die linuxrc im Wurzelverzeichnis
bearbeiten:

Aus:

insmod -f /lib/AM53C974.o 

Wird:

insmod -f /lib/initio.o 

Dann natürlich noch AMxy.o aus lib/ rauswerfen und den neuen
Treiber reintun - fertig.

...

umount Mounted
(Wichtig!)

Wieder verpacken ...

dd if=/dev/ram bs=1k count=1500 | gzip -v9 > /tmp/ram_image.gz
# count auf den Wert setzen, den dd oben beim Schreiben genannt
# hat.

"ram_image.gz" jetzt noch nach /boot kopieren, die lilo.conf
anpassen, neu booten. :-)

//
// Docs:

view  /usr/doc/kernel-doc-2.2.15/ramdisk.txt 

--> Da steht vor allem auch drin, wie man sich eine BootDiskette
mit Kernel drauf macht und so was. Ich hab für das hier nur den 
letzten Abschnitt verwendet.

//
// Nochmal die wesentlichen Befehle:

dd if=DieRamDisk of=/dev/ram bs=1k count=2048

mount /dev/ram LeeresVerzeichnis

...

umount /dev/ram LeeresVerzeichnis

dd if=/dev/ram bs=1k count=[von dd oben ] | gzip -v9 > /tmp/ram_image.gz


So. Fertig. 

Jetzt bitte jeder mal zu Hause ausprobieren! 

Wir könnten dann ja noch die Unterschiede in den ramdisks der
verschiedenen Distris feststellen usw. Ich wäre  dann dafür, das in die
Technik-Ecke zu stellen -- wie gesagt hab ich noch nirgendwo eine
Anleitung genau dazu gefunden.

Ciao - Björn.

-- 

 \|/
    t(h)ree
---------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an