Das Upgrade auf Windows 10 führte zur Rettung von Grubs

75

Ich habe Windows 7 und Linux Ubuntu auf meinem Desktop doppelt gebootet und heute haben sie kostenlose Windows 10-Upgrades herausgegeben. Wie aufregend! Ich habe das Update bekommen und es wurde installiert und bin gegangen, um ein 30-minütiges Nickerchen zu machen. Als ich jedoch zu meinem Computer zurückkehrte, führte mich dies zur Aufforderung zur Rettung der Maden.

error: no such partition.
Entering rescue mode...
grub rescue>

Beim Tippen erhalte ich Folgendes ls:

grub rescue> ls
(hd0) (hd0,msdos5) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)

Nach einem kurzen Blick durch die Leute, die auf die Aufforderung zur Rettung von Maden gestoßen waren, gab ich setFolgendes ein und bekam Folgendes

grub rescue> set
cmdpath=(hd0)
prefix=(hd0,msdos6)/boot/grub
root=hd0,msdos6

Ich war immer noch irgendwie verloren, nachdem normalich festgestellt hatte , dass bestimmte Befehle wie nicht funktionierten, und dann fand ich ein Video-Tutorial, in dem Sie von einer Linux-Image-CD booten und einige Befehle auf dem Terminal ausführen. Zum Glück hatte ich meine CD dabei und bootete von dort. Als ich jedoch sudo fdisk -lin das Terminal eintippte, bekam ich Folgendes:

ubuntu@ubuntu:~$ sudo fdisk -l

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc03ede74

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda2          206848  1547022335   773407744    7  HPFS/NTFS/exFAT
/dev/sda3      1547022336  1547943935      460800   27  Hidden NTFS WinRE
/dev/sda4      1547945982  1953521663   202787841    f  W95 Ext'd (LBA)
/dev/sda5      1915731968  1953521663    18894848    7  HPFS/NTFS/exFAT

Sagt hier, keines meiner Geräte hat das Linux-System in sich! Und ich konnte dem Video-Tutorial nicht mehr folgen ...

Ich neckte mein Gehirn ein wenig und stellte fest, dass sda2 mein Windows-System enthielt (da ich mich erinnere, dass mein C: -Laufwerk ungefähr 700 GB Speicherplatz hat). Nachdem ich ein wenig nachgedacht habe, erinnere ich mich, dass ich bei der Installation von Ubuntu etwa 200 GB Festplattenspeicher für etwas reserviert habe, das mit Ubuntu zu tun hat. Ich erinnere mich nicht genau an welche, aber ich denke, es war im Grunde genommen Ubuntus "Festplattenspeicher" und es waren keine Boot-Dateien darin. Ich habe zwei andere Dinge für Linux zugewiesen, aber sie waren sehr klein (die 1-GB-Marke wurde noch nicht überschritten).

Kann mir hier jemand helfen, mein Upgrade wieder in Gang zu bringen? Es würde mir nichts ausmachen, wenn ich die Partitionen, auf denen Linux installiert ist, komplett entfernen müsste.

LChaos2
quelle
1
Wenn es sich bei der LInux-Partition um eine logische Partition handelt, schreibt Windows die Partitionstabelle nicht mit. Testdisk verwenden. Einige haben testdisk verwendet, um es wiederherzustellen und grub auf MBR neu installiert und hatten alles wieder normal. Sie müssen jedoch alle Partitionen korrekt als primäre und logische Partitionen einschließen, damit dies funktioniert. cgsecurity.org/wiki/TestDisk_Step_By_Step
oldfred
Im obigen Layout sieht es so aus , als wären am Ende der Festplatte nach der neuen /dev/sda5oder (hd0,msdos5)Partition nur noch 3505 Sektoren übrig , was nur 1,7 MB entspricht, sodass sich die Linux-Partition dort kaum verstecken könnte. Meine beste Vermutung wäre, dass der Linux-Partitionseintrag irgendwie an diesen Ort verschoben wurde (# 5 statt # 6) und dass sein Typ aus unerklärlichen Gründen geändert wurde. Das erste, was Sie versuchen sollten, war ls (hd0,msdos5)/die GRUB-Rettungsaufforderung.
Josip Rodin
1
ein Grund mehr, kein Windows zu benutzen, ein solches ignorantes Betriebssystem
Aydin K.

Antworten:

64

Auf meinem Computer war Windows 8 vorinstalliert, daher habe ich die Windows-Partition verkleinert, um Platz für Ubuntu zu schaffen. So hat es im letzten Jahr funktioniert. Nach dem zweiten Neustart in Windows 10 wurde der Computer nicht mehr gestartet. GRUB zeigte nur eine grub rescueEingabeaufforderung an. Ich habe später herausgefunden, dass das Problem aufgetreten ist, weil Windows das Partitionsschema irgendwie geändert hat. Die Boot-Partition (mit normalen GRUB-Daten) befand sich nicht mehr dort, wo GRUB dies erwartet hatte. Ich weiß nicht wie und warum das passiert ist.

Als erstes können Sie im Rettungsmodus die Partitionen mit dem lsBefehl anzeigen . Meine waren:

  • (hd0, gpt1),
  • (hd0, gpt2),
  • usw.

Versuchen Sie herauszufinden, welche Partition Ihre Startpartition ist. Es gibt keine TabVervollständigung, Sie müssen es komplett ausschreiben. Ich habe die folgenden Befehle ausprobiert, bis ich die richtige Partition gefunden habe:

ls (hd0,gpt1)/
ls (hd0,gpt1)/boot
ls (hd0,gpt2)/

usw.

Geben Sie dann setdie gleiche Eingabeaufforderung ein. Es wird angezeigt, wo GRUB nach seinen Dateien sucht. In meinem Fall ist (hd0, gpt6) auf (hd0, gpt7) umgezogen. Der gesetzte Befehl wird angezeigt:

prefix=(hd0,gpt6)/boot/grub
root=hd0,gpt6

Um wieder zu normalem GRUB zurückzukehren, ändern Sie zunächst die prefixEinstellung so, dass sie auf die richtige Partition zeigt. In meinem Fall lautete der Befehl:

set prefix=(hd0,gpt7)/boot/grub

Dann können Sie vom Rettungsmodus in den normalen Modus wechseln:

insmod normal
normal

Man hätte die rootEinstellung auch korrigieren können mit:

set root=(hd0,gpt7)

Dies ist jedoch nicht unbedingt erforderlich, da es für Windows-Kettenladeeinträge keine Rolle spielt. Sobald Sie sich im normalen GRUB-Menü befinden, können Sie Windows starten und das Windows-Upgrade abschließen. Das Problem ist, dass Sie grub rescue bei jedem Neustart über die richtigen Partitionen informieren müssen. So habe ich es gemacht. Ich habe das Problem von GRUB für später aufgegeben, da ich nicht sicher war, ob Windows weitere Änderungen an den Partitionen oder am Start vornehmen würde.

Als Windows fertig war, fing ich an, GRUB-Probleme zu lösen. Drücken Sie e, um die Startoptionen für Ubuntu zu bearbeiten. Ich habe alles (hd0,gpt6)auf geändert (hd0,gpt7)und Ubuntu gebootet.

Ich verwende jedoch verschlüsselte Partitionen und Cryptswap. Beim Booten fragte mich Ubuntu nach der Passphrase. Zum Glück habe ich es bei der Installation von Ubuntu gespeichert und beim Booten eingegeben. Ubuntu bootete ohne Probleme.

Ich korrigierte dann die /boot/grub/grub.cfgDatei , wo ich ersetzt (hd0,gpt6)mit (hd0,gpt7)und durchgeführt:

sudo grub-install

Zu diesem Zeitpunkt war das einzige verbleibende Problem die Verschlüsselung. Da die Root-Ubuntu-Partitionsnummer um eins erhöht wurde (7 statt 6), wurde die Swap-Partition ähnlich geändert. Ich musste die /etc/crypttabDatei ändern , um auf /dev/sda8anstatt zu zeigen /dev/sda7.

Ich benutze nur zwei Partitionen für Ubuntu (root und swap). Wenn andere mit Windows koexistierende Betriebssysteme mehr Partitionen verwenden, sind möglicherweise weitere Änderungen erforderlich. Insbesondere, wenn Partitionen nach ihrer Anzahl und nicht nach ihren UUIDs gemountet werden. Schauen Sie sich Ihre an /etc/fstab. Wenn die Partitionen durch die UUID identifiziert werden, sollte es keine Probleme geben. Wenn jedoch /dev/...Zeilen vorhanden sind , sollte die Nummer korrigiert werden, wenn diese Partitionen neu nummeriert wurden.

niemand
quelle
2
Das war eine großartige Antwort für mich. Ich hatte keine Ubuntu-CD und aktualisierte mein Windows von 8.1 auf 10 und hatte das gleiche Problem. Diese Antwort wird mir extra gutgeschrieben, da ich sie einfach eingeben und weitermachen konnte, bis das Update abgeschlossen war. Danke, dass du meinen Speck aufgehoben hast.
Dibs
2
Diese Lösung funktionierte perfekt für mich, als Win 10 entschied, sich selbst zu aktualisieren und die Boot-Rekorde durcheinander brachte (mein Upgrade von 7 auf 10 verlief
reibungslos
9
Versucht die ls (hd0,msdos1)/ ls (hd0,msdos1)/boot ls (hd0,msdos2)/ etc.für alle Einträge von lsBefehl, und jedes Mal, wenn es mit kommt error: unkown filesystem.
Jacques MALAPRADE
2
Danke, das hat geholfen. Eine Sache, die mir nicht klar war (weil ich Ubuntu und Grub neu bin), war, dass das Editieren der Grub-Konfiguration nach dem Booten von Ubuntu durchgeführt werden musste (und nicht in den Mini-Emacs, die das Speichern nicht unterstützen) Datei anscheinend.) Also habe ich gebootet, dann die Konfiguration bearbeitet sudo nano /boot/grub/grub.cfgund dann ausgeführt sudo grub-install /dev/sda(aus irgendeinem Grund ist der Aufruf ohne den Parameter für mich fehlgeschlagen). Und nur dann haben die permanenten Veränderungen funktioniert.
Nikita G.
1
Versuchte ls (hdo, msdos1) usw. für alle Einträge. Holen Sie sich Fehler unbekanntes Dateisystem
Ashley G
13

Das Installieren (oder Aktualisieren) von Windows neben Linux kann problematisch sein.

Versuchen Sie Folgendes: https://help.ubuntu.com/community/Boot-Repair



Ich habe es verwendet, um ein Problem zu beheben, nachdem ich die technische Vorschau von Windows 10 installiert hatte, und es hat funktioniert. Grundsätzlich wird grub neu installiert, um mit allen derzeit installierten Betriebssystemen zu funktionieren. Stellen Sie sicher, dass Sie grub auf Ihrer Linux-Partition installieren (sd #).

Viel Glück!

Patrick
quelle
Hallo! Vielen Dank, dass Sie sich die Zeit genommen haben, uns zu helfen! Ich bin mir eigentlich nicht sicher, um welche Partition es sich handelt! Aber ich werde ein bisschen herumspielen, um zu sehen, ob es funktioniert.
LChaos2
Kein Problem! Immer gerne helfen.
Patrick
Hallo! Also habe ich die Boot-Reparatur-Diskette gebootet und die empfohlene Reparatur verwendet. Ich habe es getan und meinen Computer neu gestartet, aber es bringt mich zum Windows-Start-Manager und teilt mir mit, dass eine kürzlich vorgenommene Hardware- oder Softwareänderung möglicherweise eine Datei installiert hat, die falsch signiert oder beschädigt ist. Die Datei lautet \ Windows \ system32 \ winload.exe, Status 0xc0000428. Wenn ich die Eingabetaste drücke, rufe ich den Start-Manager auf und wähle das zu startende Betriebssystem aus, wobei nur Windows 7 angezeigt wird. Wenn ich unter Windows 7 die Eingabetaste drücke, kehre ich zum selben Fehlerbildschirm zurück, was zu einer Schleife führt.
LChaos2
Nach einigen Nachforschungen scheint der Fehlercode (0xc000428) damit zu zusammenhängen, dass winload.exe nicht von einer digitalen Signatur überprüft wird. Sagt es etwas darüber aus?
Patrick
1
Gibt es ein Update zur Situation bei LChaos2?
HG8
10

Erstellen Sie vor dem Ändern von Partitionen ein Backup und speichern Sie es auf einem anderen Gerät. Wenn nicht, wechseln Sie zum korrekten Laufwerk. Dann können Sie von vorne beginnen, wenn Sie einen falschen Satz mit testdisk wiederherstellen. Sie möchten nur, dass beim Wiederherstellen mit testdisk alle aktuellen und fehlenden logischen Elemente vorhanden sind.

sudo sfdisk -d /dev/sda > parts.txt

Ihre fehlende Partition ist hier oder zwischen dem Start der erweiterten Partition um 1547 ... und der ersten Partition um 1915 ...:

/dev/sda4      1547945982  1953521663   202787841    f  W95 Ext'd (LBA)
/dev/sda5      1915731968  1953521663    18894848    7  HPFS/NTFS/exFAT

Sie können testdisk verwenden, es wird jedoch CHS verwendet. Sie müssen alle vorhandenen Partitionen und die fehlende Partition als logisch auswählen. Es werden möglicherweise viele Versionen angezeigt, je nachdem, wie oft Sie die Partitionen gewechselt haben. Wählen Sie also die Größe, die der fehlenden entspricht, ohne andere aktuelle Partitionen zu überlappen. Einige, die korrekt wiederhergestellt wurden, konnten nur booten, andere müssen grub neu installieren. Und einige konnten die Wiederherstellungspartition nicht korrigieren.

http://www.cgsecurity.org/wiki/TestDisk_Step_By_Step

Ein weiteres Wiederherstellungstool ist die getrennte Rettung. Es werden Sektoren verwendet, aber der von Ihnen angegebene Bereich muss sich nur außerhalb der fehlenden Partition befinden und darf sich nicht mit den aktuellen Partitionen überschneiden. Am besten, wenn Sie Start und Ende genau kennen. Siehe Mann getrennt

http://www.gnu.org/software/parted/manual/html_node/rescue.html

Benutzer, der die Teilrettung verwendet hat:

http://ubuntuforums.org/showthread.php?t=1775331&p=10905969#post10905969

oldfred
quelle
3
Ich traf genau das gleiche Problem und teilte zeigt "freien Speicherplatz", wo es Linux gab. Rette mit von / bis vom "freien Platz" und ext4 ist wieder da!
Speedogoo
3
Ich möchte nur sagen, dass gparted freien Speicherplatz zeigte, wo früher ext4 war. Lief auseinander, setze Sektoren, drucke Partitionen, rette mit dem von / bis des "freien Platzes" (vergiss nicht, ein s für Sektoren zu deinen Werten hinzuzufügen) und ext4 war zurück, genau wie @speedogoo. Es ist überhaupt nicht nötig, mit Maden herumzuspielen.
Amedee Van Gasse
2
Was macht Windows 10 mit der Partitionstabelle, da mehr Leute Partitionen vermissen? In meinem Fall befand sich ext4 in einer logischen Partition.
Amedee Van Gasse
Vielen Dank für diesen Breadcrumb. Ich konnte die verlorene Linux-Partition meiner Frau mithilfe von Parted Rescue wiederherstellen. Ein Grub-Install später waren wir wieder in Aktion.
bheeshmar
7

Es ist ein böser Fehler im Windows-Partitionierer und nicht Linux-spezifisch. Es löschte ironischerweise eine NTFS-Partition in meinem Fall.

Das Windows 10-Installationsprogramm erstellt eine neue Partition (Ihre /dev/sda3), die am Ende der Windows-Hauptpartition erstellt wurde, sda2wenn die Windows-Startpartition sda1zu klein ist, um die Windows 10-Wiederherstellungsumgebung aufzunehmen.

Wenn die Partitionstabelle zu diesem Zweck neu geschrieben wird, gibt sie für jede logische Partition in der erweiterten Partitionstabelle auf sda4, wenn sie sich vor der vorherigen Partitionsnummer auf dem Datenträger befindet.

In Ihrem Fall befanden sich Ihre Linux-Partitionen auf Ihrer Festplatte vor Ihrer neuen sda5, hatten jedoch höhere Partitionsnummern als sda5vor der Neupartitionierung.

Wenn Sie die umfangreichen Windows 10-Aktualisierungsprotokolle durchsehen, sehen Sie eine Meldung wie "6 vor 5, nichts zu tun", zusammen mit der alten und der neuen Partitionstabelle.

Windows überschreibt nicht den Inhalt der Partitionen, die es löscht. Sie können diese also wiederherstellen, wenn Sie feststellen, wo sie sich befinden. In meinem Fall hatte ich Sicherungen der Partitionstabelle, aber die Verwendung von testdisk, wie in oldfreds Antwort erläutert , hat eine hervorragende Chance, alle zu finden. Parted Rescue ist nur schwer zu verwenden, da in Ihrem Fall mehr als eine Partition gelöscht wurde.

Um testdisk von Ihrer Ubuntu Live-CD zu verwenden, geben Sie ein Terminal ein sudo apt-get install testdisk, um es zu installieren und sudo testdiskauszuführen.

Nach dem Reparieren der Partitionstabelle hat die Linux-Partition, die GRUB enthält, möglicherweise eine andere Nummer als zuvor, sodass Sie möglicherweise immer noch an der GRUB-Rettungsaufforderung landen. In diesem Fall kann GRUB nun durch Boot Repair behoben werden.

Geben Sie unter Verwendung Ihrer Ubuntu Live-CD Folgendes ein:

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

zu installieren und auszuführen.

Jetzt kann Windows das Upgrade abschließen.

Martin Thornton
quelle
Vielen Dank für die klare Erklärung des Problems, das hat mir sehr geholfen. Ich war in der gleichen Situation wie in der Frage beschrieben. Allerdings konnte testdisk die gelöschte Linux-Partition nicht finden. Für mich hat Parted Rescue den Trick gemacht und ich konnte das Windows 10-Upgrade anschließend fortsetzen
bis zum
"Windows überschreibt nicht den Inhalt der Partitionen, die es löscht" Wie kann das sein? Die neue Partition, die sie für mich erstellt hat (nachdem sie meine Linux-Partitionen beendet hat), hat die gesamte Festplatte belegt. Bedeutet das nicht, dass Schreibvorgänge überall hingehen könnten?
Greg Bell
Ich kann nicht ausdrücken, wie sehr ich dich liebe
Aviggiano
1

Um Boot-Repair zu verwenden, müssen Sie im BIOS Folgendes einstellen:

  • Aktivieren Sie UEFI (in meinem BIOS ist es :)

    Legacy-Unterstützung deaktiviert

  • Deaktivieren Sie Secure Boot

Wahrscheinlich ist Secure Boot aktiviert, sodass der Fehler "Falsch signierte Datei" angezeigt wird.

Iacobus
quelle