Percorso file EFI non valido


11

ho appena installato Ubuntu 12 sul mio nuovo laptop (con Win7 64 bit preinstallato) in modalità EFI e ora non riesco più a caricare Win7 (Ubuntu si carica semplicemente da grub). Quando seleziono la voce di Windows 7 nel menu di grub, ottengo questo errore:

Invalid EFI file path

La voce grub.cfg (generata da boot-repair) è:

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
}

Questo è l'output parted:

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

La partizione EFI di avvio, montata come

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

contiene i seguenti file (esclusa la cartella grub e altri file nella radice di avvio):

./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

Come posso risolvere questo problema?

Grazie

Risposte:


6

La voce di GRUB per Windows è appropriata per un avvio in modalità BIOS, ma non per un avvio in modalità EFI. Questo è un bug di GRUB. Puoi provare a sostituire la voce con qualcosa di simile al seguente:

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

Non garantisco che funzionerà, ma potrebbe. In tal caso, aggiungi quella voce in /etc/grub.d/40_custommodo che venga nuovamente creata ogni volta che Ubuntu aggiorna la sua configurazione di GRUB.

Un'altra opzione è quella di utilizzare un boot manager diverso in aggiunta o al posto di GRUB. rEFInd, ad esempio, rileverà automaticamente sia Windows che GRUB; e se stai usando i kernel 3.3.0 o successivi (forniti con Ubuntu 12.10, ma non con Ubuntu 12.04), puoi avviare Linux direttamente con rEFInd, bypassando completamente GRUB. gummiboot è un'altra opzione con funzionalità di avvio simili, ma richiede maggiore manutenzione manuale se si desidera avviare Linux direttamente con gummiboot.


Usando quella voce di menu, mi invia da grub a uno schermo nero e poi di nuovo a grub :(
Simone Margaritelli,

refind mi dà l'opzione windows se lo scelgo grub viene aperto il menu Oo
Simone Margaritelli

1
Sembra che Ubuntu abbia rinominato il boot loader di Windows e si sia installato al suo posto! Il mio sospetto è che il EFI/Microsoft/Boot/bootmgfw.efi.grbfile su ESP sia il vero caricatore di avvio di Windows, quindi rinominarlo bootmgfw.efiin qualcos'altro e quindi rinominarlo bootmgfw.efi.grbin bootmgfw.efi lo risolverà. È possibile controllare le dimensioni di questi file e di EFI/ubuntu/grubx64.efiverificarlo oppure utilizzare diffper confrontarli. FWIW, gli sviluppatori di Ubuntu avrebbero potuto farlo per aggirare i bug in alcune implementazioni EFI, ma è piuttosto cattivo di loro, se è così!
Rod Smith,

1
Sul mio laptop ho dovuto farlo set root=(hd0,gpt1)perché è lì che il mio DELL mantiene la sua partizione EFI.
Mutante Bob,

Non farti ingannare dal pensare perché il completamento automatico della scheda può vedere le etichette gpt, ecc. Che le utilizzerà per l'avvio. Il insmod part_gptè necessario. Se sei qui per una correzione del chainloading non Windows GRUB e il tuo percorso è corretto, questa è la tua risposta.
SleighBoy,

2

Finalmente ho risolto la formattazione e la reinstallazione di tutto da zero ... sostanzialmente (non so perché) grub aveva sovrascritto il caricatore di Windows 7, questo era il problema.


1
Ubuntu aveva un bug in cui avrebbe cancellato l'ESP, ma ho pensato che fosse corretto. Forse è persistente in alcune circostanze. :-( Un consiglio: esegui il backup dell'intero ESP. In questo modo, se dovesse succedere qualcosa di strano, puoi ripristinarlo in futuro (EFI non si basa sul codice del settore di avvio, quindi un backup a livello di file funziona bene.)
Rod Smith,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.