kernel panic - ... unable to mount root fs... (initrd bauen)

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
charly256
Beiträge: 6
Registriert: 23.08.2006 12:29:36

kernel panic - ... unable to mount root fs... (initrd bauen)

Beitrag von charly256 » 24.08.2006 16:28:52

Hallo Forum,
ich verzweifle gerade beim bauen einer initrd für etch kernel 2.6.16 (original Debian). Ich habe meine Installation erfolgreich auf root über LVM über SoftRAID5 umgestellt. initrd mit yaird erzeugt - läuft prima! Jetzt wollte ich aber von Hand etwas in die initrd einbauen, und musste leider feststellen, dass sich alle erzeugten initrds nicht booten lassen. Argh!!. Um den Fehler einzugrenzen habe ich mal die definitiv funktionierende initrd entpackt und wieder verpackt - leider funktioniert sie so nicht mehr und ich bin total ratlos. Bin folgendermassen vorgegangen:

Code: Alles auswählen

mkdir ~/rd
cd rd
gzip -cd /boot/initrd.img-2.6.16-2-486 | cpio -imd --quiet
ich habe noch keine veränderungen in ~/rd vorgenommen !!!

Code: Alles auswählen

find . | cpio --quiet -c -o | gzip -9 -n > /boot/initrd.img-2.6.16-2-486_2
Die neue initrd.img ist 148 Bytes größer als die ursprüngliche. Nanu!?! Wenn ich jetzt mit deiser neuen initrd (die ich inhaltlich nicht verändert habe!!!) boote, kommt nach kurzer Zeit folgende Meldung:

RAMDISK: compressed image found at block 0
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

und das wars dann mit booten. Wie gesagt: Ich habe keine einzige Datei verändert, nur die initrd aus- und wieder eingepackt.

Alles was ich im Netz gefunden habe, läuft darauf hinaus, dass es so gemacht wird, wie ich es oben angegeben habe, nur bei mir klappt es nicht!

Hat jemand eine Idee? Danke schonmal...

Benutzeravatar
chabayo
Beiträge: 930
Registriert: 17.08.2005 07:44:33
Lizenz eigener Beiträge: Artistic Lizenz

Re: kernel panic - ... unable to mount root fs... (initrd ba

Beitrag von chabayo » 24.08.2006 17:00:52

charly256 hat geschrieben:

Code: Alles auswählen

find . | cpio --quiet -c -o | gzip -9 -n > /boot/initrd.img-2.6.16-2-486_2
...ich weiss, besser die schnautze halten wenn man nichts genaues weiss...aber ich hab noch nie gesehen das man so eine initrd packt.

Ich dachte immer das ist ein spezielles Dateisystem ein cramfs oder so...

:roll: Trotzdem, schon mal nachgesehen ob die Dateien mit dem kompletten Pfad in deinem Image liegen?? - sprich "/rd/..." und das /rd gehoert wech??
Watt about the non-digital!?

charly256
Beiträge: 6
Registriert: 23.08.2006 12:29:36

Beitrag von charly256 » 24.08.2006 17:34:37

Wenn ich das richtig verstanden habe, wurde cramfs bis vor kurzem noch für initrds benutzt. Wie auch immer, die vorhandene (funktionierende!!!) ist eine gzipte cpio-Datei (konnte sie ja entsprechend auspacken). Habe aber eben sicherheitshalber nochmal Original sowie Nachbau ausgepackt und verglichen: sind beide im entpackten Zustand absolut identisch!
Obs an den Parametern von cpio bzw. gzip liegt???

Benutzeravatar
chabayo
Beiträge: 930
Registriert: 17.08.2005 07:44:33
Lizenz eigener Beiträge: Artistic Lizenz

Beitrag von chabayo » 24.08.2006 18:15:29

...wuerde Sie direkt mal beide ungezippt mit der -t Option vergleichen.

Also mach doch mal etwa...
  • cpio -t <1.archiv> > datei1
    cpio -t <2.archiv> > datei2
    diff datei1 datei2
...waer schon mal interressant.
Watt about the non-digital!?

Leo
Beiträge: 24
Registriert: 10.10.2005 19:40:55

Beitrag von Leo » 24.08.2006 18:47:08

Falls es irgendwie am neupacken liegt, mit diesen Befehlen mach ich das immer:

Code: Alles auswählen

# inhalt des zu erzeugenden initramfs nach ~/yaird:
yaird -f directory -o ~/yaird

# jetzt das machen was man machen will...

# und dann packen:
cd ~/yaird
find . | cpio --quiet -o -H newc | gzip -9 > /boot/yaird.initramfs
Aber yiard ist recht flexibel konfigurierbar, warum änderst du nicht einfach was an der Konfiguration?

MfG, Leo

charly256
Beiträge: 6
Registriert: 23.08.2006 12:29:36

Beitrag von charly256 » 24.08.2006 18:48:22

Das habe ich schon gemacht, sogar den kompletten Inhalt der Archive miteinander verglichen, es gibt keine Abweichung.

Nebenbei: habe gerade rausgefunden, das was ich meine ist keine initrd, sondern ein initramfs. Deswegen auch cpio und nicht cramfs.

Hilft mir aber auch noch nicht weiter. Trotzdem: warum kommt beim Erzeugen des initramfs mit yaird ein anderes Ergebnis, als beim manuellen erstellen? Was macht yaird beim verpacken anders? (yaird ist in perl geschrieben, da steige ich auch nicht durch). Naja werde mal weiter recherchieren, bzw. hoffen das irgendjemand noch einen Hinweis auf der Pfanne hat.

Aber auf jeden Fall herzlichen Dank chabayo...

charly256
Beiträge: 6
Registriert: 23.08.2006 12:29:36

Beitrag von charly256 » 24.08.2006 19:25:35

Hallo Leo,

besten Dank, so klappt es!!! Auch das entpacken und neupacken klappt nun (obwohl man ja immer wieder "frisch" verpacken kann). Weiss der Henker woran das lag.

Vielen Dank nochmal...

Benutzeravatar
roterstern
Beiträge: 63
Registriert: 16.11.2004 19:29:30

Beitrag von roterstern » 08.02.2007 15:40:16

Hallo charly256,

versuche mich gerade an einer LiveCD und habe das selbe Problem wie du damals. Ich nehme eine funktionierendes Initramfs-Image und damit bootet die CD auch problemlos. Nehme ich ein eigenes Image oder entpacke und packe das funktionierende Initramfs-Image kommt der Fehler wie bei dir (... unable to mount root fs ...). Bevor ich mich jetzt gleich an yaird mache wollte ich fragen ob es eine Erklärung für dieses komische Initramfs-Verhalten gibt?

Besten Grüße

kryptX
Beiträge: 15
Registriert: 26.11.2006 20:08:45

Beitrag von kryptX » 09.02.2007 14:59:13

Den Fehler hatte ich mal mit meinem Bootsplash-Kernel. Eigentlich muesste

Code: Alles auswählen

mkinitramfs -o /boot/initrd.img-$kernelversion /lib/modules/$kernelversion
den Fehler beheben. Bei mir funktionierte es dann..

MfG
Dominic Laumer

Antworten