Ohje, wieder "Cannot open root device" mit eigenen

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
Benutzeravatar
Chrissss
Beiträge: 176
Registriert: 05.04.2004 00:23:48

Ohje, wieder "Cannot open root device" mit eigenen Kernel...

Beitrag von Chrissss » 15.04.2004 17:39:54

Hi!

So zum x-ten mal versuche ich schon einen Eigenbaukernel zu produzieren. Doch egal wie ich meine .config baue, der Kernel will nie booten. Ich bekomme beim booten immer die Meldung:
VFS: Cannot open root device "hda7" or unknown block (0,0)
Please append a correct "root=" boot option
Kernel panic: VFS: Unable to mount root fs on unknown-block (0,0)
Ich weiss, diese Meldung gibts recht häufig, und im Forum findet man dazu schon viele Einträge. Doch egal welche Lösung ich für diese Problem finde, nix hilft. Die nötigen Filesysteme sind im Kernel eincompiliert usw.

Um Auszuschliessen, dass meine .config einfach Mist ist. Hab ich mir die Debian Sources geholt, die .config vom Debian 2.6.5er Kernel Image geschnappt und diesen Kernel einfach ohne Änderungen compiliert. Ergebnis: s.o...

So vielleicht liegts ja an der Art und Weise *wie* ich den Kernel baue:

1.) Kernelquellen holen:
# apt-get install kernel-source-2.6.5 kernel-image-2.6.5-1-386
2.) Rechner bootet wunderbar mit dem fertigen 2.6.5er Kernel Image

So, jetzt gehts an einen Eigenbaukernel.

3.) Kernelquellen entpacken, symlink nach /usr/src/linux setzen
4.) Fertige config nach /usr/src/linux kopieren
# cp /boot/config-2.6.5-1-386 /usr/src/linux/.config
5.) Kernel in *dieser* Konfiguration compilieren:
# make-kpkg clean kernel_image
6.) Neuen Kernel installieren
# dpkg -i kernel-image-*.deb

Neu booten, neuen Kernel in Grub auswählen. Tja, nix geht. Fehler wie gehabt. Auch der "normale" Weg über make bzImage modules modules_install" usw. bringt nichts. Bin jetzt langsam recht ratlos.

Hat jemand noch einen Tipp?

Danke
Chrissss

Benutzeravatar
suntsu
Beiträge: 2947
Registriert: 03.05.2002 10:45:12
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: schweiz
Kontaktdaten:

Beitrag von suntsu » 15.04.2004 18:21:49

Im Grub hast du das richtige fs angegeben?

Benutzeravatar
Chrissss
Beiträge: 176
Registriert: 05.04.2004 00:23:48

Beitrag von Chrissss » 15.04.2004 22:30:02

fs angeben? Kann/soll man das?

Hier ist der funktionierende Eintrag mit dem Debian Kernel Image:
title Debian GNU/Linux, kernel 2.6.5-1-386
root (hd0,6)
kernel /boot/vmlinuz-2.6.5-1-386 root=/dev/hda7 ro
initrd /boot/initrd.img-2.6.5-1-386
savedefault
boot

Und hier der Eigenbaukernel. Eine initrd wurde nicht erstellt:
title Debian GNU/Linux, kernel 2.6.5
root (hd0,6)
kernel /boot/vmlinuz-2.6.5 root=/dev/hda7 ro
savedefault
boot

Einn Filesystem wird bei den Orginaleinträgen auch nicht angegeben...

Danke
Chrissss[/quote]

Benutzeravatar
Chrissss
Beiträge: 176
Registriert: 05.04.2004 00:23:48

Beitrag von Chrissss » 18.04.2004 22:43:43

Hi!

Ich schieb das Theman noch einmal hoch. Ich bekomme den Kernel einfach nicht richtig gebacken. Egqal was ich mache, ein Eigenbau Kernel bootet immer in ein Kernel Panic.

Finde auch keine weiteren Tips mehr. Die nötigen Dateisysteme sind im Kernel fest eingebunden. Initrd im Kernel an, oder abschalten macht keinen Unterschied. Die Grub menu.lst ist richtig eingerichtet usw.

Vielleicht hat ja jeman noch ne Idee, hier sind mal die wichtigsten Infos:

Die mount Tabelle:
# mount
/dev/hda7 on / type reiserfs (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/hda5 on /windows/daten type ntfs (rw,umask=0)
/dev/hdb1 on /windows/media type ntfs (rw,umask=0)
usbfs on /proc/bus/usb type usbfs (rw)
Die imho wichtigsten Parameter aus der .config
# cat .config |grep REISER
CONFIG_REISERFS_FS=y
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set

# cat .config |grep EXT
...
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT2_FS_SECURITY=y
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
CONFIG_NCPFS_EXTRAS=y

# cat .config |grep INITRD
# CONFIG_BLK_DEV_INITRD is not set <- Egal, on ich hier INITRD aktiviere, oder nicht. Der Kernel bootet nicht
Auszug aus der menu.lst:
# Debian Kernel Image, bootet einwandfrei:
title Debian GNU/Linux, kernel 2.6.5-1-386
root (hd0,6)
kernel /boot/vmlinuz-2.6.5-1-386 root=/dev/hda7 ro
initrd /boot/initrd.img-2.6.5-1-386
boot

# Eigenbau Kernel. Initrd wurde beim compilieren nicht erzeugt.
# Und ist im Kernel auch deaktiviert:
title Debian GNU/Linux, kernel 2.6.5
root (hd0,6)
kernel /boot/vmlinuz-2.6.5 root=/dev/hda7 ro
boot
Danke
Chrissss

Benutzeravatar
suntsu
Beiträge: 2947
Registriert: 03.05.2002 10:45:12
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: schweiz
Kontaktdaten:

Beitrag von suntsu » 19.04.2004 08:31:55

Sieht so aus als wäre die root partition Reiserfs. Hast du das auch fest im neuen Kernenl?

Benutzeravatar
Laril
Beiträge: 5
Registriert: 07.04.2004 16:12:16
Wohnort: Freiburg

Beitrag von Laril » 19.04.2004 09:05:58

Sieht so aus als wäre die root partition Reiserfs. Hast du das auch fest im neuen Kernenl?
Ja. Hat er.

Zwei Sachen fallen mir da ein; sind aber nur Ideen, da ich 2.6.5 bzw. dein System nicht kenne..

Hast du den Kernel völlig selbst konfiguriert oder hast du eine bestehende (Debian-) Konfiguration übernommen? Weil bei ersterem kann ich mir gut vorstellen, dass da noch irgendwas Wichtiges fehlt.
Bei meinem zuletzt erstellten Kernel fehlte bei den Netzwerksachen ein Flag, so dass dann DHCP (Client) mit einer völlig irreführenden Fehlermeldung (Datei /var/run/dhclient.pid existiert nicht) abgebrochen ist.

Ausserdem frage ich mich noch, warum bei der Standardkonfiguration eine initiale Ram-Disk dabei ist? Was wird da gemacht? Vielleicht wird da ein wichtiges Modul geladen?? Schau da doch mal rein:

Code: Alles auswählen

# mount -o loop /boot/initrd.img-2.6.5-1-386 /mnt

Code: Alles auswählen

# cat .config |grep INITRD
# CONFIG_BLK_DEV_INITRD is not set <- Egal, on ich hier INITRD aktiviere, oder nicht. Der Kernel bootet nicht
Das sagt nur, dass es der Kernel unterstützt, erstellen (und in Grub angeben) muss man diese initrd dann immer noch selbst...

Benutzeravatar
Chrissss
Beiträge: 176
Registriert: 05.04.2004 00:23:48

Beitrag von Chrissss » 19.04.2004 17:11:03

Ouch, bitte haut mich :oops:

Man sollte nicht nur die Filesysteme fest eincompilieren, sonder auch IDE Support...Schreibt das bitte FETT ins Wiki :D

Device Drivers -> ATA/ATAPI/MFM/RLL support -> BLK_DEV_IDEDISK [x]

Jetzt gehts, Manno ;)

Danke
Chrissss

Benutzeravatar
Laril
Beiträge: 5
Registriert: 07.04.2004 16:12:16
Wohnort: Freiburg

Beitrag von Laril » 20.04.2004 10:56:06

Ouch, bitte haut mich
*langt mal kräftig hin*

Jetzt besser? :-)


Wie gesagt, wenn man nicht "genau weiss was man tut", dann sollte man eine bestehende Konfiguration bei der Kernel-Kompilierung übernehmen. Habe ich aber auch erst vor kurzem rausgefunden. :-)

Benutzeravatar
Chrissss
Beiträge: 176
Registriert: 05.04.2004 00:23:48

Beitrag von Chrissss » 20.04.2004 18:42:03

Laril hat geschrieben:Wie gesagt, wenn man nicht "genau weiss was man tut", dann sollte man eine bestehende Konfiguration bei der Kernel-Kompilierung übernehmen. Habe ich aber auch erst vor kurzem rausgefunden. :-)
Naja, Von der Config her habe ich ja eigentlich nicht viel falsch gemacht. Hatte ja auch noch die Standard Config des orginal Debian Kernel Images genutzt und ja nichts falsch zu machen. Doch das Problem war die initrd. In praktisch keiner Anleitung steht, dass man diese anlegen muss und erst Recht nicht wie.

mkinitrd -o /boot/initrd.img-2.6.5.img 2.6.5

Damit gehts dann auch mit der Standard .config :)

Servus
Chrissss

Benutzeravatar
TED
Beiträge: 200
Registriert: 03.11.2002 14:24:24
Wohnort: Hannover
Kontaktdaten:

Beitrag von TED » 18.06.2004 19:35:35

ich habe das gleich nur IDE ist schon drin geht aber immer noch nicht, meien Vorgehnsweise gleicht deiner sehr. Ich habe auch versucht die debian config des 2.6.3 zu nutzen. Geht nicht. Wenn ich den debian kernel seine initrd aus grub rausstreiche läuft der auch nicht. Also habe ich ein problem mit mkinitrd. Wobei ich deise :oops: initrd nicht will. ich erstelle sie so

Code: Alles auswählen

mkinitrd -o /boot/initrd-2.6.7.img
aber voher weis der das das die initrd für den 2.6.7 kernel ist?

Sonst kernel bauen läuft bei mir so ab:
sources von kernel.org holen und in /usr/src entpacken
make menuconfig
-Prozessor auswählen, alle Filesysteme rein(habe ext3)[*], ide support rein
make all
make modules_install
nach /boot kopieren und grub anpassen.
error while drinking coffee: wrong or no coffee found; user depends (cup_of_coffee_full >1.0); user halted

vogella
Beiträge: 243
Registriert: 22.06.2004 12:01:00
Wohnort: Heidelberg
Kontaktdaten:

Gleiches Problem mit 2.6.6

Beitrag von vogella » 22.06.2004 21:24:40

Hallo,

ich habe genau das gleiche Problem, wie oben beschrieben, nur leider helfen mir die Tipps nicht. Ich habe meines Wissens alle Möglichkeiten durch probiert.

Inzwischen sieht meine .config so aus:

[code]
Reiser:
CONFIG_REISERFS_FS=y
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set

Ext:
CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR is not set
CONFIG_EXT3_FS=y
# CONFIG_EXT3_FS_XATTR is not set

IDE Support:
CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_IDEDISK_MULTI_MODE is not set
# CONFIG_IDEDISK_STROKE is not set

[/code]


Grub ist IMHO auch korrekt konfiguriert.

[code]

Das hier funktioniert nicht:

title Debian GNU/Linux, kernel 2.6.6
root (hd0,6)
kernel /boot/vmlinuz-2.6.6 root=/dev/hda7 ro
initrd /boot/initrd.img-2.6.6
savedefault
boot

Der hier geht (Standard Debian Sarge
title Debian GNU/Linux, kernel 2.6.6-1-686
root (hd0,6)
kernel /boot/vmlinuz-2.6.6-1-686 root=/dev/hda7 ro
initrd /boot/initrd.img-2.6.6-1-686
savedefault
boot
[/code]

Ich habe mit INITRC probiert (make-kpkg --INITRD kernel_image sowie Flag CONFIG_BLK_DEV_INITRD=y im .config) und ohne Ramdisk mit make-kpkg kernel_image. Jedes mal war ein make-kpkg clean dazwischen.

Da reiser fest im Kernel ist, sollte ich die Ramdisk (INITRD) sowieso nicht brauchen, oder?

Inzwischen habe ich auch die Patches für 2.6.6 eingespielt (Im /usr/src/linux Verzeichnis ../kernel-patches/all/2.6.6/apply/debian) hat aber auch nichts verändert.

Ev. springt ja jemanden ins Auge was ich falsch mache. Hat jemand einen Tipp?

Viele Grüße, Lars

vogella
Beiträge: 243
Registriert: 22.06.2004 12:01:00
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von vogella » 23.06.2004 19:55:47

Hallo,

das Flag PARTITION_ADVANCED darf nicht gesetzt sein. Habe das ganze im Wiki unter http://www.debianforum.de/wiki/?page=Kernelboot zusammengefaßt.

Viele Grüße, Lars

Antworten