使用 eifbootmgr 永久清理和更改 EFI 引导顺序

Ste*_*eve 8 boot dual-boot uefi

好吧,在弄清楚如何双引导 Windows 8 和 Ubuntu 12.04 几天后,我将 rEFInd 设为我的默认引导加载程序。

我现在的问题在于我的 EFI 设置:

  1. Ubuntu(ST1...不想输入那个,哈哈)
  2. Windows 启动管理器 (ST1...)
  3. Windows 启动管理器 (ST1...)
  4. 用于 IPv4 的 EFI 网络 0
  5. 用于 IPv6 的 EFI 网络 0

事情是这样的:1 和 2 不起作用,但我现在不想摆脱它们。3 是我的 rEFInd 所在的位置,我希望它位于顶部。每次我打开计算机时,这是默认的引导顺序。我可以在每次启动时更改它,但我不想这样做。

我注意到有一些程序 eifbootmgr,但我不确定如何使用它。基本上,我想将列表永久重新排序为:3、4、5、1、2。

如果我能得到有关如何操作的指南,我将不胜感激:)

更新:Rod,所以我截取了发生的事情的截图,我在启动菜单中有一个奇怪的结果......

在此处输入图片说明

在此处输入图片说明

Rod*_*ith 12

键入sudo efibootmgr -v以查看您当前的引导条目。输入密码后,您将看到如下内容:

BootCurrent: 0003
Timeout: 0 seconds
BootOrder: 0003,0002,0000,0001
Boot0000* rEFInd Boot Manager   HD(1,28,96000,bc34b60c-6611-492f-99b0-d2c37bd77f48)File(\EFI\refind\shim.efi)
Boot0001* fedora    HD(1,28,96000,bc34b60c-6611-492f-99b0-d2c37bd77f48)File(\EFI\fedora\grubx64.efi)
Boot0002* rEFInd (via PreLoader)    HD(1,28,96000,bc34b60c-6611-492f-99b0-d2c37bd77f48)File(\EFI\refind\PreLoader.efi)
Boot0003* ubuntu    HD(1,28,96000,bc34b60c-6611-492f-99b0-d2c37bd77f48)File(EFI\Ubuntu\grubx64.efi)
Run Code Online (Sandbox Code Playgroud)

当然,您的详细信息会有所不同。您需要确定您的条目并确定您希望它们出现的顺序。例如,假设您有这些条目,您希望默认通过 shim 引导 rEFInd,然后通过 PreLoader 引导 rEFInd,然后是 Ubuntu,最后是 Fedora,如果所有其他都失败。所需的顺序将是 0000,0002,0003,0001。然后,您可以通过以下-o选项指定该顺序efibootmgr

sudo efibootmgr -o 0000,0002,0003,0001
Run Code Online (Sandbox Code Playgroud)

输出将包括对原始输出的较不冗长的重复,并BootOrder适当更改行。仔细检查您的更改是否正确,然后重新启动以测试它是否正常工作。(不幸的是,一些efibootmgrEFI 有问题,最近几个月由于内核之间的不匹配而引入了错误。)如果你有问题,有办法用 EFI shell 和它的bcfg命令来修复它,但我会省略详细信息,除非您报告那efibootmgr不起作用。

  • 其中一些条目看起来很奇怪,你的“BootOrder”*应该*已经启动 rEFInd 作为第一个开始的对象。我的倾向是删除*所有*的引导条目(通过重复的`sudo efibootmgr -b 0000 -B`命令,依次将`0000`更改为每个引导编号)然后恢复rEFInd(通过`sudo efibootmgr -c -d /dev/sda -p 1 -l '\EFI\refind\refind_x64.efi` -L "rEFInd"`,将 `/dev/sda` 更改为磁盘,将 `1` 更改为 ESP 的分区)。OTOH,如果这不起作用,则可能会使情况变得更糟,因此在执行此操作之前,请确保有可用的 rEFInd CD-R 或 DVD 进行恢复。 (2认同)