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


12

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

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

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


为什么先问一个模糊的问题然后立即回答呢?尽管答案提供了有用的信息,但确实需要阐明此问题:仅知道您已更改某些内容。准确地了解更改内容对于对这个问题提供良好的回答是非常必要的。
罗德·史密斯

@RodSmith感谢您早些时候回复我有关EFI的电子邮件:)。并为您的评论添加评论。我最初提出的问题是这样的。我对重新安装grub-pc很有经验。我想拥有相同的信心,即我知道如何恢复EFI系统。我曾经编辑过这个问题,以强调它与重新安装grub有关。我想我应该再试一次,更加明确我的动机。
sourcejedi

如果您有UEFI,为什么要使用grub?链接两个引导程序有什么好处?
马可(Marco)

@Marco UEFI不是我所知道的任何Linux发行版所支持的引导程序!Fedora在安装新内核时会自动更新GRUB,并安装必要的引导选项,例如root =。对于EFI而言,它不是这样做的。我可以放弃发行支持,而在refind.conf中使用带有内核选项的REFIND自动扫描功能,但这仍然会链接引导加载程序/管理器!而且Microsoft不会签署GPL驱动程序,因此无论如何,安全启动必须转到SHIM-> boot loader-> Linux,并且您确实需要UEFI-> SHIM部分之后的启动菜单。
sourcejedi 2013年

安装新内核后,只需efibootmgr单击一个即可更新UEFI菜单中的条目。我不了解rEFInd或SHIM。我个人不链接多个引导加载程序。所有操作系统均已添加到UEFI引导菜单中,并且工作正常。
马可(Marco)

Answers:


9

首先,您将需要一个由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
    

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

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


“请注意,efibootmgr命令要求您从EFI引导的系统中运行它。” -在这种情况下,您如何“引导”由EFI引导的系统?(选择UEFI选项时,我当前的USB无法启动)
jozxyqk

1
安装介质是引导系统的受支持方式。我认为您也应该能够在不安装EFI固件变量的情况下启动EFI系统,这涉及创建/EFI/boot/bootx64.efi(假设使用64位UEFI)。USB安装介质(CD / DVD以外的任何介质)正是这样工作的。在那里复制shim.efi可能就足够了,但是我不确定这是否可以正常工作。
sourcejedi '17

5

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

您可以引导到Windows,使用管理员权限打开命令行,然后运行以下命令:

bcdedit /set {bootmgr} path \EFI\fedora\shim.efi

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

Windows更新后,我自己必须这样做,而且看来已经成功了。

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


或者,请参见askubuntu.com/a/799734/462004中描述的两种解决方案(使用EasyUEFI或如何bcdedit.exe像使用命令一样使用Windows条目代替Windows条目来更改引导顺序)。
phk

1

https://fedoraproject.org/wiki/GRUB_2?rd=Grub2#Updating_GRUB_2_configuration_on_UEFI_systems

dnf reinstall grub2-efi grub2-efi-modules shim

(假设您已经安装了那些软件包,并且以前的配置已存在)


谢谢!“创建启动菜单项:TL; DR:这应该自动发生”-是的。
sourcejedi '16

哦,是的,它确实是:(grub2-mkconfig -o /boot/grub2/grub.cfg或在(U)EFI系统上会是类似的grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

抱歉,我的意思是Wiki意味着重新安装grub软件包会重新创建启动GRUB所必需的EFI变量(可能需要重新创建,例如,由于某种原因而重置了“ BIOS”设置)。我认为我没有尝试过dnf reinstall,如果是真的,那听起来很棒。
sourcejedi '16

0

为了简单起见,您要做的就是:

yum reinstall grub2-efi

不要运行grub2-install,它会为您显示空白的grub引导菜单,这会破坏您的系统(这是因为grub2-install将提供错误的/通用的.efi文件,试图从错误的位置加载grub.cfg。

另外,如果您已迁移到新磁盘或分区/布局已更改,则可能需要更新grub-config:

grub2-mkconfig -o /boot/EFI/fedora/grub.cfg

很高兴阅读一些确认信息:)。我提出了一个编辑,该编辑显示了grub2-mkconfig必须与一起使用-o。我不清楚简单的答案有多有用-并不是说我的严格上来说更有用,但这是假设您仍然能够以某种方式启动Fedora系统,或者您注意到关闭之前犯了一个错误。(我的回答是关于通用救援磁盘的波涛,但是AFAIK您需要chroot进入安装,确保安装所需的任何文件系统...对于像Debian安装程序这样的专用救援系统来说,这是一件好事,它执行mount + chroot为了你)。
sourcejedi '17
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.