UEFI 无法识别 EFI 分区:没有启动选项

UEFI 无法识别 EFI 分区:没有启动选项

我弄乱了 EFI 分区,现在当我启动计算机时,它会打开 BIOS 界面,没有任何启动选项,就像我的磁盘已被擦除一样。然而,使用实时 USB(可以正确识别和启动)并使用 grub 命令行,我已经能够启动我的主要操作系统(Ubuntu)。但是我不知道如何解决这个问题。我尝试运行 grub-install /dev/sda 但它没有改变任何东西。

EFI 分区看起来完全没问题:它有正确的标志(esp、boot)并且里面有所有正确的文件。

tree /boot/efi/
└── EFI
    ├── Boot
    │   └── bootx64.efi
    ├── Microsoft
    │   ├── Boot
    │   .....
    └── ubuntu
        ├── fbx64.efi
        ├── fw
        ├── fwupx64.efi
        ├── grub.cfg
        ├── grubx64.efi
        ├── mmx64.efi
        └── shimx64.efi

我应该检查什么?我缺少什么?

这是我的分区表:

parted /dev/sda print
Model: ATA Crucial_CT525MX3 (scsi)
Disk /dev/sda: 525GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start   End     Size    File system  Name                          Flags
 1      1049kB  1612MB  1611MB  fat32        EFI System Partition          boot, esp
 2      1612MB  87.9GB  86.3GB  ext4         Ubuntu
 3      87.9GB  281GB   193GB   ext4         Home
 5      290GB   290GB   16.8MB               Microsoft reserved partition  msftres
 6      290GB   405GB   115GB   ntfs         Basic data partition          msftdata
 8      405GB   500GB   94.4GB  ntfs         Data                          msftdata
 9      500GB   525GB   25.3GB  ext4         Backup OS

答案1

我必须/EFI/my-custom-label/grubx64.efi/EFI/boot/bootx64.efi我的华硕 UEFI BIOS 重命名为才能开始识别它。

此问题出现在 Asus Maximus VII Impact(Z97 芯片组)上。我的朋友在基于 Z87 的华硕主板上也遇到了类似的问题。

答案2

还有一个问题可能会导致这种情况,我最近遇到了这个问题。

要检测此问题,请从 Linux 实时启动并运行 gdisk /dev/sd[whatever-your-disk-is] ,通常是 /dev/sda 或 /dev/sdb 或 /dev/sdc 。

发出 p 命令以确保您看到正确的分区列表(如果没有,这可能不是您的磁盘)。

然后输入 v 命令。它可能会这样回应:

Warning: The 0xEE protective partition in the MBR is marked as active. This is
technically a violation of the GPT specification, and can cause some EFIs to
ignore the disk, but it is required to boot from a GPT disk on some BIOS-based
computers. You can clear this flag by creating a fresh protective MBR using
the 'n' option on the experts' menu.

如果这是响应,请使用命令:e、n、w。然后重新启动,您的 EFI 就可能恢复了!

答案3

我的猜测是您的 EFI 系统变量没有设置为指向正确的引导加载程序。您要检查的程序是efibootmgr.这将显示存储在 NVRAM 中的所有引导条目。

理论上,grub-install应该处理这个问题,但您可能没有传递正确的选项。这个示例命令应该有效:

grub-install --target=x86_64-efi --efi-directory=ESP_MOUNT_PATH --bootloader-id=grub

更改ESP_MOUNT_PATH为 EFI 目录的路径。

如果这不起作用,您可以尝试efibootmgr直接使用:

efibootmgr --create --disk /dev/sda --part 1 --loader /EFI/ubuntu/grubx64.efi --label "GRUB"

我认为在某些系统上您可能必须使用/EFI/ubuntu/shimx64.efi.所以尝试这样的方法,看看效果如何。

答案4

我还让 grub 在使用 EFI 启动时不显示所有分区,添加参数--modules="part_gpt part_msdos"grub-install允许它显示带有ls和 的所有分区ls -l

相关内容