PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Initrd



KingHomerDerErs
17.08.06, 21:35
Hi ... ich beiss hier gleich ein Loch in die Wand :D

Mein Problem ist folgendes: Ich bin jetzt stolzer Besitzer eines Highpoint RocketRaid 1520 Controller mit 2 Platten dran. Den Treiber habe ich auch installiert, und der funktioniert soweit wunderbar. Ich kann sowohl das Dateisystem erzeugen, wie auch mounten.

Ich würde jetzt nur gerne diese Platte als meine Bootplatte machen. Zu dem Zweck muss ich ja das Modul (hpt37x2.ko) per initrd noch vor dem mounten von root zur verfügung stellen. Von der Idee her ganz toll, aber der bricht mir immer mit einer Kernel Panic ab wenn er die Initrd mounten will. Filesysteme hab ich mittlerweile bald alle eingebunden (natürlich statisch): ext2, ext3, reiserfs, cramfs, minix, jfs ... und noch ein paar. So alles was mir über die Finger gerutscht ist. Ausserdem habe ich Ramdisk-Support, Initial RAM Filesystem and RAM Disk, den Device Mapper (hab ich irgendwo gelesen dass ich den brauche) und den Loopback-Support in den Kernel eincompiliert. Wenn ich das Initrd beim Grub aus der Config nehme bootet das System wunderbar durch ... mit der Initrd wie gesagt eine Kernel Panic (Cannot mount root)
Mein Grub-Eintrag sieht so aus:


title=Gentoo Linux
root (hd0,1)
kernel /boot/kernel-2.6.17-gentoo-r5-hpt root=/dev/ram0 real_root=/dev/hda2 init=/sbin/init
initrd /boot/initrd-kernel-2.6.17-gentoo-r5-hpt


Nachdem ich das System ohne die Initrd gebootet habe, hab ich auch versucht mit


mount -o loop /boot/initrd-kernel-2.6.17-gentoo-r5-hpt /mnt/loop

das ganze direkt zu mounten, aber der sagt immer nur ich soll das Filesystem angeben.


Was habe ich vergessen? Welches FS benutzt die Initrd? Ich habe auch schon probiert die Initrd zu entpacken (ist ein gzip-Archiv) aber auch dann gibt er die gleiche Fehlermeldung beim mounten.

Ich hoffe es hat jemand eine Idee. Ich versuche jetzt noch mit Genkernel das System mit allen Einstellungen zum laufen zu bringen, aber schön ist diese Lösung nicht. Ausserdem habe ich dann immer noch keine Ahnung wo mein Problem liegt, sollte das klappen ... zudem bin ich ein Freund von kleinen Kerneln :)


Grüße, und schonmal vielen Dank
KingHomer

hp_tux
17.08.06, 22:27
Hallo,

hmm, kannst Du denn den Treiber für den RAID-Controller nicht fest in den Kernel kompilieren, statt als Modul? Dann kannst Du nämlich auf die initrd verzichten.

Gruß

hp_tux

KingHomerDerErs
17.08.06, 22:33
Um ehrlich zu sein, keine Ahnung. Es gibt zwar einen Treiber für den HPT37x im Kernel, aber der kann kein RAID.
Wenn jemand eine Idee hat den Treiber in den Kernel zu compilieren, das wäre für mich sogar die angenehmere Lösung.

Den Treiber gibt es hier, falls ihn sich jemand anschauen möchte:
http://www.highpoint-tech.com/USA/bios_rr1520.htm ganz unten ist der OpenSource Treiber

stefan-tiger
17.08.06, 22:39
Auch wenn du vor hast / auf das Raid zu legen würde ich dir raten /boot auf eine "normale" Platte&Partition zu legen.

Der Kernel hat vielleicht 2 oder 3 MB wenn er groß ist und den von einem RAID aus zu laden würde wenig bringen.

KingHomerDerErs
17.08.06, 22:41
Auch wenn du vor hast / auf das Raid zu legen würde ich dir raten /boot auf eine "normale" Platte&Partition zu legen.

Der Kernel hat vielleicht 2 oder 3 MB wenn er groß ist und den von einem RAID aus zu laden würde wenig bringen.

Ich hatte eigentlich vor die zur Zeit im System verbaute Platte aus dem System zu schmeissen, und dann würde nur noch das RAID übrig bleiben. Aber nichts desto trotz danke für deinen Beitrag :)

stefan-tiger
17.08.06, 22:48
Ich hatte eigentlich vor die zur Zeit im System verbaute Platte aus dem System zu schmeissen, und dann würde nur noch das RAID übrig bleiben. Aber nichts desto trotz danke für deinen Beitrag :)

Falls mit dem System mal was schief läuft ist eine Neuinstallation problematisch.

Bei mir hab ich dazu /boot und SWAP auf eine eigene 512 MB Partition auf je eine Platte gelegt. den Rest der beiden Platten hab ich zu /dev/md0 zusammengefasst (software raid 0) welches als / verwendet wird.
Ich hab also keine extra Platte dafür drin.

Ich hatte auchmal so ein HighPoint-RAID, aber so wie ichs jetzt hab ists mir eigentlich lieber zumal das RAID unabhänig ist, d.h. es würde in einem anderen Rechner mit anderem Controller laufen oder ich könne auch ne andere Distribution nehmen ohne was mit einem Treiber "fummeln" zu müssen.

Den einzigen Vorteil den du evtl. hast wäre, daß das RAID, wenn es das Dateisystem zuläßt, von Linux und Windows Gleichermaßen benutzt werden kann. Wenn du das RAID als / verwendest ist das aber nicht der Fall.

KingHomerDerErs
17.08.06, 22:53
Darüber mache ich mir ehrlich gesagt nicht so die Sorgen. Ich verwende Gentoo und da habe ich bei meinem Rettungssystem alle Tools dabei die ich brauche um den Treiber zu übersetzen :) Windows benutze ich alle Schaltjahre mal um ein wenig zu zocken, den Zugriff auf die Partition brauche ich nicht.
Wenn ich es nicht gebacken bekomme mit der Initrd wird es darauf hinauslaufen dass ich die Platte im System lassen werde, allerdings wollte ich die in meinen Rechner im Keller verbannen, da sie doch nicht unerheblich Krach macht.

Ich hab es bei einem SuSE-System schon ohne Probleme hinbekommen die Initrd zum laufen zu bekommen, nur hab ich da den Standard-Kernel genommen bei dem alles als Modul oder statisch eincompiliert ist. Daher auch meine Idee mit dem Genkernel einfach mal alle Optionen im Kernel zu aktivieren ... apropos, fertig compiliert :D Mal schauen obs klappt.

KingHomerDerErs
17.08.06, 23:07
Neuer Stand: Die Initial Ramdisk von Genkernel rennt, die mit mkinitrd erstellte bringt den gleichen Fehler. Ich vermute mal dass das Tool verbuggt ist :/ Naja, jetzt mal nach was anderem umschauen, evtl kann ich mit Genkernel noch das Modul mit einbeziehen.

Thomas Mitzkat
17.08.06, 23:14
Hmm. Bist Du sicher, daß die Initrd richtig erstellt ist und daß das Modul auch geladen wird? Initrd wird ja nicht gemountet und der Fehler besagt ja nur, daß das richtige Modul nicht geladen wurde und somit /root nicht entfaltet werden kann. Frage mich nur warum ohne Initrd das System durchstartet, wenn das Modul nicht in den Kernel eingebunden ist..

WFlyer
17.08.06, 23:14
Ich bin an so en hpt(anderes modell) auch schon verzweifelt, die machen immer zicken.

Ich weis nicht wie es heute ist, wo ich es probiert habe (schon 1 jahr her)wahr es nicht möglich direkt von der platte zu booten weder fest im kernel oder mit initrd.

Ich hab einfach ne alte 4gb platte eingebaut und als /boot laufen lassen rennt wunderbar so.

KingHomerDerErs
17.08.06, 23:28
Hmm. Bist Du sicher, daß die Initrd richtig erstellt ist und daß das Modul auch geladen wird? Initrd wird ja nicht gemountet und der Fehler besagt ja nur, daß das richtige Modul nicht geladen wurde und somit /root nicht entfaltet werden kann. Frage mich nur warum ohne Initrd das System durchstartet, wenn das Modul nicht in den Kernel eingebunden ist..

Sicher bin ich mir nicht, aber es gibt bei der Ausführung keine Fehlermeldung zurück. Von daher bin ich davon ausgegangen dass es fehlerfrei durchlief.
An dem HPT-Modul dürfte es mit sehr hoher Wahrscheinlichkeit nicht liegen, da das Modul ja einwandfrei läuft wenn das System gestartet ist. Ich bin gerade auf der Suche ob ich mit Genkernel externe Module einbinden kann ... aber so langsam nervts :/

KingHomerDerErs
17.08.06, 23:44
So denn ... vorweg: ich habs geschafft :)

Mein Lösungsweg:
Mit Genkernel den Kernel und die Initrd erstellen. Das HPT-Modul mit den entsprechenden Kernel-Sourcen übersetzen und nach /lib/modules/kernel-2.6.x/kernel/hpt37x2.ko kopieren (oder wohin man in dem Modul-Verzeichniss halt will). Dann /lib/modules/kernel-2.6.x/modules.dep editieren und das Modul hpt37x2.ko ohne Abhängigkeiten eintragen. Anschliessend /usr/share/genkernel/ARCHITEKTUR/modules_load editieren und hier entsprechend das Modul eintragen. Ich habe es unter MODULES_SATA eingetragen, sollte aber im Prinzip egal sein wohin man es schreibt. Dann mit genkernel initrd erneut die Initrd erzeugen und installieren ... und tada :D es geht

Morgen werde ich mich dann dranmachen die Daten auf die andere Platte zu verschieben. Endlich wieder Platz *breitmach* ;)

kreol
18.08.06, 00:21
Endlich mal wieder jemand der a) Erfolg meldet und b) den Weg für andere beschreibt. Danke.


Kreol

KingHomerDerErs
18.08.06, 10:00
Danke für die Blumen :)

Was ich noch vergessen habe zu sagen, sollte sich jemand mit den HPT-Modulen rumschlagen. Der Kernel liefert selber Treiber für die Karten von Highpoint mit, wie oben schon gesagt allerdings ohne RAID-Support. Nichts desto trotz lässt sich soweit ich weis das HPT-Modul nicht übersetzen wenn denn die Kerneltreiber aktiviert sind. Zudem sollte man noch RAID- und SATA-Support im Kernel aktivieren. Ich hab gestern viel mit den Kernelparametern rumgespielt und weis leider nicht mehr 100% was ich da alles angemacht habe :D Wenn man Genkernel die komplette Arbeit überlässt müsste alles vorhanden sein, nur muss man halt die HPT-Module aus dem ATA-Zweig deaktivieren. Am besten mit "genkernel --menuconfig all" starten, dann kann man selber nochmal in die config eingreifen.

KingHomerDerErs
18.08.06, 13:39
Manchmal könnt ich fluchen ....

Nachdem ich ca. 80Gb auf das RAID kopiert habe, hab ich GRUB im MBR von /dev/sda installiert .... neu gestartet -> RAID defekt :ugly:

Nach kurzer Suche dann das hier gefunden:

Note: For SuSE 10.0, please format the /boot partition using ext3 format (default is
reiserfs). Otherwise, the GRUB boot loader will overwrite the RAID information
stored on sector 9 and cause your RAID array to be broken.

Wieso zum Teufel steht das bei den Installationsanweisungen von SuSE wenns doch alle Linux-Systeme was angeht :confused: :confused: :confused: :confused:

Naja, die Daten wandern gerade wieder neu über den IDE-Bus ... diesmal mit eigenständiger Partition für /boot
Wenns mein RAID wieder zerreist werd ich die mal mit nem Baseballschläger besuchen!!

stefan-tiger
18.08.06, 13:53
.. diesmal mit eigenständiger Partition für /boot
...
;) :p :D :)

KingHomerDerErs
18.08.06, 14:12
Langsam bekomm ich schlechte Laune :mad:
RAID wieder hinüber, trotz ext3 für /boot

Meine Partition sah folgendermassen aus:
/dev/sda1 /boot ext3
/dev/sda2 /mnt/windows ntfs (noch nicht formatiert)
/dev/sda3 / reiserfs
/dev/sda4 swap

Hat jemand spontan eine Idee wieso dieser Arsch mit Ohren mir jedesmal meine RAID-Config überschreibt wenn ich den MBR auf /dev/sda schreiben will?