Ruta de archivo EFI no válida

11

Acabo de instalar Ubuntu 12 en mi nueva computadora portátil (con Win7 de 64 bits preinstalado) en modo EFI y ahora ya no puedo cargar Win7 (Ubuntu simplemente carga bien desde grub). Cuando selecciono la entrada de Windows 7 en el menú de grub, aparece este error:

Invalid EFI file path

La entrada grub.cfg (generada por boot-repair) es:

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
}

Esta es la salida separada:

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 partición EFI de arranque, montada como

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

tiene los siguientes archivos (excluyendo la carpeta grub y otros archivos en la raíz de arranque):

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

Cómo puedo arreglar esto ?

Gracias

Simone Margaritelli
fuente

Respuestas:

6

Su entrada GRUB para Windows es apropiada para un arranque en modo BIOS, pero no para un arranque en modo EFI. Este es un error de GRUB. Puede intentar reemplazar la entrada con algo como lo siguiente:

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

No garantizo que esto funcione, pero podría funcionar. Si lo hace, agregue esa entrada para /etc/grub.d/40_customque se cree nuevamente cuando Ubuntu actualice su configuración GRUB.

Otra opción es usar un administrador de arranque diferente además de GRUB o en lugar de hacerlo. rEFInd, por ejemplo, detectará automáticamente Windows y GRUB; y si está utilizando núcleos 3.3.0 o posterior (como se incluye con Ubuntu 12.10, pero no con Ubuntu 12.04), puede arrancar Linux directamente con rEFInd, evitando GRUB por completo. gummiboot es otra opción con capacidades de arranque similares, pero requiere más mantenimiento manual si desea arrancar Linux directamente con gummiboot.

Rod Smith
fuente
Usando esa entrada del menú, me envía de grub a una pantalla negra y luego nuevamente a grub :(
Simone Margaritelli
refind me da la opción de Windows si elijo que se abra el menú grub Oo
Simone Margaritelli
1
¡Parece que Ubuntu cambió el nombre del cargador de arranque de Windows y se instaló en su lugar! Mi presentimiento es que el EFI/Microsoft/Boot/bootmgfw.efi.grbarchivo en el ESP es el verdadero cargador de arranque de Windows, por lo que cambiar el nombre bootmgfw.efia otra cosa y luego bootmgfw.efi.grbvolver a cambiar a bootmgfw.efi lo solucionará. Puede verificar los tamaños de archivo de estos archivos y de EFI/ubuntu/grubx64.efiverificar esto, o usar diffpara compararlos. FWIW, los desarrolladores de Ubuntu podrían haber hecho esto para evitar errores en algunas implementaciones de EFI, ¡pero es bastante malo de ellos, si es así!
Rod Smith
1
En mi computadora portátil tuve que hacerlo set root=(hd0,gpt1)porque allí es donde mi DELL mantiene su partición EFI.
Bob mutante
No se deje engañar pensando porque la pestaña autocompletar puede ver las etiquetas gpt, etc., que las usará para arrancar. El insmod part_gptes necesario. Si está aquí por una solución de carga de cadena GRUB que no es de Windows y su ruta es correcta, esa es su respuesta.
SleighBoy
2

Finalmente, resolví formatear y reinstalar todo desde cero ... básicamente (no sé por qué) Grub había sobrescrito el cargador de Windows 7, ese era el problema.

Simone Margaritelli
fuente
1
Ubuntu solía tener un error en el que borraba el ESP, pero pensé que se había solucionado. Quizás persista en algunas circunstancias. :-( Un consejo: haga una copia de seguridad de todo su ESP. De esa manera, si sucede algo extraño, puede restaurarlo en el futuro. (EFI no se basa en el código del sector de arranque, por lo que una copia de seguridad a nivel de archivo funciona bien)
Rod Smith