PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : initrd erstellen



resol
14.01.04, 13:29
Hallo zusammen,

ich möchte den Raidcontroller (HPT 372) auf meinem neuen Mainboard (Epox 8kra2+)installieren. Ein Raid-Array mit Raid 1 (mirroring) aus 2 Festplatten soll mein Bootlaufwerk sein. Den Treiber hab ich mir als Source von Highpoint runtergeladen und compiliert. Da ich vom Raid-Array booten möchte, muss der Kernel schon vor dem Zugriff auf die Platten Zugang zum Modul (kann man ja nicht direkt in den Kernel einkompilieren, da er ja vom Hersteller ist, oder?) haben.
Deshlab muss ich ja eine Initial Ramdisk erstellen, die den Treiber (das kompilierte Modul) aufnimmt. Meine Distribution ist Slackware. Dort gibt es nach meinem Wissen ja keinen Befehl, der eine solche Ramdisk automatisch erstellt.
Jetzt zu meiner Frage: Wenn ich mir eine solche initrd selbst erstelle (wie in der Anleitung der Kernelsourcen initrd.txt beschrieben), was muss dort dann alles rein?
Reicht es, wenn ich nur den einzelnen Treiber reinkopiere, da ich ja eigentlich nur den zum Booten brauche, oder müssen da immer noch andere Sachen rein? Muss das Modul in einem bestimmten Verzeichnis liegen?

Ich würde mich sehr freuen, wenn Ihr mir helfen könntet...

resol.

PS: Wenn ich mich irgendwie bei irgendwas irren sollte, dann bitte bescheid geben...

xstevex22
14.01.04, 14:55
Hi!
Kenne Slackware nicht, aber vielleich ist ja ähnlich vorzugehen. Falls du schon eine existierende initrd für deinen Kernel hast (gehe ich von aus), dann probiere es mal so:

zcat initrd.img > initrd.img.entpackt
mount -o loop,rw initrd.img.entpackt /mnt/initrd

Danach befindet sich unter /mnt/initrd deine initial ramdisk. Im Verzeichnis lib/ sollten dann ein paar Kernel Module liegen. Dort kopierst du deinen Treiber hin.
Zudem mußt du in der linuxrc einen insmod /lib/dein-raid-treiber.o hinzufügen.

Danach

umount /mnt/initrd
gzip -9 initrd.img.entpackt
mv initrd.img initrd.img.old
mv initrd.img.entpackt initrd.img

Nicht vergessen den lilo aufzurufen, falls dieser verwendet wird.

Doh!
14.01.04, 16:01
Bei den Kernel-Sourcen findet sich unter [kernel-source]/Documentation eine initrd.txt, in der beschrieben wird, wie man eine initrd generieren kann. Allerdings ist die nix für Anfänger, weil einfach viele Optionen nicht wirklich erklärt werden. Ohne zusätzliches HowTo oder guten Kernelkentnissen wirst Du mit dieser Anleitung keine initrd bauen können. Lies es Dir aber dennoch mal durch ist ganz informativ.

Einige Distributionen liefern das Tool mkinitrd mit, dass man sich sicherlich auch saugen kann (SuSE hat auufbauend auf mkinitrd noch ein Skript mk_initrd, dessen Konfiguration über /etc/sysconfig/mk_initrd läuft). Mit diesem Tool solltest Du eine initrd bauen können.

resol
15.01.04, 22:03
Danke für eure schnellen Antworten.

Leider konnte ich erst jetzt nachschauen. Ich habe keine initrd auf meinem Slackware System. Die Tools zum erstellen sind meinés Wissens auch nicht drauf und ich denkte, die wird man nicht einfach nachinstallieren können, da sie ja distributionsspeziefisch sind.
Die Textdatei hatte ich mir ja schon durchgelesen. Aber wie Du sagst, bekomme ich es allein mit der nicht hin. Bin völlig überfragt, was da alles rein muss.
Hat denn keiner eine in seinem System (Slackware 9.1 mit Kernel 2.4.22), die er mir kopieren könnte oder so?
Oder vielleicht weiß jemand genau, was ich alles mit rein packen muss.

Bitte helft mir,

resol.