PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grub dreht durch?!?



cPu
01.12.06, 22:13
Hallo.

Kurze Einleitung, damit jeder im Bilde ist.
Ich habe ein IBM ThinkPad T42 mit einer Dockingstation (in welcher ich eine 2. Festplatte eingebaut habe).

Ich habe nun frisch fröhlich ~20 Stunden meines Lebens dafür benutzt die LFS-Dokumentation durchzuackern unm Linux aus den Quellen zu installieren.

Die Festplatte, welche im Notebook eingebaut ist, wird unter Linux als hda erkannt, die Festplatte, welche in der Dockingstation eingebaut ist, als hde.

Mein Bios hab ich so konfiguriert, dass es zuerst die Platte in der Dockingstation bootet und danach die im Notebook (dadurch wird, wenn sich das Notebook nicht in der Dokingstation befindet, automatisch Windows gebootet, ohne dass der Grub jemals auftaucht. Wenn ich das Notebook mit der Dockingstation verbunden habe erscheint Grub und ich kann zwischen Linux und Windows wählen).

Die LFS-Installation funktionierte wunderbar, jedoch will mein Grub nicht so richtig arbeiten.

Meine /boot/grub/menu.lst sieht wie folgt aus:

# Begin /boot/grub/menu.lst
# By default boot the first menu entry.
default 0

# Allow 10 seconds before booting the default.
timeout 10

# Use prettier colors.
color green/black light-green/black

# The first entry is for Windows.
title Microsoft Windows XP Professional
rootnoverify (hd0,0)
chainloader +1

# The second entry is for LFS
title Linux From Scratch v6.2
root (hd1,2)
kernel /boot/lfskernel-2.6.16.27 root=/dev/hde4

Das ganze endet, wenn ich windows booten möchte mit "Partition nicht gefunden" und wenn ich Linux starten möchte, mit demselben.

Jetzt das interessante: Wenn ich die Laufwerkszahlen umdrehe (aus hd0 wird hd1 und umgekehrt) tut sich was! Bei Windows bleibt es hängen und Linux beginnt zu starten - beendet sich allerdings gleich selbst durch eine unschöne Kernel-Panic. (Da stimmt was mit der root-Partition nicht, ... Keine Ahnung was da noch falsch ist).

Hoffe, es kann sich mal kurz jemand in meine Plattenreihenfolge reindenken und mir da mal weiterhelfen, damit ich mal mein LFS starten kann :)

Anbei würde mich noch interessieren, was mit root=/dev/hde4 genau gemeint ist, ich hab nur mal den Begriff Initial-RAM-Disc gelesen, kann aber nicht viel damit anfangen.

Hoffe auf eure Mitarbeit,
cPu

hp_tux
01.12.06, 23:07
Hallo,

nun, was sagt denn

fdisk -l

Gruß

hp_tux

cPu
02.12.06, 10:59
lfslivecd:root | Sa 02 Dez 2006 11:54:09 CET | ~
# fdisk -l

Platte /dev/hda: 40.0 GByte, 40007761920 Byte
240 Köpfe, 63 Sektoren/Spuren, 5168 Zylinder
Einheiten = Zylinder von 15120 × 512 = 7741440 Bytes

Gerät boot. Anfang Ende Blöcke Id System
/dev/hda1 * 1 4526 34216528+ 7 HPFS/NTFS
/dev/hda2 4527 5168 4853520 12 Compaq Diagnostics

Platte /dev/hde: 40.0 GByte, 40007761920 Byte
255 Köpfe, 63 Sektoren/Spuren, 4864 Zylinder
Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes

Gerät boot. Anfang Ende Blöcke Id System
/dev/hde1 * 1 124 995998+ 82 Linux Swap / Solaris
/dev/hde2 * 125 2116 16000740 83 Linux
/dev/hde3 * 2117 4864 22073310 83 Linux
lfslivecd:root | Sa 02 Dez 2006 11:54:13 CET | ~
#

Wobei hde2 noch mit vfat formatiert wird (das soll dann eine Austauschplatte werden).

cPu

El-Biero
02.12.06, 12:13
Hallo
für windows füge mal in die grub.menu.lst makeaktiv ein also so
title Windows
rootnoverify (hd0,0)
makeactive
chainloader +1
Bei linux probiere mal
root (hd1,2)
kernel /boot/vmlinuz-2.6.16.27 root=/dev/hde3
initrd /boot/initrd-2.6.16.27.img -<od hier deinen ganzen Namen von /boot/initrdbla,bla eingeben
PS wie der Kernel und die initrd genau heist siest unter ls /boot
root liegt laut deinen fdisk unter /dev/hde3
Tschüß Gerhard

El-Biero
02.12.06, 13:40
Hallo noch mal
hab mir mal von lfs das pdf gezogen und ein bisserl gschöckert. Hast du beim kernel bei Blockdevices Initial RAM Disk fix einkompilliert od nur als Modul genommen die gehört in den Kernel. Kurz gesagt damit legt er ein rootdateisystem in den ram damit er Module bzw Treiber laden kann die er fürs booten des eigentlichen Rootdateisystem benötigt. Dazu müsstest aber eine kleine Bootpartition in der ersten Festplatte anlegen.Wirst du aber nicht brauchen, da Grub ( er liegt bei dir im MBR von der 2ten hd) ja bei dir bootet
PS die Kernelzeile sollte so bei dir mit /dev/hde3 passen
kernel /boot/lfskernel-2.6.16.27 root=/dev/hde3 und wennst keine initrd angelegt hast kannst die Zeile einfach mit einen # auskommentiern in der menu.lst.
Tschau Gerhard

cPu
02.12.06, 14:00
So sieht mein boot-Ordner aus (hab die Platte nur schnell nach /mnt gemountet):

# ls /mnt/boot/
config-2.6.16.27 grub lfskernel-2.6.16.27 System.map-2.6.16.27

initrd hab ich keine angelegt.

So sieht meine menu.lst jetzt aus:

# Begin /boot/grub/menu.lst

# By default boot the first menu entry.
default 0

# Allow 10 seconds before booting the default.
timeout 10

# Use prettier colors.
color green/black light-green/black

# The first entry is for Windows.
title Microsoft Windows XP Professional
rootnoverify (hd0,0)
makeactive
chainloader +1

#The second entry is for LFS
title Linux From Scratch v6.2
root (hd1,2)
kernel /boot/lfskernel-2.6.16.27 root=/dev/hde3

Nach einem Neustart meldet sich Grub in freundliuchem Grün und bei Auswahl von "Microsoft Windows XP Professional" kommt die Meldung

Booting 'Microsoft Windows XP Professional'

rootnoverify (hd0,0)
makeactive
chainloader +1

Error 13: Invalid or unsupported executable format

Press any key to continue..

Durch die Auswahl von "Linux From Scratch v6.2" erscheint

Booting 'Linux From Scratch v6.2'

root (hd1,2)

Error 22: No such partition

Press any key to continue..

So, .. jetzt bin ich aber mal mit meinem Latein am Ende :)

cPu

caspartroy
02.12.06, 14:28
wenn von hde gebootet wird, ist das hd0.
einfach hd0 durch hd1 ersetzen und umgekehrt.
(daher auch der fehler bei hd(0,0), das ist swap)

cPu
02.12.06, 23:00
Hallo.

Ja, jetzt hab ichs umgedreht, mit folgendem Ergebnis:
Windows: Jetzt stehen meine Optionen da und der Cursor blinkt... und blinkt... und blinkt...

LFS: Linux wird gefunden und er beginnt zu booten, hört aber gleich wieder auf mit der Meldung:

VFS: Cannot open root device "hde3" or unknown block (0,0)
Please append a correct "root=" boot option
Kernel panic-not syncing: VFS Unable to mount root fs on unknown-block(0,0)

Wenn ich anstelle von hde3 hda3 einsetze, steht anstelle von (0,0) eben (3,3)

Bitte um Rat,
cPu

tictactux
03.12.06, 00:10
geh doch in den interaktiven Modus von grub am Bootprompt (Taste e) und benutze TAB (completion) für Disk- und Dateinamen um die richtig zu haben.
Nach erfolgreichem Booten kannst Du dann die menu.lst korrekt anpassen.
Beachte auch den Befehl device im Grub-Handbuch (inmter List of general commands), der praktisch ist wenn man die Laufwerkszuordnung durch das BIOS verändert.

caspartroy
03.12.06, 11:47
tja, dann ahst du wohl keine treiber für den festplattencontroller im kernel

cPu
03.12.06, 12:04
hmm... das hab ich mir auch gedacht, aber ich hab ihn jetzt mal neu gebacken und anscheinend hat sich nichts geändert...

Ich tippe nämlich auch darauf, dass mir dieser Treiber fehlt.

Aber warum bei Windows nur der Cursor blinkt und _nichts_ passiert ist mit trotzdem noch ein Rätsel. Kann es daran liegen, dass ich Windows nur vom Hibernate-Modus starte?

edit: Ich hab hier mal meine config hochgeladen: Meine Kernel-config (http://rafb.net/paste/results/AlAYfm39.html)

Ich hab ein IBM Thinkpad T42. Vielleicht kann das jemand rauslesen, ob ich da die notwendigen Treiber aktiviert habe...

caspartroy
03.12.06, 12:19
das liegt evtl daran, dass windows die installation in der ersten platte erwartet und dort nicht findet. auf der grub site und hier im forum gibts tipps dazu, sowas wie
map (hd0) (hd1)
map (hd1) (hd0)

könnte helfen, für die genaue syntax nochmal in der grub-doku nachlesen.

um herauszufinden, welchen treiber du brauchst, studier die ausgabe von lsmod bei einer live-cd

cPu
03.12.06, 12:26
also lspci -v gibt mir bei ide folgendes aus:

00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01) (prog-if 8a [Master SecP PriP])
Subsystem: IBM Thinkpad R50e model 1634
Flags: bus master, medium devsel, latency 0, IRQ 11
I/O ports at <unassigned>
I/O ports at <unassigned>
I/O ports at <unassigned>
I/O ports at <unassigned>
I/O ports at 1860 [size=16]
Memory at 30000000 (32-bit, non-prefetchable) [size=1K]


und weiter unten steht nochmal

09:01.0 IDE interface: Silicon Image, Inc. PCI0648 (rev 01) (prog-if 8f [Master SecP SecO PriP PriO])
Subsystem: Silicon Image, Inc. PCI0648
Flags: bus master, medium devsel, latency 64, IRQ 11
I/O ports at 9020 [size=8]
I/O ports at 9014 [size=4]
I/O ports at 9018 [size=8]
I/O ports at 9010 [size=4]
I/O ports at 9000 [size=16]
Capabilities: [60] Power Management version 1

Wobei ich jetzt glaube, dass ich das aktiviert habe...

El-Biero
03.12.06, 13:19
Hallo noch mal
Wie sieht deine fstab aus? Hast ein Diskettenlaufwerk? Kannst von der livecd ein chroot durchführen? Ich glaube wie oben einer gesagt hat stimmt irgendwas mit den hd Beizeichnungen nicht (da wenn du hd1 als erstes startest dürfte die als hd0 erkannt werden). Wenn nicht starte mit einer knoppix mach in einer Konsole mal mkdir /mnt/LFS dann mounte deine lfspartition mit mount /dev/hde3 /mnt/LFS danach ein chroot /mnt/LFS/bin/bash jetzt machst ein cat /boot/grub/stage[12] > /dev/fd0 damit hast einen grub auf der floppy. Natürlich must dann im bios umstellen das er zuerst von der floppy bootet schau mal was dann passiert. Leichter ist es natürlich wennst den grub in den MBR der 1ten hd schmeisst mit das geht indem du grub aufrufst und
grub> setup --stage2=/grub/stage2 (hd0) eingibst. Falls windows nicht mehr startet sollest es mit der windowscd wieder unter der reparaturkonsole mit fixmbr od fixboot den mbr wiederherstellen können

El-Biero
03.12.06, 13:30
Hallo
benütze vorher noch den Tip von tictactux mit der grubconsole. also mal
grub> kernel (hd1,2)/boot/ /boot/lfskernel-2.6.16.27 root=/dev/hde3
[Linux-bzImage, setup=0xe00, size=0x4797] hier sollte dein Kernel erscheinen
grub> boot
PS kannst die tab Taste verwenden wenn er keinen kernel findet dann probier (hd0,0)
Noch was wenn hda hd0 ist
dann ist hdb hd1
hdc hd2 usw hde ist dann hd4

cPu
03.12.06, 14:51
Hallo.

So sieht meine fstab aus:

# Begin /etc/fstab

# file system mount-point type options dump fsck
# order

/dev/hde3 / ext3 defaults 1 1
/dev/hde2 swap swap pri=1 0 0
/dev/hde1 /mnt/share vfat defaults 0 0
/dev/hda1 /mnt/windows ntfs ro,exec,user 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
devpts /dev/pts devpts gid=4,mode=620 0 0
shm /dev/shm tmpfs defaults 0 0

# End /etc/fstab

Ich hab das mit der grub-console mal ausprobiert:
Mir ist dabei aufgefallen, wenn ich nach "root=/dev" auf Tab drücke kommt der Fehler: Error 11 Unrecognized devise String.
Wenn ich es trotzdem ausführe kommt bei mir:
[Linux-bzImage, setup=0x1c00, size=0x23a62e]

Wenn ich dann boot ausführe startet er frisch fröhlich und würgt sich selbst wieder mit dem Folgenden ab:

VFS: Cannot open root device "hde3" or unknown block (0,0)
Please append a correct "root=" boot option
Kernel panic-not syncing: VFS Unable to mount root fs on unknown-block(0,0)

Das Mit der floppy werd ich mal ausprobieren :) (Zum Glück hab ich bei ebay um 1€ mir mal ein floppy für meine dockingstation ergattert *freude*)

Wobei ich mittlerweile eher auf die Theorie von caspartroy vertraue. Ich hab zum Backen des Kernels eine Anleitung benutzt, welche eh hier im Forum vorhanden ist: http://www.linuxforen.de/forums/showthread.php?t=161878
Aber ich tu mir dabei irgendwie schwer herauszufinden, ob ich die richtigen IDE Treiber aktiviert habe und fix in den Kernel kompiliert habe.

Vielleicht kann mir da jemand unterstützen, config und IDE-Devices hab ich im Post #11 und #13 gepostet.

so, jetzt mach ich mal das mit der Floppy ...
edit: Das mit der Floppy probiert. er bootet, das ist gut, dann hab ich wieder alles eingegeben und jetzt steh ich vor einer neuen Frage: was soll ich bei root= eingeben?
Wenn ich nach root= auf Tab drücke kommt wieder dieser Error 11. Soll ich jetzt die wirkliche hde3 angeben, oder wird diese als hda erkannt und hda3 wäre richtig, oder vertaucht er das dann mit der 1. Partition und es wäre hda1 bzw. hde1....

Hab mal alle Varianten durchprobiert, mit folgendem Ergebnis:

root=hda1:

VFS: Mounted root (ntfs filesystem) readonly
Freeing unused kernel memory: 188k freed
Warning: Unable to open an initial console.
Kernel Panic - not syncing: No init found. Try passing init= option to kernel

root=hda3:

VFS: Cannot open root device "hde3" or unknown block (3,3)
Please append a correct "root=" boot option
Kernel panic-not syncing: VFS Unable to mount root fs on unknown-block(3,3)

root=hde1:

VFS: Cannot open root device "hde3" or unknown block (0,0)
Please append a correct "root=" boot option
Kernel panic-not syncing: VFS Unable to mount root fs on unknown-block(0,0)

root=hde3:

VFS: Cannot open root device "hde3" or unknown block (0,0)
Please append a correct "root=" boot option
Kernel panic-not syncing: VFS Unable to mount root fs on unknown-block(0,0)

cPu

suck
03.12.06, 16:19
Wobei ich mittlerweile eher auf die Theorie von caspartroy vertraue. Ich glaub nicht dran, aber du kannst das leicht testen. Nimm doch einfach den Kernel der Live-CD, der ja bekanntlich geht.

Sollte die Festplatte über einen SATA-Treiber angesprochen werden (ich vermute nein), macht es bzw. einen hier relevanten Unterschied, ob du den alten Treiber (unter IDE zu finden) nimmst oder den "richtigen" Treiber im SCSI-Submenu (ab Kernel 2.6.19 im neuen S-ATA Menu).

caspartroy
03.12.06, 16:52
Ich glaub nicht dran, aber du kannst das leicht testen. Nimm doch einfach den Kernel der Live-CD, der ja bekanntlich geht.


also, aus den angaben ist zu sehen:

hda = (hd1) ist die windows platte.
grub findet den kernel! tab etc ist daher unnötig. (nur ein gestarteter kernel kann fehlermeldungen machen)
der kernel liegt auf (hd0), die probierten hdex gibt es nicht, das ist die bedeutung der fehlermeldungen!


warum gibt es die nicht?
entweder gibt es die partitionen nicht (eher unwahrscheinlich ;-) )
oder es gibt hde nicht, weil
kein treiber geladen
die platte z.B. sda heisst, weil dein kernel statt einem ide, einen scsi treiber verwendet.

letzteres ist nicht unwahrscheinlich, der silicon image eintrag könnte ein sata controller sein, für den es beide treiber gibt.

caspartroy
03.12.06, 16:55
# CONFIG_SCSI_SATA_SIL is not set
das könnte der passende treiber sein

cPu
03.12.06, 17:13
wie kann ich die nun im nachhinein aktivieren?
Muss ich jetzt alles nochmal eintippen oder kann ich irgendwie meine bisherige config-Datei benutzen?

cPu

suck
03.12.06, 17:23
letzteres ist nicht unwahrscheinlich, der silicon image eintrag könnte ein sata controller sein, für den es beide treiber gibt.Ich hab so einen Controller (Sil 3112 SATA). lspci würde was anderes melden und ausserdem sollte die Live-CD dann nicht den IDE-Treiber nutzen. Deshalb halte ich es für unwahrscheinlich (aber möglich).

@TE: Sicher doch mal deinen Kernel und kopier einfach den Kernel der Live-CD nach /boot/lfskernel-2.6.16.27. Dann wissen wir sofort, ob dein Kernel falsch konfiguriert ist.

cPu
03.12.06, 18:29
Sicher doch mal deinen Kernel und kopier einfach den Kernel der Live-CD nach /boot/lfskernel-2.6.16.27. Dann wissen wir sofort, ob dein Kernel falsch konfiguriert ist.

Gesagt getan: Jawohl, er bootet und es liegt an meinem verbackten Kernel.

Dann mach ich mal schleunigst nen neuen Kernel. Wär super, wenn mir jemand zu meinem letzten Post (#20 (http://www.linuxforen.de/forums/showpost.php?p=1465430&postcount=20)) weiterhelfen kann,

Danke suck für den guten Tipp,
cPu

suck
03.12.06, 19:20
Der Dank gebührt caspartroy

Was den Kernel angeht: "# CONFIG_IDE_GENERIC is not set" ist schonmal falsch. Aktivier das mal und wähle aus den nun erscheinenden Chipsatztreibern den Passenden (oder einfach alle) aus.

caspartroy
03.12.06, 19:25
Ich hab so einen Controller (Sil 3112 SATA). lspci würde was anderes melden und ausserdem sollte die Live-CD dann nicht den IDE-Treiber nutzen. Deshalb halte ich es für unwahrscheinlich (aber möglich).

@TE: Sicher doch mal deinen Kernel und kopier einfach den Kernel der Live-CD nach /boot/lfskernel-2.6.16.27. Dann wissen wir sofort, ob dein Kernel falsch konfiguriert ist.

woher weisst du, was lspci da meldet? das kann alles mögliche sein, je nachdem wer den chip verbaut hat! und der scsi-treiber ist verhältnismäßig neu, wenn die live-cd etwas älter ist, benutzt die wahrscheinlich den ide treiber

übrigens unterstützt der scsi (und auch der ata) treiber nicht nur sil 3112

der ata-treiber heisst afaik siimage

suck
03.12.06, 19:38
woher weisst du, was lspci da meldet? das kann alles mögliche sein, je nachdem wer den chip verbaut hat!Das stimmt schon. Ich hab mich an dem "IDE interface" orientiert und schloss dann S-ATA aus.


und der scsi-treiber ist verhältnismäßig neuNa ja, ein paar Jährchen hat der schon auf dem Buckel.

caspartroy
03.12.06, 19:57
Na ja, ein paar Jährchen hat der schon auf dem Buckel.

hast recht, ich meine der ata-treiber für serial ata ist erst seit kurzem deprecated.