Chemin de fichier EFI non valide

11

Je viens d'installer Ubuntu 12 sur mon nouvel ordinateur portable (avec Win7 64 bits préinstallé) en mode EFI et maintenant je ne peux plus charger Win7 (Ubuntu se charge juste bien depuis grub). Lorsque je sélectionne l'entrée Windows 7 dans le menu grub, j'obtiens cette erreur:

Invalid EFI file path

L'entrée grub.cfg (générée par boot-repair) est:

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
}

Voici la sortie séparée:

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 partition EFI de démarrage, montée en tant que

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

contient les fichiers suivants (à l'exception du dossier grub et des autres fichiers à la racine de démarrage):

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

Comment puis-je réparer cela ?

Merci

Simone Margaritelli
la source

Réponses:

6

Votre entrée GRUB pour Windows est appropriée pour un démarrage en mode BIOS, mais pas pour un démarrage en mode EFI. Ceci est un bug GRUB. Vous pouvez essayer de remplacer l'entrée par quelque chose comme ceci:

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

Je ne garantis pas que cela fonctionnera, mais c'est possible. Si c'est le cas, ajoutez cette entrée à /etc/grub.d/40_customafin qu'elle soit à nouveau créée chaque fois qu'Ubuntu mettra à jour sa configuration GRUB.

Une autre option consiste à utiliser un gestionnaire de démarrage différent en plus ou à la place de GRUB. rEFInd, par exemple, détectera automatiquement Windows et GRUB; et si vous utilisez des noyaux 3.3.0 ou ultérieurs (tels que fournis avec Ubuntu 12.10, mais pas avec Ubuntu 12.04), vous pouvez démarrer Linux directement avec rEFInd, en contournant GRUB entièrement. gummiboot est une autre option avec des capacités de démarrage similaires, mais elle nécessite plus de maintenance manuelle si vous souhaitez démarrer Linux directement avec gummiboot.

Rod Smith
la source
En utilisant cette entrée de menu, m'envoie de grub à un écran noir, puis de nouveau à grub :(
Simone Margaritelli
refind me donne l'option windows si si je le choisis le menu grub est ouvert Oo
Simone Margaritelli
1
Cela ressemble à Ubuntu a renommé le chargeur de démarrage Windows et s'est installé à sa place! Mon intuition est que le EFI/Microsoft/Boot/bootmgfw.efi.grbfichier sur l'ESP est le véritable chargeur de démarrage de Windows, donc renommer bootmgfw.efiquelque chose d'autre puis renommer bootmgfw.efi.grbbootmgfw.efi le corrigera. Vous pouvez vérifier la taille des fichiers de ces fichiers et de EFI/ubuntu/grubx64.efipour le vérifier, ou utiliser diffpour les comparer. FWIW, les développeurs d'Ubuntu ont peut-être fait cela pour contourner les bogues dans certaines implémentations EFI, mais c'est plutôt méchant d'entre eux, si c'est le cas!
Rod Smith
1
Sur mon ordinateur portable, je devais le faire set root=(hd0,gpt1)car c'est là que mon DELL conserve sa partition EFI.
Mutant Bob
Ne vous laissez pas berner en pensant que l'onglet de saisie semi-automatique peut voir les étiquettes gpt, etc. qu'il les utilisera pour démarrer. Le insmod part_gptest nécessaire. Si vous êtes ici pour un correctif de chargement de chaîne non Windows GRUB et que votre chemin est correct, c'est votre réponse.
SleighBoy
2

Enfin, j'ai résolu le formatage et tout réinstaller à partir de zéro ... en gros (je ne sais pas pourquoi) grub avait écrasé le chargeur de Windows 7, c'était le problème.

Simone Margaritelli
la source
1
Ubuntu avait un bug où il effaçait l'ESP, mais je pensais que c'était corrigé. Peut-être que cela persiste dans certaines circonstances. :-( Un conseil: sauvegardez l'intégralité de votre ESP. De cette façon, si quelque chose de bizarre se produit, vous pouvez le restaurer à l'avenir. (EFI ne dépend pas du code du secteur de démarrage, donc une sauvegarde au niveau du fichier fonctionne bien.)
Rod Smith