EFI 文件路径无效

EFI 文件路径无效

我刚刚在新笔记本电脑上以 EFI 模式安装了 Ubuntu 12.04(预装了 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

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

谢谢

答案1

您的 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 启动 Linux,则需要更多的手动维护。

答案2

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

答案3

截至今天,在 Xubuntu 22.04 中,我一直在使用 UEFI 为我的笔记本电脑使用上述信息。但是现在我必须将 ESP 分区的位置添加到 chainloader 行中。

这是我现在的工作配置:

menuentry "Windows 10" {
insmod part_gpt
insmod chain
set root='(hd0,gpt4)'
chainloader (hd0,gpt2)/EFI/Microsoft/Boot/bootmgfw.efi

}

此外,为了使其正常工作,我必须插入的文件是位于 /etc/grub.d/proxifiedScripts 下的文件“custom”。

同时还发生了另一个烦恼:Grub 启动节中出现了几组条目,用于同一个 Xubuntu 安装(而不是多个安装)。我使用从其 PPA 安装的 grub-customizer 来修复它。

在我看来,不同的条目是通过位于 /etc/grub.d 下的几个代理文件生成的,可能是 10_linux_proxy、31_linux_proxy 和 41_linux_proxy。

当然,我不敢手动更改默认设置。

答案4

这是对该问题答案的更新 - Ubuntu 22.04 MATE 要么忽略要么覆盖了我的 Win 10 Pro 启动...快速跳转到 Ventoy 并加载 Win10 ISO 安装程序,然后选择修复启动即可解决问题...内核更新后它是否会恢复还有待观察 :P

谢谢/Sx

相关内容