PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linux und Windows als Dualbootsystem - Probleme mit GRUB



wodim
06.07.09, 20:51
Hallo,

folgendes Problem:

Auf eine HD (SATA - Port1) Linux Installiert (Mint von einer Live - CD, eine Root- und eine Swap - Partition angelegt), erst mal alles ok.

Das Problem trat auf, als ich die zweite HD (IDE, primärer Master) drangesteckt hatte (eine Win2K - Partition, auch bootfähig).

Jetzt bleibt Linux beim Booten hängen - hier der entsprechende Eintrag in der /boot/grub/menu.lst:


title Linux Mint, kernel 2.6.24-16-generic
root (hd0,0)
kernel /boot/vmlinuz-2.6.24-16-generic root=/dev/sda1 ro quiet splash
initrd /boot/initrd.img-2.6.24-16-generic

title Linux Mint, kernel 2.6.24-16-generic (recovery mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.24-16-generic root=/dev/sda1 ro single
initrd /boot/initrd.img-2.6.24-16-generic

title Linux Mint, kernel memtest86+
root (hd0,0)
kernel /boot/memtest86+.bin

"hd0,0" bzw. "/dev/sda1" ist jetzt die Windows - Partition, von der kann er kein Linux booten - soweit klar.

Was muss ich ändern, wenn ich wahlweise das eine oder das andere System booten will?

MiChI8383
06.07.09, 21:59
man grub

http://linuxwiki.de/GRUB
http://wiki.ubuntuusers.de/GRUB
http://www.linuxmint.com/wiki/index.php/How_to_repair_your_grub

wodim
06.07.09, 22:32
Lesen bildet
Deshalb frage ich ja gebildete Leute. ;) Also das Problem liegt noch etwas tiefer: Die Windows - Platte sitzt in einem Wechselrahmen, und ich will Linux auch (wie in der jetzigen Konfiguration) booten können, wenn sie nicht drinsteckt. Wie kann man das "dynamisch" realisieren?

MiChI8383
06.07.09, 22:52
Spontan würde ich sagen Grub auf beiden Platten installieren, anpassen und im Bios die Boot Reihenfolge entsprechend einstellen (wenn erste Platte nicht verfügbar von der zweiten booten...)

wodim
06.07.09, 23:09
Spontan würde ich sagen Grub auf beiden Platten installieren, anpassen und im Bios die Boot Reihenfolge entsprechend einstellen (wenn erste Platte nicht verfügbar von der zweiten booten...)

Nee, das Problem, womit ich ihn da durcheinander gebracht habe (da hab ich erst mal dumm geguckt, da kamen die tollsten Effekte 'raus): Die Windows - Platte (die manchmal nicht verfügbar ist), ist die erste (IDE - Port 1, "Primary Master" / für Linux hd0 bzw. /dev/sda), d.h. wenn die nicht drinsteckt, ist die "zweite" (SATA - Port 1, "Third Master", für Linux hd1 bzw. /dev/sdb) die "erste" (also für Linux hd0 bzw. /dev/sda).

So, und wenn ich jetzt GRUB auch auf der ersten installiere - welche ist dann welche...

Also da hast du mir zu grübeln gegeben...

Dodobo
06.07.09, 23:25
Wooodim, mein Freund, wo warst du. ;)

wodim ist ein Fork von cdrecordui. ;)

Zieh doch einfach immer die sdb-Platte raus. Dann bleibt sda immer sda.

Zum Problem selber hab ich keine Energie. Für einfache Fälle hilft die super grub disk. Da muß man keine Ahnung haben.

Wenn die erste Platte grub hat, dann kannst du da einstellen, dass sie zur zweiten Platte springen soll, wenn du da was booten willst. Ich glaub, dann muß da grub nochmal auf die zweite Platte (ist immer als sdb dem BIOS und Linux bekannt) und das startet dann die entsprechende Partition. Also steck beide Platten an, mach mit der super grub disk die erste Platte bootfähig, dann die zweite, und dann fehlt noch die Verlinkung von der ersten zur zweiten Platte. Vielleicht kriegt das die disk auch noch hin. Einfach einstellen, dass der zweite Booteintrag dann eben sdb statt sda starten soll und die Partition (1 oder 0 oder ...)

wodim
07.07.09, 00:13
Wooodim, mein Freund, wo warst du. ;)
Ja mei - schonmal den Link in meiner Signatur angeklickt? Aber da muss man schon webfest sein. ;) Der ichweißnichtwievielte Hoster, aber mit dem bin ich mir telefonisch ganz schnell einig geworden: Was da drin steht, dafür bin ich verantwortlich und niemand sonst. Übrigens: Mit "Wodim" ging's mir ähnlich wie mit "Melina": Beides "Kunstwörter" - "Wodim" war "Wotan" (auch "Odin" genannt, nordische Mythologie), und "Melina" entstand aus "Memory", "Lindemann" und "Ina" - und dann sagte mir Tante Google, dass das eine ein gängiges Tool und das andere ein gängiger Mädchenname ist. ;)


Wenn die erste Platte grub hat, dann kannst du da einstellen, dass sie zur zweiten Platte springen soll, wenn du da was booten willst. Ich glaub, dann muß da grub nochmal auf die zweite Platte (ist immer als sdb dem BIOS und Linux bekannt)

GRUB ist ja auf der zweiten (hd1 / sdb) - und wenn hd0 / sda nicht da ist, bleibt er hängen (oder fragt mich was ganz Komisches...) - muss nochmal gucken, aber die Protokolldatei (Xorg.0.log) ist ja nach dem nächsten gelungenen Start schon wieder überschrieben, oder?

Und die Wechselplatte muss die erste bleiben (IDE, 80GB, da sind hauptsächlich meine Backups drauf - ja, und auch noch Win2K), und mit der anderen (SATA, 250GB, ganz neu ;) ) arbeite ich halt. Mit Linux - M$ ist also endgültig dabei, einen Kunden zu verlieren, aber das wird Mr. Gates auch überleben. ;)


Also steck beide Platten an, mach mit der super grub disk die erste Platte bootfähig, dann die zweite, und dann fehlt noch die Verlinkung von der ersten zur zweiten Platte. Vielleicht kriegt das die disk auch noch hin.
Einfach einstellen, dass der zweite Booteintrag dann eben sdb statt sda starten soll und die Partition (1 oder 0 oder ...)

Also das müsste hinzukriegen sein - wie die xorg.conf zu manipulieren ist, weiß ich schon ungefähr. ;)

Dodobo
07.07.09, 00:31
Ach weil Win auf hd0 besteht? Da gibt's den map-Befehl, um trotzdem hd1 zu machen und Win hd0 vorzugaukeln. Entsprechend müßte man dann aber wohl hd1 zu hd0 fälschen. Also mußt du wohl in der /etc/fstab noch bissl was umändern von sda auf sdb...

grub müßte ja auch mit grub install Dingens gehen und so schlecht sieht die Konfig ja nicht machbar aus. Aber so ne DAU-CD is schon auch was feines...

HirschHeisseIch
07.07.09, 00:57
Grub kann übrigens auch mit UUIDs umgehen... ;)

Dodobo
07.07.09, 00:59
Hmm, ach deswegen nimmt man die - wenn sich sda/b mal flexibel oder beim Umbau ändert...und ich dacht schon, das wär so neumodisches Zeugs, wo man erst umständlich für nix und wiedernix die Nummer raussucht. ;-)

HirschHeisseIch
07.07.09, 01:28
Nee, die nimmt man, weil neu=besser ist. ;)
Praktischen Sinn hat sowas nicht...

Ausser, man hat einen Anwendungsfall wie der TE. ;)

wodim
07.07.09, 12:21
Hmm, ach deswegen nimmt man die - wenn sich sda/b mal flexibel oder beim Umbau ändert...und ich dacht schon, das wär so neumodisches Zeugs, wo man erst umständlich für nix und wiedernix die Nummer raussucht. ;-)

Nö, das ist nun ganz einfach - händisch geht's so:

sudo blkid


Grub kann übrigens auch mit UUIDs umgehen... ;)

Hm, bist du da sicher? Da war zwar die Installation schon schlau - das ist die fstab:


# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
# /dev/sda1
UUID=adfb10bc-ef11-40c9-a1f7-a67fc06e2742 / ext3 relatime,errors=remount-ro 0 1
# /dev/sda2
UUID=1aa62330-0a45-40b2-af7c-976ab215cbf2 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
/dev/scd1 /media/cdrom1 udf,iso9660 user,noauto,exec,utf8 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0

Aber hier in der /boot/grub/menu.lst:


title Linux Mint, kernel 2.6.24-16-generic
root (hd0,0)
kernel /boot/vmlinuz-2.6.24-16-generic root=/dev/sda1 ro quiet splash
initrd /boot/initrd.img-2.6.24-16-generic

title Linux Mint, kernel 2.6.24-16-generic (recovery mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.24-16-generic root=/dev/sda1 ro single
initrd /boot/initrd.img-2.6.24-16-generic

title Linux Mint, kernel memtest86+
root (hd0,0)
kernel /boot/memtest86+.bin

Hier die root-Einträge "(hd0,0)" und "/dev/sda1" einfach durch die UUIDs ersetzen, funzt nicht - da sagt GRUB, die kennt er nicht.

glako
07.07.09, 12:31
root (hd0,0)
kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/dc79be8b-d4ae-49dc-b3ea-9b08c48e45fe ro vga=791 quiet
initrd /boot/kernel26.img
So muss der Eintrag mit UUID aussehen.Die UUID natürlich auf die eigenen Gegebenheiten anpassen.

HirschHeisseIch
07.07.09, 12:42
Grub selbst kann mittlerweile auch (mehr oder minder) mit UUIDs umgehen...


title Linux Mint, kernel 2.6.24-16-generic
uuid adfb10bc-ef11-40c9-a1f7-a67fc06e2742
kernel /boot/vmlinuz-2.6.24-16-generic root=/dev/disk/by-uuid/adfb10bc-ef11-40c9-a1f7-a67fc06e2742 ro quiet splash
initrd /boot/initrd.img-2.6.24-16-generic

So könnte ein Eintrag aussehen.

wodim
07.07.09, 21:38
So, die drei Menüpunkte funzen jetzt:


title Linux Mint, kernel 2.6.24-16-generic
uuid adfb10bc-ef11-40c9-a1f7-a67fc06e2742
kernel /boot/vmlinuz-2.6.24-16-generic root=/dev/disk/by-uuid/adfb10bc-ef11-40c9-a1f7-a67fc06e2742 ro quiet splash
initrd /boot/initrd.img-2.6.24-16-generic

title Linux Mint, kernel 2.6.24-16-generic (recovery mode)
uuid adfb10bc-ef11-40c9-a1f7-a67fc06e2742
kernel /boot/vmlinuz-2.6.24-16-generic root=/dev/disk/by-uuid/adfb10bc-ef11-40c9-a1f7-a67fc06e2742 ro single
initrd /boot/initrd.img-2.6.24-16-generic

title Linux Mint, kernel memtest86+
uuid adfb10bc-ef11-40c9-a1f7-a67fc06e2742
kernel /boot/memtest86+.bin

Nur der noch nicht:


title MS Windows 2000
uuid 7C44440C4443C79A
chainloader +1

Da kommt:


Booting 'MS Windows 2000'
chainloader +1
Error 13: Invalid or unsupported executable format

Also die richige HD / Partition findet GRUB schon, er "weiß" nur noch nicht, dass da ein Windows - Bootloader drauf ist. Wie bringen wir ihm das noch bei?

kreol
07.07.09, 22:03
13 : Invalid or unsupported executable format
This error is returned if the kernel image being loaded is not recognized as Multiboot or one of the supported native formats (Linux zImage or bzImage, FreeBSD, or NetBSD). Quelle: Grub Manual (http://www.gnu.org/software/grub/manual/grub.html#Stage2-errors).

Versuchs mal mit rootnoverify,


Kreol

wodim
08.07.09, 00:46
Versuchs mal mit rootnoverify,
Hab ich schon versucht, hat's alleine auch noch nicht gebracht. Nach stundenlangem Googeln nur festgestellt, dass viiiiiiiele vor demselben Problem standen / stehen. Und hier die Lösung:

http://www.belug.de/bootloader_grub.html

Die beste Seite, die ich zu GRUB gefunden habe. Etwas 'runterblättern:


Mapping von Festplatten

Mittels mapping kann man vor dem Starten eines Betriebssystem die Festplatten vertauschen (die zweite wird zur ersten und umgekehrt). Dies ist zum Beispiel für Windows nötig, da dies scheinbar immer auf der ersten Festplatte sein will.

Falls Windows zum Beispiel auf der zweiten Festplatte auf der ersten Partion ist sieht der Eintrag wie folgt aus:


title Windows
rootnoverify (hd1,0)
map (hd0) (hd1)
map (hd1) (hd0)
makeactive
chainloader +1
Dieses "Über - Kreuz - Mapping" hd0 <-> hd1 (nicht in der "device.map", sondern direkt in der "menu.lst", und zwar nach "rootnoverify") hat's gebracht!