我如何在 Fedora Linux 上重新安装 grub-efi 引导加载程序?

sou*_*edi 14 fedora grub uefi secure-boot

我最近使用 EFI 引导安装了 Fedora 18。像其他当前的 linux 发行版一样,它为我设置了 GRUB2。

当出现问题时,我有重新安装BIOS版本的 GRUB 的经验。我知道如如何引导救援光盘,chroot到安装的系统,运行grub-install和可能的update-grub/ grubby/ grub-mkconfig

出现问题时如何重新安装EFI版本的 GRUB?(我知道事情会出错:我打破了它们)。

sou*_*edi 11

首先,您需要一个EFI 启动的linux 系统。如果您仍然拥有原始安装媒体(CD/DVD/USB 记忆棒),则通常应该包含足够的救援系统。它甚至可能有一个一键修复选项:)。

或者,Ubuntu 社区提供了一个自动引导修复映像。它声称支持 Fedora。如果你想知道它到底做了什么,我建议你提前阅读这个第三方解释

但是,我使用了带有控制台工具的通用救援系统。除了支持 EFI 引导外,我还确保efibootmgr在包列表中。它碰巧被称为GRML并且基于 Debian。以下是我在抢救 Fedora 系统时发现的有关控制台工具和 grub-efi 的信息:

  1. 在运行由 EFI 引导的 Fedora 18 系统时,不要运行grub2-install. 它将声称成功,但它破坏了 Fedora grub-efi 引导系统。

    • 该文件/boot/EFI/fedora/grub.efi由 grub-efi 包安装。如果您确实想重新安装它,请使用yum reinstall grub-efi. (要从通用救援系统执行此操作,您可以在mount输入并chroot输入已安装的 Fedora 系统后执行此操作)。Fedora grub-efi 使用配置文件/boot/EFI/fedora/grub.cfg(大概由 grubby 生成)。EFI 上的 Fedora 不会在/boot/grub2/grub.cfg. 运行grub2-install会将 grub.efi 替换为尝试读取的图像,/boot/grub2/grub.cfg因此会失败。

    • grub2-install安装 EFI 引导项grub.efi。但是,如果您没有在 Windows 8 认证的固件中禁用安全启动,则此条目将无法启动。您需要改为启动shim.efi(忽略shim-fedora.efi,我不确定那是什么)。见下文。

  2. 如果您的固件设置被重置,您可能会丢失 Fedora 的 EFI 引导条目。(手动,或通过固件升级,或者因为固件有问题 - 后者已被广泛报道)。以下是使用安全启动为 Fedora 手动创建 EFI 启动项的方法:

    $ sudo efibootmgr -c -L Fedora -d /dev/sda -p 100 -l \\EFI\\fedora\\shim.efi
    
    Run Code Online (Sandbox Code Playgroud)

    此示例使用 linux 识别的第一个标准磁盘上的分区号 100。您应该调整选项-d /dev/sda-p 100确定 Fedora 挂载的文件系统/boot/efi。这是一个 EFI 系统分区。Fedora 安装程序将为您的 Fedora 安装创建一个专用的ESP,与任何其他操作系统使用的 ESP 分开。(这与 Ubuntu 和 OpenSUSE 不同)。

    请注意,该efibootmgr命令要求您从 EFI 引导的系统运行它。


小智 5

如果您使用 UEFI Windows 进行双引导,则还有另一种可能性。这不需要恢复磁盘。

您可以启动到 Windows,以管理员权限打开命令行,然后运行以下命令:

bcdedit /set {bootmgr} path \EFI\fedora\shim.efi
Run Code Online (Sandbox Code Playgroud)

这将替换 UEFI 中的 Windows 引导条目,使用引导至 GRUB 的条目。假设您的 GRUB 菜单包含一个适用于 Windows 的工作条目,您现在可以使用双启动 :-)。希望这一切都可以在不禁用安全启动的情况下工作。

在 Windows 更新后,我只需要自己这样做,它似乎已经成功了。

来源和更多信息:http : //nwrickert2.wordpress.com/2013/05/13/notes-on-uefi-windows-and-linux/