无效的EFI文件路径


11

我刚刚以EFI模式在新笔记本电脑上安装了Ubuntu 12(预安装了Win7 64位),现在我再也无法加载Win7(Ubuntu可以从grub正常加载)。当我在grub菜单中选择Windows 7条目时,出现此错误:

Invalid EFI file path

grub.cfg条目(由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
}

这是分开的输出:

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

启动EFI分区,安装为

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

具有以下文件(不包括grub文件夹和启动根目录上的其他文件):

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

我怎样才能解决这个问题 ?

谢谢

Answers:


6

Windows的GRUB条目适用于BIOS模式引导,但不适用于EFI模式引导。这是一个GRUB错误。您可以尝试将条目替换为以下内容:

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

我不保证这会起作用,但可能会。如果确实如此,请将其添加到,/etc/grub.d/40_custom以便每当Ubuntu更新其GRUB配置时将再次创建该条目。

另一种选择是除GRUB之外或代替GRUB使用其他启动管理器。例如,rEFInd将自动检测Windows和GRUB;如果您使用的是3.3.0或更高版本的内核(Ubuntu 12.10附带但不是Ubuntu 12.04附带),则可以直接使用rEFInd引导Linux,而完全绕过GRUB。gummiboot是具有类似启动功能的另一个选项,但是如果您想直接通过gummiboot引导Linux,则需要更多的手动维护。


使用该菜单项,将我从grub发送到黑屏,然后再次返回grub :(
Simone Margaritelli 2012年

refind给了我Windows选项,如果我选择它,则打开了grub菜单Oo
Simone Margaritelli,

1
听起来,Ubuntu已重命名Windows引导加载程序并自行安装!我的直觉是EFI/Microsoft/Boot/bootmgfw.efi.grbESP上的文件是真正的Windows启动加载程序,因此重命名bootmgfw.efi为其他名称,然后重命名bootmgfw.efi.grb为bootmgfw.efi将对其进行修复。您可以检查这些文件的大小以及EFI/ubuntu/grubx64.efi进行验证,或用于diff比较它们。FWIW,Ubuntu的开发人员可能这样做是为了解决某些EFI实现中的错误,但如果是这样,那简直就是顽皮!
罗德·史密斯Rod

1
在我的笔记本电脑上,我必须这样做,set root=(hd0,gpt1)因为那是我的DELL保留其EFI分区的地方。
突变鲍勃

不要傻傻地想,因为选项卡自动完成功能可以看到gpt标签等,它将使用它们来引导。的insmod part_gpt需要。如果您要使用非Windows GRUB链加载修复程序并且您的路径正确,那就是您的答案。
SleighBoy

2

最后,我解决了格式化问题并从头开始重新安装了所有内容...基本上(不知道为什么)grub覆盖了Windows 7加载程序,这就是问题所在。


1
Ubuntu曾经有一个可以清除ESP的错误,但是我认为这是固定的。在某些情况下,它可能会持续存在。:-(提示:备份整个ESP。这样,如果发生奇怪的事情,您可以在将来进行恢复。(EFI不依赖于引导扇区代码,因此文件级备份可以正常工作。)
Rod Smith Smith
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.