Ungültiger EFI-Dateipfad

11

Ich habe gerade Ubuntu 12 auf meinem neuen Laptop (mit vorinstalliertem Win7 64bit) im EFI-Modus installiert und jetzt kann ich Win7 nicht mehr laden (Ubuntu wird nur gut von grub geladen). Wenn ich den Windows 7-Eintrag im Grub-Menü auswähle, wird folgende Fehlermeldung angezeigt:

Invalid EFI file path

Der Eintrag grub.cfg (generiert durch Boot-Repair) lautet:

menuentry "Windows 7 (loader) (on /dev/sda3)" --class windows --class os {
    insmod part_gpt
    insmod ntfs
    set root='(hd0,gpt3)'
    search --no-floppy --fs-uuid --set=root B8449665449625E2
    chainloader +1
}

Dies ist die getrennte Ausgabe:

GNU Parted 2.3
Viene usato /dev/sda
Benvenuti in GNU Parted. Digitare "help" per l'elenco dei comandi.
(parted) print list
Modello: ATA ST9500325AS (scsi)
Disco /dev/sda: 500GB
Dimensione del settore (logica/fisica): 512B/512B
Tabella delle partizioni: gpt

Numero  Inizio  Fine   Dimensione  File system  Nome                  Flag
 5      1049kB  106MB  105MB       fat32                              avvio
 3      345MB   200GB  200GB       ntfs         Basic data partition
 1      200GB   200GB  1049kB                                         bios_grub
 2      200GB   496GB  296GB       ext4
 4      496GB   500GB  4172MB

Die Boot-EFI-Partition, gemountet als

/dev/sda5 on /boot/efi type vfat (rw) ) 

hat die folgenden Dateien (mit Ausnahme des Grub-Ordners und anderer Dateien im Boot-Stammverzeichnis):

./efi
./efi/efi
./efi/efi/boot
./efi/efi/boot/bootx64.efi
./efi/efi/ubuntu
./efi/efi/ubuntu/grubx64.efi
./efi/efi/Microsoft
./efi/efi/Microsoft/Boot
./efi/efi/Microsoft/Boot/bootmgfw.efi.grb
./efi/efi/Microsoft/Boot/bootmgfw.efi
./efi/efi/Microsoft/Boot/bootx64.efi.grb
./efi/efi/Microsoft/Boot/bootx64.efi

Wie kann ich das beheben?

Vielen Dank

Simone Margaritelli
quelle

Antworten:

6

Ihr GRUB-Eintrag für Windows ist für einen Start im BIOS-Modus geeignet, nicht jedoch für einen Start im EFI-Modus. Dies ist ein GRUB-Fehler. Sie können versuchen, den Eintrag durch Folgendes zu ersetzen:

menuentry "Windows 7" {
    insmod part_gpt
    insmod chain
    set root='(hd0,gpt5)'
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

Ich kann nicht garantieren, dass dies funktioniert, aber es könnte sein. Wenn dies der Fall ist, fügen Sie diesen Eintrag hinzu, /etc/grub.d/40_customdamit er bei jeder Aktualisierung der GRUB-Konfiguration durch Ubuntu erneut erstellt wird.

Eine andere Möglichkeit besteht darin, zusätzlich zu oder anstelle von GRUB einen anderen Boot-Manager zu verwenden. rEFInd erkennt beispielsweise automatisch sowohl Windows als auch GRUB. und wenn Sie Kernel mit 3.3.0 oder höher verwenden (wie im Lieferumfang von Ubuntu 12.10 enthalten, jedoch nicht im Lieferumfang von Ubuntu 12.04), können Sie Linux direkt mit rEFInd booten und GRUB vollständig umgehen. gummiboot ist eine weitere Option mit ähnlichen Startfunktionen , erfordert jedoch mehr manuelle Wartung, wenn Sie Linux direkt mit gummiboot starten möchten.

Rod Smith
quelle
Schickt mich mit diesem Menüeintrag von Grub auf einen schwarzen Bildschirm und dann wieder zurück zu Grub :(
Simone Margaritelli
refind gibt mir die Windows-Option, wenn ich es wähle Grub-Menü wird geöffnet Oo
Simone Margaritelli
1
Das klingt so, als hätte Ubuntu den Windows-Bootloader umbenannt und sich an seiner Stelle installiert! Meine Vermutung ist, dass die EFI/Microsoft/Boot/bootmgfw.efi.grbDatei auf dem ESP der echte Windows-Bootloader ist. Wenn Sie sie also bootmgfw.efiin etwas anderes umbenennen und dann bootmgfw.efi.grbwieder in bootmgfw.efi umbenennen, wird dies behoben. Sie können die Dateigröße dieser Dateien EFI/ubuntu/grubx64.efiüberprüfen und überprüfen oder diffzum Vergleichen verwenden. FWIW, Ubuntus Entwickler haben dies möglicherweise getan, um Fehler in einigen EFI-Implementierungen zu umgehen, aber es ist ziemlich ungezogen von ihnen, wenn ja!
Rod Smith
1
Auf meinem Laptop musste ich, set root=(hd0,gpt1)weil dort mein DELL seine EFI-Partition behält.
Mutant Bob
Lassen Sie sich nicht täuschen, denn die automatische Vervollständigung der Registerkarte kann die gpt-Labels usw. sehen, die sie zum Booten verwenden. Das insmod part_gptwird gebraucht. Wenn Sie wegen eines Nicht-Windows-GRUB-Chainloading-Fixes hier sind und Ihr Pfad korrekt ist, ist dies Ihre Antwort.
SleighBoy
2

Endlich habe ich die Formatierung und Neuinstallation von Grund auf gelöst ... im Grunde genommen (ich weiß nicht warum) hatte grub den Windows 7 Loader überschrieben, das war das Problem.

Simone Margaritelli
quelle
1
Ubuntu hatte früher einen Fehler, durch den das ESP gelöscht wurde, aber ich dachte, das war behoben. Vielleicht verweilt es unter bestimmten Umständen. :-( Ein Tipp: Sichern Sie Ihr gesamtes ESP. Wenn etwas Seltsames passiert, können Sie es in Zukunft wiederherstellen. (EFI ist nicht auf Bootsektorcode angewiesen, daher funktioniert eine Sicherung auf Dateiebene einwandfrei.)
Rod Smith