我在使用 rEFInd 时遇到了一点问题,但找不到有关它的具体信息。
我使用 rEFInd 在我的 MacBook Pro 3.1 上成功安装了 Ubuntu 14.04 和 OS X Yosemite 双启动,但现在启动 Ubuntu 后,重启后 rEFInd 菜单不显示。它直接进入 grub。再次启动 OS X 后(在启动时使用选项键)有时rEFInd 有时会出现,有时不会,无法弄清楚它是如何触发的。
有没有办法确保无论我之前启动了哪个操作系统,rEFInd 都会首先启动?
编辑
使用efibootmgr -v
给我:
BootCurrent: 0001
Timeout: 5 seconds
BootOrder: 0001,0080,0000
Boot0000* opensuse-secureboot HD(4,1962b000,4e800,11f33185-0ff8-493d-86bd-b9fee568adb8)File(\EFI\opensuse\shim.efi)
Boot0001* ubuntu HD(1,28,64000,7e798e0a-82c3-4719-95ed-d79675efd190)File(\EFI\ubuntu\shimx64.efi)
Boot0080* Mac OS X HD(1,28,64000,7e798e0a-82c3-4719-95ed-d79675efd190)File(\EFI\refind\refind_x64.efi)
Boot0081* Mac OS X ACPI(a0341d0,0)PCI(1f,2)03120a00000000000000HD(2,64028,1d02ba00,0b1ce04a-50b7-40b5-94f0-1a255d748d15)
Boot0082* ACPI(a0341d0,0)PCI(1f,2)03120a00000000000000HD(2,64028,19490d60,20cc89c9-1320-4d70-b8bb-fffdf9900374)
BootFFFF* ACPI(a0341d0,0)PCI(1f,2)03120a00000000000000HD(2,64028,19490d60,20cc89c9-1320-4d70-b8bb-fffdf9900374)File(\System\Library\CoreServices\boot.efi)
如果我将 NextBoot 的 -option 设置-n
为 0080,则重启后,rEFInd 就会出现。FFFF 会直接带我进入 OSX。0081 似乎失败了。
谢谢您的帮助!
答案1
操作系统有时会重置默认引导程序,特别是当它们升级标准引导加载程序时。实际上没有办法阻止这种情况发生,因此您必须知道如何在问题发生时纠正它。在 Linux 中,这是通过使用efibootmgr
程序。在 OS X 中,它通过bless
。 看这里了解更多信息efibootmgr
。
如果每次重启时都会发生这种变化,那么一定出了问题。如果 Ubuntu 每次重启时都会将 GRUB 重置为默认设置,那么我个人会删除它——但我不喜欢 GRUB(以至于我分叉了 rEFIt 来制作 rEFInd 而不是处理 GRUB)。我想你也可以efibootmgr
在关机脚本,但这样做可能会脱离现实并引发问题,所以我不愿意这样做。
编辑:
是的,按照您的建议更改BootOrder
变量(通过-o
选项efibootmgr
)是合适的。您可以使用以下命令删除 OpenSUSE 条目:
sudo efibootmgr -b 0 -B
可能安装了 OpenSUSE 文件,您可以使用它们删除它们rm
——可能是sudo rm -r /boot/efi/EFI/opensuse
来自 Ubuntu。(这些文件本身不会造成任何危害,但它们可能会造成混淆或在将来意外重新激活。)您可以以类似的方式删除 Ubuntu GRUB,尽管如果/当 Ubuntu 将来更新它时可能会重新安装它。此外,将其保留作为启动的备份方法可能是有意义的。
如果您保留安装的 Ubuntu 的 GRUB 但不想在 rEFInd 的菜单中看到它,您可以使用dont_scan_dirs
或(可能来自 Ubuntu)dont_scan_files
来隐藏 GRUB 条目。refind.conf
/boot/efi/EFI/refind/refind.conf
答案2
这发生在我身上,我在 Ubuntu 中使用以下命令修复了它(这特定于您的情况,因为您的 Ubuntu 启动是Boot0001*
):
sudo efibootmgr -o 80,1
如果你再次输入sudo efibootmgr
,你的启动顺序现在应该是BootOrder: 0080,0001
。这保证了 Mac 首先启动,并且由于 rEFInd 已安装在 Mac 中,因此它应该首先出现。