• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[geloest] Bootmanager Grub sucht immer nach USB Platte

ws1964

Hacker
Hallo zusammen,

Ich habe auf meinem Betriebsrechner/Notebook auf einer externen Festplatte openSuse 11.0 installiert. Auf der eingebauten Festplatte befindet sich das von meiner Firma bevorzugte Windows XP. Waehrend der Linux-Installation wurde der Bootmanager GRUB installiert und liefert mir immer ein schoenes Boot Menue, aber nur, wenn ich auch die externe Festplatte angesteckt habe.
Wie kann ich dem GRUB beibringen, dass wenn keine Platte angesteckt ist, er eben nur das System der eingebauten Platte nutzt?
Oder muss ich den GRUB loeschen, um dann per BIOS von der USB-Platte zu booten?

Das ist ein Schoenheitsfehler, aber wenn ich Windows starten muss, muss ich zum booten die externe Platte anstecken und nach dem boot-Vorgang kann ich sie erst wieder abziehen.

Danke im Voraus.

Wolf
 

towo

Moderator
Teammitglied
Naja, is eigentlich logisch, weil du Grub in den MBR der internen Platte installiert hast.
Wenn die USB-PLatte nicht da ist, findet Grub seine Konfig-Files nicht.
 

josef-wien

Ultimate Guru
Du mußt:

1. Grub in den MBR der USB-Platte installieren (geht auch mit YaST).
2. Mit Windows-Mitteln den MBR der internen Platte wiederherstellen.
3. Im BIOS die Boot-Reihenfolge "zuerst USB, dann intern" einstellen.

Ist dann die USB-Platte angesteckt, wird davon Grub gestartet. Ist die USB-Platte nicht angesteckt, wird von der internen Platte Windows gestartet.
 

Rainer Juhser

Moderator
Teammitglied
Treito schrieb:
Was Dir fehlt ist eine Boot-Partition auf der internen Festplatte, dann sollte es gehen.

josef-wien schrieb:
Du mußt:

1. Grub in den MBR der USB-Platte installieren (geht auch mit YaST).
2. Mit Windows-Mitteln den MBR der internen Platte wiederherstellen.
3. Im BIOS die Boot-Reihenfolge "zuerst USB, dann intern" einstellen.

Ist dann die USB-Platte angesteckt, wird davon Grub gestartet. Ist die USB-Platte nicht angesteckt, wird von der internen Platte Windows gestartet.

Aber Obacht! Nichts durcheinanderwürfeln - eine von beiden Lösungen reicht aus!
 

josef-wien

Ultimate Guru
Da gibt es nichts zum "durcheinanderwürfeln". Eine bootfähige Partition auf der internen Festplatte ist ja nach wie vor vorhanden. Aber der MBR zeigt nicht darauf, sondern auf die USB-Platte. Und die USB-Platte hat mit hoher Wahrscheinlichkeit noch keinen passenden MBR.
 

Treito

Hacker
josef-wien schrieb:
Da gibt es nichts zum "durcheinanderwürfeln". Eine bootfähige Partition auf der internen Festplatte ist ja nach wie vor vorhanden. Aber der MBR zeigt nicht darauf, sondern auf die USB-Platte. Und die USB-Platte hat mit hoher Wahrscheinlichkeit noch keinen passenden MBR.

Nein es gibt eben zwei Möglichkeiten.
Meine Möglichkeit setzt halt eine zusätzliche Boot-Partition mit 100MB, besser 200MB voraus, Grub auf den MBR der internen Platte und somit wäre Grub immer da, egal, ob die USB-Platte dransteckt oder nicht.

Deine Lösung sieht halt vor, das "Bootmedium" zu ändern, wenn die USB-Platte dranhängt.
 

Rainer Juhser

Moderator
Teammitglied
Treito schrieb:
Nein es gibt eben zwei Möglichkeiten.
Meine Möglichkeit setzt halt eine zusätzliche Boot-Partition mit 100MB, besser 200MB voraus, Grub auf den MBR der internen Platte und somit wäre Grub immer da, egal, ob die USB-Platte dransteckt oder nicht.

Deine Lösung sieht halt vor, das "Bootmedium" zu ändern, wenn die USB-Platte dranhängt.
Richtig - genau das hatte ich mit "durcheinanderwürfeln" gemeint! :D

Leute, nichts für ungut, aber denkt bitte bei euren Lösungsbemühungen daran, dass ihr es oft mit Einsteigern zu tun habt, die dann nicht immer erkennen können, ob die Vorschläge zusammengehören oder ob da mehrere Lösungswege beschrieben werden. ;)
 

josef-wien

Ultimate Guru
Treito schrieb:
Nein es gibt eben zwei Möglichkeiten.
Du hast recht, aber eine eigene Boot-Partition ist im vorliegenden Fall meinen Gedanken ferngeblieben. Grundsätzlich ist das ein Lösungsweg, aber hier empfehle ich ihn auf keinen Fall, schließlich handelt es sich um einen Firmen-PC, dessen Partitionierung nicht geändert werden soll.

Treito schrieb:
Deine Lösung sieht halt vor, das "Bootmedium" zu ändern, wenn die USB-Platte dranhängt.
Ja, aber das macht das BIOS bei richtig eingestellter Boot-Reihenfolge automatisch.
 

Treito

Hacker
Okay, das mit dem Firmen-PC habe ich in der Tat überlesen, da wäre die Installation von Grub auf der ext. Platte wohl besser.
 
OP
ws1964

ws1964

Hacker
Hallo zusammen,

Erst einmal vielen Dank fuer die Antworten.
Ich werde erst einmal die "Rueckkehr" meines privaten Rechners aus der Reparatur abwarten und wenn dann alles dort wieder laeuft, werde ich eure Ratschlage mal so kombiniert abarbeiten.
Also den Grub vollstaendig loeschen oder MBR mittels Windows-tools wieder herstellen. Da das BIOS die Bootreihenfolge auch auf die USB-Platte umlenken kann, wird dann bei angesteckter USB-Platte openSuse 11.0 wohl starten.

Versuch macht klug.
schade nur, dass man dem Grub einfach dass nicht erklaeren kann... Aber vielleicht bei einer der naechsten Versionen ;)

Danke nochmals.

Wolf
 

josef-wien

Ultimate Guru
"Einfach" ist immer ein relativer Begriff. Und ohne ein bißchen Hintergrundwissen ist auch das Einfache kompliziert.

Nach dem Einschalten des PC versucht das BIOS, auf Grund der im Setup getroffenen Einstellungen und auf Grund seiner internen Logik einen boot-fähigen Sektor zu finden. Bei Festplatten wird zuerst im MBR jeder Festplatte gesucht, danach in den Boot-Sektoren aller oder nur der primären oder nur der aktivierten Partitionen. Der erste gefundene boot-fähige Sektor wird verwendet.

Du hast bei der Installation ausgewählt, Grub in den MBR jener Platte zu installieren, die im BIOS als erste Platte definiert ist (diese Vorgabe-Einstellung ist ja in den meisten Fällen auch sinnvoll). Das war zu diesem Zeitpunkt Deine interne Platte. Ein Boot-Sektor ist natürlich viel zu klein (und der Platz im MBR ist noch geringer), um darin viel Logik zu speichern, daher steht dort im Wesentlichen drinnen, auf welchem physischen Sektor welcher Platte (laut der vom BIOS vorgegebenen Reihenfolge) der Beginn der eigentlichen Logik gespeichert ist. Bei Dir ist dies ein Sektor der USB-Platte, und wenn diese nicht angeschlossenen ist, kannst Du den PC nicht starten.

Die "einfache Lösung" in Deinem Fall wäre gewesen, bei der Installation festzulegen, Grub in den MBR der USB-Platte zu installieren. Genau das mußt Du jetzt nachholen, um Deine speziellen Anforderungen zu erfüllen. Und Du mußt den ursprünglichen MBR Deiner internen Platte wiederherstellen, um Windows auch ohne USB-Platte starten zu können.

Die bessere Lösung wäre gewesen, bereits vor der Installation das künftige Szenario im BIOS einzustellen: erste Boot-Platte=USB, zweite Boot-Platte=intern. Das darfst Du jetzt aber erst dann machen, nachdem Grub in den MBR der USB-Platte installiert ist, oder wenn Du Grub danach manuell installierst: http://www.linux-club.de/viewtopic.php?f=4&t=100589&p=612947#p612947

Nachdem Du die Änderungen erfolgreich über die Bühne gebracht hast, solltest Du auf jeden Fall im laufenden System als root die Datei /boot/grub/device.map löschen und mit den Befehlen
Code:
grub
quit
neu erstellen lassen.
 
OP
ws1964

ws1964

Hacker
Hallo Mr. Josef Wien,

ich habe nun ein zweites System auf einem neuen Rechner, somit kann ich experimentieren.

josef-wien hat geschrieben:Du mußt:

1. Grub in den MBR der USB-Platte installieren (geht auch mit YaST).
2. Mit Windows-Mitteln den MBR der internen Platte wiederherstellen.
3. Im BIOS die Boot-Reihenfolge "zuerst USB, dann intern" einstellen.

Ist dann die USB-Platte angesteckt, wird davon Grub gestartet. Ist die USB-Platte nicht angesteckt, wird von der internen Platte Windows gestartet.
Habe ich gemacht in der Reihenfolge, Windows startet, aber auf der externen HD wird kein OS gefunden.

Dann folgendes:
Suse DVD eingelegt - Repair Installed System - Option gewaehlt und den Bootmanager eingerichtet in den MBR
Damit war alles beim alten und ich konnte beide Systeme wieder starten.
Im YaST dann denn Grub wie folgt konfiguriert:
- Aus Root partition booten
In den Bootloader Optionen "Aktives Flag in Partitionstabelle fuer Bootoptionen setzen" und "Generischen Bootcode in MBR schreiben".
Die Ratschlaege von Dir
Code:
grub
quit
durchgefuehrt.
Neustart System.
Grub war weg Windows lief.
Zweiter neustart - USB-HD zum booten angemelded und dann kam Fehler:
Code:
hd(1.1) /boot/message file not found
Error 17: Cannot mount selected partition

Ratschlag:
Die bessere Lösung wäre gewesen, bereits vor der Installation das künftige Szenario im BIOS einzustellen: erste Boot-Platte=USB, zweite Boot-Platte=intern. Das darfst Du jetzt aber erst dann machen, nachdem Grub in den MBR der USB-Platte installiert ist, oder wenn Du Grub danach manuell installierst: http://www.linux-club.de/viewtopic.php?f=4&t=100589&p=612947#p612947
befolgt und es so gemacht.
Keine Fehler.. Grub hat brav gearbeitet.
Neustart, aber der Fehler bleibt.

Was oder wie bekomme ich die /boot/message hin?
Oder was mache ich falsch?

Ach ja,
Beim booten von der externen HD kommt erst der Fehler:
Code:
hd(1.1) /boot/message file not found
und dann kommt das boot menue mit den Optionen SUSE 11.0 und Failsafe
Waehle ich irgend eine Option aus dann kommt der Fehler
Code:
root (hd1,1)
 Filesystem unknown, partition type 0x12
kernel.....
ERROR 17: cannot mount selected Filesystem


Danke

Wolf
 

Treito

Hacker
Was mir sofort ins Auge sticht:
hd (1.1) ist falsch, wenn dann müsste das hd(1,1) heißen, wobei ich mich jetzt nicht festlegen werde, ob die Nummern stimmen, der Punkt muss aber definitiv durch ein Komma ersetzt werden.
 
OP
ws1964

ws1964

Hacker
Treito schrieb:
Was mir sofort ins Auge sticht:
hd (1.1) ist falsch, wenn dann müsste das hd(1,1) heißen, wobei ich mich jetzt nicht festlegen werde, ob die Nummern stimmen, der Punkt muss aber definitiv durch ein Komma ersetzt werden.

Sorry,

Ich hatte mich hier im Beitrag verschrieben. Es ist definitiv ein Komma.

Aber ich gebe folgendes ein, nachdem ich den GRUB verschoben habe:

Code:
grub
grub> find /boot/grub/stage1
.  (hd1,1)
grub> root   (hd1,1)
root (hd1,1)
.  Filesystem type is ext2fs, partition type 0x83
grub> setup (hd1)
setup (hd1)
.  Checking if "boot..../stage1" exists...yes
.  Checking if "boot..../stage2" exists...yes
.  Checking if "boot..../e2fs_stage1_5" exists...yes
. Running "embed /boot/grub/stage1 (hd1) (hd1)1+15 p (hd1,1)/boot/grub/stage2 /boot/grub/menu.lst"...succeeded
Done.
quit
grub> quit
setup (hd0)
quit

Wolf
 

Treito

Hacker
ws1964 schrieb:
Code:
root (hd1,1)
 Filesystem unknown, partition type 0x12
kernel.....
ERROR 17: cannot mount selected Filesystem

Da passt doch was nicht! Welches Dateisystem soll das denn sein?! Wie ist die Platte partitioniert?!
 
OP
ws1964

ws1964

Hacker
Treito schrieb:
Da passt doch was nicht! Welches Dateisystem soll das denn sein?! Wie ist die Platte partitioniert?!
[/quote]

Stimmt, da passt was nicht :)

Filesystem ist wie oben geschrieben
Code:
 Filesystem type is ext2fs,
nachdem was mir Grub so sagt.

Aber wenn ich die Platte an mein zweites System anstoepsele, dann sagt mir das System, es ist ext3.
Hmm, daran erinnere ich mich auch.
Nur wie sag ich's dem Grub?

Wenn ich den Grub wieder in den MBR der internen Platte schreibe, kann ich linux wie gewohnt starten.
Kein Problem.
Nur will ich den Grub auf der externen Platte haben, damit die USB-HD nicht immer angestoepselt ist.

Wolf
 

Treito

Hacker
Also noch einmal, wie ist die Platte partitioniert?!

Nachtrag: Und noch etwas: Wenn Du direkt per BIOS von der USB-Platte booten willst, musst Du nach der Installation von Grub auf der USB-Platte in der menu.lst hd(1,1) durch hd(0,1) ersetzen.
 
Oben