Wie kann Grub nach einer Neuzuweisung des Laufwerks wieder funktionieren?

7

Meine Konfiguration: opensuse 11.4, Boot-Partition bei Pendrive und Festplatten mit Partitionen sda1, sda2, sdb1.

Heute habe ich das Gehäuse für meinen Computer gewechselt und versehentlich das zweite Laufwerk an SATA 3 anstelle von SATA 2 angeschlossen. Das zweite Laufwerk war also nicht richtig montiert. Ich habe den Computer ausgeschaltet, richtig angeschlossen und dann mein Problem gestartet.

Jetzt kann ich das System überhaupt nicht booten. Früher habe ich das Booten von einem Wechseldatenträger im BIOS (pendrive) eingestellt, aber jetzt scheint es, dass der Computer (BIOS) pendrive nicht als Wechseldatenträger erkennt, sondern als normale Festplatte. Es wird also nicht für "Wechseldatenträger" gestartet. Wenn ich die Startreihenfolge ändere und auswähle, von der Festplatte zu booten (und die erste Festplatte als pendrive festgelegt habe) oder wenn ich direkt über das Startmenü den Start von pendrive einstelle, wird in GRUB eine Fehlermeldung angezeigt, die in den Rettungsmodus wechselt.

Ich vermute, dass pendrive aus irgendeinem Grund nicht mehr als Wechselmedium erkannt wird, sondern Festplatten und Festplatten unterschiedlich zugeordnet sind und ich die Zuordnungen korrigieren sollte.

Ich kann das CD-Installationsprogramm booten und pendrive mounten, um den Inhalt der Grub-Konfiguration anzuzeigen, aber wenn ich mich im Grub-Rettungsmodus befinde und "ls" ausführe, erhalte ich

(hd0) (hd0, msddos1) (hd1) (hd1, msddos2) (hd1, msdos1) (hd2) (hd2, msddos1)

Aber ich sehe das Mapping nicht, also weiß ich nicht, was hd0 wirklich bedeutet. Ich kann nur vermuten, dass hd1 hier sda ist, weil es 2 Partitionen hat (wenn das Suffix msdsos ein Hinweis auf Partitionen ist).

Wie kann ich Grub wieder zum Laufen bringen?

Greenoldman
quelle

Antworten:

7

Das Problem liegt wahrscheinlich darin, dass grub USB-Festplatten beim Booten anders sieht als einmal auf einem laufenden System. So könnten Sie es lösen:

Wenn Sie booten (normalerweise von der Festplatte) und grub angezeigt wird, öffnen Sie die grub-Konsole (normalerweise tun Sie dies nur durch Drücken von c). Beginnen Sie an der Eingabeaufforderung von grub mit der Eingabe root (hd:

grub> root (hd

Drücken TabSie dann und Sie sehen die Datenträger als mögliche Vervollständigungen. Wählen Sie die Festplatte und Partition aus, auf der Sie sich /bootbefinden. Wenn Sie sich nicht sicher sind, gehen Sie bei jedem Verdacht wie folgt vor:

  • (Beenden Sie den rootBefehl, um die Partition auszuwählen, und drücken Sie Enter)
  • tippen Sie ein cat /und drücken Sie Tab. Sie sehen die Liste der Dateien auf der Partition.
  • Entscheiden Sie anhand der Liste der Dateien, ob es sich um Ihre Partition handelt, die den Kernel enthält (unter /boot/).
  • Wenn nicht, drücken Sie Escund beginnen Sie von vorne.

Sobald Sie herausgefunden haben, wie bekannt ist, dass die Partition grub ist, können Sie den Bootloader (mit dem setupBefehl) erneut installieren und auf die richtige Partition / Dateien in Ihrem /boot/grub/menu.lst oder verweisen /boot/grub/grub.conf(Sie müssen bestimmen, welche dieser Partitionen Ihre Version verwendet oder nur) machen sie das gleiche enthalten).


[Bearbeiten]: Auf Anfrage von Macias finden Sie hier weitere Informationen zum Beheben des MBR mithilfe von grub:

Ein Weg , um wieder zu installieren , den MBR auf einem Laufwerk grubist der setupBefehl , den ich oben erwähnt. Dies ist ein Befehl, der den Grub-Versionen 0.9X bekannt ist ( siehe Dokumentation ). Sie scheinen jedoch den neueren Zweig von grub (1.9X) zu verwenden, und die Befehle dafür sind unterschiedlich. Schauen Sie sich die entsprechende Dokumentation an - in dieser Version können Sie grub mit dem grub-installDienstprogramm auf dem MBR installieren, und ich bin mir nicht sicher, ob es einen anderen Weg gibt - wie bei grub-0.97. Vielleicht nicht und vielleicht ist das einer der Gründe, warum viele Distributionen die "Legacy" -Version bevorzugen.

rozcietrzewiacz
quelle
Vielen Dank für die Antwort, aber dies ist eine theoretische Lösung, dh "Wenn Sie booten (normalerweise von der Festplatte)". Ich boote nicht von der Festplatte, ich boote vom Pendrive, es gibt keinen Grub auf der Festplatte. Der Befehl "root" funktioniert nicht mit meinem Grub oder mit Grub im Rettungsmodus. Wenn ich versuche, ihn auszuführen, erhalte ich den Befehl "unbekannt".
Greenoldman
Ok, ich habe nicht verstanden, dass Sie Grub auf USB installiert hatten, aber es ändert nichts. Was tut etwas ändern ist die Version von graben Sie haben. Außerdem ist Ihre Frage bei allen Änderungen unverständlich geworden. Bitte lesen Sie sie selbst und bereinigen Sie sie. Lassen Sie dabei die Beschreibung des aktuellen Problems .
Rozcietrzewiacz
Es ist sicher Grub1, ich schließe diese Frage vorerst, weil sich das Problem jetzt woanders verschoben hat und wahrscheinlich nur ich dieses Problem von Anfang an vollständig lösen kann.
Greenoldman
Nun, vielleicht ist es eine gute Idee - Sie können dann einfach eine neue Frage stellen, wenn die Situation klarer wird. Denken Sie bei meiner Antwort daran, dass grub USB-Festplatten beim Booten anders aufzählen kann als beim Start von einem laufenden System . Hoffe das hilft!
Rozcietrzewiacz
Ich habe bereits eine Frage zum letzten Lösungsschritt gestellt (meine Lösung wird komplex sein). Unix.stackexchange.com/questions/18237/… Ich habe bereits bemerkt, dass grub Partitionen unterschiedlich auflistet. Was seltsam ist, variieren die Partitionsnummern auch zwischen den Laufwerken habe (hd0,1) auf original pendrive und (hd0,0) auf ersatz pendrive.
Greenoldman
2

Die Datei menu.lstwird nur von Grub-Legacy verwendet. Sie scheinen grub2 zu verwenden, das grub.cfgstattdessen verwendet. Grub2 arbeitet auch lieber ohne a device.map, daher können Sie dies auch löschen und dann grub neu installieren.

psusi
quelle
Vielen Dank für die Antwort, ich habe keine grub.cfg und ich bezweifle, dass es Grub2 ist (wie haben Sie das gesagt?). Für die Neuinstallation von grub muss das System ausgeführt werden, oder? Ich kann das System nicht ausführen, da grub nicht funktioniert. Wenn ich es zum Laufen bringen könnte, wäre es (per Definition) nicht erforderlich, es erneut zu installieren (weil es funktionieren würde).
Greenoldman
@macias es sieht aus wie grub2, weil grub Legacy Partitionen ab Null auflistet, also die erste Partition, die es als (hd0,0) identifiziert. Für die Neuinstallation von grub ist ein laufendes System erforderlich, das Sie durch Booten von etwas anderem als der HD mit dem defekten Grub erhalten können.
Psusi
1

Die Lösung für dieses Problem ist zweifach. Das eine ist das Reparieren von Grub, das andere das Reparieren von MBR.

Der erste ist ziemlich einfach (?). Führen Sie Ihren Computer mit der Installations-CD (openSUSE!) Aus, wählen Sie "Rettungsmodus". Sobald der Rettungsmodus ausgeführt wird, melden Sie sich als root an (es ist kein Kennwort erforderlich), schließen Sie pendrive an, mounten Sie es (wie zum Beispiel ~ / pendrive) und gehen Sie zu ~ / pendrive / grub und bearbeiten Sie zwei Dateien: device.map und menu.lst. In beiden Dateien muss nach Einträgen (hdX) gesucht werden, bei denen X (normalerweise) 0 und 1 ist. In meinem Fall musste ich einfach alle 0 gegen 1 und alle 1 gegen 0 tauschen.

Ich weiß nicht, wie ich MBR auf einfache Weise reparieren kann, aber ich hoffe, Rozcietrzewiacz wird eine Lösung finden :-) Für alle Fälle ist es schwierig, sich ein anderes Pendrive und eine andere Festplatte zu schnappen, alle regulären Festplatten abzuziehen und durchzuführen "gefälschte" Installation, die die ursprüngliche nachahmt. Wenn alles einwandfrei funktioniert hat und Ihr neues "gefälschtes" System hochgefahren ist, ist es an der Zeit, MBR-Sektoren vom funktionierenden Pendrive zum nicht funktionierenden zu kopieren (siehe: So erstellen Sie die Boot-Partition auch mit grub vollständig neu? ). Sie tun es wie unten erklärt:

"Hier gehe ich davon aus, dass / dev / sdb Ihr ALTES Pendrive und / dev / sdc das NEUE ist - ersetzen Sie diese durch geeignete Gerätenamen, da Sie sonst sogar Ihr gesamtes System durcheinander bringen können!

dd if=/dev/sdc bs=512 count=1 of=/dev/sdb

"( Lösung von Rozcietrzewiacz )

Diese beiden Schritte sind alles, was Sie brauchen, damit Ihr Grub nach der Neuzuweisung der Festplatte wieder funktioniert.

Greenoldman
quelle