Windows 8 ändert GRUB2 bei jedem Start!

7

Ich habe Windows 8 und Ubuntu 12.10 beide im UEFI-Stil installiert (zuerst Win8, dann Ubuntu). GRUB2 zeigt mir sowohl Ubuntu- als auch Win8-Einträge.

Wenn ich in Ubuntu boote, ist das in Ordnung. Ich könnte jederzeit neu starten, wenn ich GRUB2 unverändert sehe.

Die Geschichte ändert sich, wenn ich Win8 starte. Wenn ich mit GRUB2 zu Win8 starte, gehe ich zum Windows-Boot-Manager (der nur den Windows 8-Eintrag enthält). Ich drücke Windows und es bootet gut. Beim Neustart gibt es weder GRUB2 noch Win Loader. Es hat keinen Bootloader.

Ich habe eine LiveCD gebootet und die Boot-Reparatur heruntergeladen und alles ist zurück. Es ist ein nie endender Zyklus.

Soll GRUB2 den Win Bootloader laden? Was kann ich tun, um das Problem zu beheben?

Mehr Informationen:

USER@MACHINE:~$ ls -l `find /boot/efi -iname "*\.efi"`

-rwxr-xr-x 1 root root 1357480 Dec  9 21:41 /boot/efi/EFI/Boot/bootx64.efi
-rwxr-xr-x 1 root root 1357480 Dec  9 21:41 /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
-rwxr-xr-x 1 root root 1350896 Jul 25 20:57 /boot/efi/EFI/Microsoft/Boot/bootmgr.efi
-rwxr-xr-x 1 root root 1357480 Dec  9 21:41 /boot/efi/EFI/Microsoft/Boot/bootx64.efi
-rwxr-xr-x 1 root root 1263856 Jul 25 20:57 /boot/efi/EFI/Microsoft/Boot/memtest.efi
-rwxr-xr-x 1 root root  897400 Dec  9 21:41 /boot/efi/EFI/ubuntu/grubx64.efi
-rwxr-xr-x 1 root root 1357480 Dec  9 21:41 /boot/efi/EFI/ubuntu/shimx64.efi

USER@MACHINE:~$ ls -l `find /boot/efi -iname "*\.bkp"`

-rwxr-xr-x 1 root root 1354480 Jul 25 20:57 /boot/efi/EFI/Boot/bootx64.efi.bkp
-rwxr-xr-x 1 root root 1354480 Jul 25 20:57 /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi.bkp

USER@MACHINE:~$ sudo parted /dev/sda print

Model: ATA ST31000524AS (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name                          Flags
 1      1049kB  316MB   315MB   ntfs            Basic data partition          hidden, diag
 2      316MB   420MB   105MB   fat32           EFI system partition          boot
 3      420MB   555MB   134MB                   Microsoft reserved partition  msftres
 4      555MB   751GB   750GB   ntfs            Basic data partition
 5      751GB   998GB   248GB   ext4
 6      998GB   1000GB  2000MB  linux-swap(v1)
yxd
quelle
Weitere Informationen finden Sie in meiner "Antwort" für eine Abfrage. Ich kann hier trotz mehrerer Versuche die erforderliche Formatierung nicht eingeben.
Rod Smith

Antworten:

5

Starten Sie Linux, geben Sie die folgenden drei Befehle in eine Shell ein und veröffentlichen Sie die Ausgabe hier:

ls -l `find /boot/efi -iname "*\.efi"`
ls -l `find /boot/efi -iname "*\.bkp"`
sudo parted /dev/sda print

Beachten Sie, dass dies Back-Ticks (links von der Taste "1" bei den meisten Tastaturen) um die findBefehle sind.

Das Ergebnis sollte eine Liste aller Bootloader auf Ihrem ESP sein, einschließlich der regulären Namen und der von Boot Repair erstellten umbenannten Versionen. und eine Liste aller Partitionen auf Ihrer Festplatte.

Welche Art von Computer verwenden Sie? (Marke und Modell.) Wurde es mit Windows 8 geliefert oder haben Sie es selbst installiert?

Leider spielen einige Hersteller mit ihren Bootloadern auf vorinstallierten Windows 8-Computern sehr nervige Spiele. IMHO, diese Installationen wegzublasen und von vorne zu beginnen, sieht immer mehr nach einer guten Lösung aus.


Bearbeiten / Antworten mit neuen Informationen:

Ihre Ausgabe enthält nichts, was seltsam oder unerwartet ist. Es sieht also so aus, als würde etwas in Windows das reparieren, was es als seinen eigenen "kaputten" Bootloader ansieht. Dies erfordert einige Ausarbeitungen, die Ihnen helfen, zu verstehen, was los ist:

Eine EFI-Implementierung (oder UEFI, bei der es sich nur um EFI 2.x handelt) soll NVRAM-Einträge überprüfen, um zu entscheiden, welcher Bootloader (eine Datei mit einer .efiErweiterung) beim Booten ausgeführt werden soll . Einige Implementierungen sind jedoch fehlerhaft und starten nur den EFI/BOOT/bootx64.efioder EFI/Microsoft/Boot/bootmgfw.efiBootloader. Andere booten andere Bootloader, jedoch nur, wenn sie den Namen "Windows Boot Manager" oder "Red Hat Enterprise Linux" haben.

Um diese Art von Fehler zu umgehen, implementiert das Ubuntu Boot Repair-Tool einen Fix, der mindestens so hässlich und verwirrend ist wie der Fehler, den es umgeht: Es benennt diese beiden Standard-Bootloader mit .bkpErweiterungen um, platziert Kopien von GRUB an ihrer Stelle und passt GRUB an Damit werden die Windows-Bootloader mit ihren neuen Namen gestartet. Dadurch wird GRUB gebootet, aber auf eine Weise, die Windows nicht versteht und möglicherweise versucht, sich selbst zu "reparieren". Ich denke, dass dies der Fall ist - wenn Windows startet, wird der Bootloader von einem anderen überschrieben und versucht, das Problem zu beheben.

Ich empfehle Ihnen Folgendes zu versuchen:

  1. Überprüfen Sie auf der Website Ihres Herstellers, ob ein Firmware-Update vorliegt. Wenn dies der Fall ist, aktualisieren Sie Ihre Firmware auf die neueste Version, nur für den Fall, dass eine Fehlerbehebung für diese Art von Startfehler vorliegt.
  2. Starten Sie Windows und starten Sie neu, um sicherzustellen, dass Sie beim Neustart direkt zu Windows wechseln. Sie möchten von diesem Punkt aus beginnen, da dies mehr Standard ist als die Art und Weise, wie Boot Repair eingerichtet wird.
  3. Starten Sie eine Linux-Notfalldiskette im EFI-Modus. (Die Ubuntu-Installations-CD sollte hierfür einwandfrei funktionieren.)
  4. Installieren Sie efibootmgrgegebenenfalls das Dienstprogramm. In der Ubuntu-Live-CD würden Sie dies durch Eingabe tun sudo apt-get install efibootmgr.
  5. Typ sudo efibootmgr -c -l \\EFI\\ubuntu\\shimx64.efi -L "Windows Boot Manager" -p 2. Geben Sie diesen Befehl genau wie angegeben ein, einschließlich der doppelten Backslashes als Trennzeichen für Verzeichnispfade. Dies sollte GRUB so einrichten, dass es als Standard-Bootloader gestartet wird, und ihm die Firmware-Bezeichnung "Windows Boot Manager" geben, falls Sie diesen Fehler haben. (Sie könnten versuchen , mit einem weniger trügerisch Namen, und auf den meisten Systemen , die funktionieren, aber vielleicht nicht für Sie.) Wenn Sie nicht Secure Boot verwenden, könnten Sie ersetzen grubx64.efifür shimx64.efiin diesem Befehl, aber wenn man bedenkt , dass shimx64.efiauf Ihrem System vorhanden ist , Mein Verdacht ist, dass Sie Secure Boot verwenden.
  6. Starten Sie neu und testen Sie es.

Wenn es an diesem Punkt funktioniert, dann großartig. Wenn es Stiefel GRUB aber GRUB können Windows starten, müssen Sie Ihre GRUB - Konfiguration anpassen , so dass es verweist EFI/Microsoft/Boot/bootmgfw.efistatt EFI/Microsoft/Boot/bootmgfw.efi.bkp.

Wenn Sie Ihr System nicht dazu bringen können, GRUB auf diese Weise zu starten, haben Sie möglicherweise eine sehr gehirngeschädigte Firmware in Kombination mit etwas in Windows, das automatisch einen "beschädigten" Bootloader bei jedem Start "repariert" und Ihr Bestes gibt ( wenn auch hässlich) Reparaturweg. In diesem Fall habe ich einige weitere Vorschläge:

  • Wenn der Computer neu genug ist, geben Sie ihn in den Laden zurück und holen Sie sich einen neuen. Machen Sie sowohl dem Geschäft als auch dem Hersteller klar, warum Sie es zurücksenden.
  • Suchen Sie nach dem, was in Windows den Bootloader überprüft und "repariert", und deaktivieren Sie ihn. Sie sollten dann in der Lage sein, Ubuntus Boot Repair zu verwenden oder etwas Ähnliches manuell zu tun, damit alles funktioniert.
  • Erstellen Sie ein zweites ESP und installieren Sie GRUB (oder einen anderen Linux-Bootloader) unter Verwendung der Microsoft-Namen. Durch das Jonglieren von Partitions-ID-Nummern (z. B. mit gdisk - verwenden Sie die tOption im Expertenmenü) können Sie möglicherweise die Firmware dazu bringen, den gewünschten Bootloader zu verwenden, während Windows den eigenen Bootloader überprüft. Dies ist jedoch höchst spekulativ; es könnte überhaupt nicht funktionieren.
  • Erstellen Sie mit meinem rEFInd-Boot-Manager ein USB-Flash-Laufwerk . Sie können es dann in den Computer einstecken und vom USB-Gerät booten, um rEFInd zu erhalten. Dieses sollte dann sowohl Windows als auch GRUB erkennen und Ihnen die Möglichkeit geben, entweder zu booten. Mit einer kleinen zusätzlichen Neukonfiguration können Sie Linux direkt starten. Wenn Sie Ihre Firmware so einstellen können, dass sie standardmäßig vom USB-Gerät startet, können Sie das USB-Laufwerk für eine dauerhafte Lösung dauerhaft angeschlossen lassen.
  • Installieren Sie rEFInd oder GRUB unter Windows. Ich bin mir nicht sicher, aber wenn Sie einen Bootloader von Windows installieren (wie auf der Website von rEFInd beschrieben), wird möglicherweise alles umgangen, was in Windows mit den Bootloadern jongliert, sodass Ihr bevorzugter Bootloader standardmäßig ausgeführt werden kann.

Beachten Sie, dass Sie bei Verwendung einer Lösung, die rEFInd umfasst, diese möglicherweise mit Secure Boot einrichten müssen, wobei Sie durch einige zusätzliche Rahmen springen müssen. (Diese Situation wird sich mit der Zeit verbessern, ist aber vorerst noch etwas umständlich.) Alternativ können Sie Secure Boot in Ihrer Firmware deaktivieren.

Ich hoffe das hilft!

Rod Smith
quelle
0

Versuchen Sie anstelle der empfohlenen Reparatur Folgendes:

  1. Führen Sie Boot-Repair -> Advanced Options -> Untick Backup and rename EFI files-> Tick Restore EFI backups-> Apply aus.
  2. Starten Sie den PC neu
  3. Wenn Windows direkt gestartet wird, richten Sie Ihre UEFI-Firmware (~ BIOS) so ein, dass der UbuntuEintrag gestartet wird, und starten Sie ihn neu.
LovinBuntu
quelle
0

Windows 8 mit aktivierter Funktion für den schnellen Neustart stellt beim Herunterfahren einige Daten, einschließlich EFI-Bootloader, wieder her. Nachdem Sie die Dual-Boot-Umgebung eingerichtet und Windows 8 einmal gestartet haben, gehen Ihre Dual-Boot-Einstellungen beim nächsten Start verloren. Aus diesem Grund müssen Sie die Schnellstartfunktion deaktivieren.

Starten Sie cmd.exe als Administrator und geben Sie Folgendes ein:

powercfg /h off

Überprüfen Sie die Einstellungen:

powercfg /a

Alfioalex
quelle