在 USB 上安装 GRUB:继续出现“找不到 EFI 目录”错误

在 USB 上安装 GRUB:继续出现“找不到 EFI 目录”错误

我正在尝试将 grub 安装到 USB 上,以便使其可启动。我想使其可启动,以便制作 USB 多重启动,从而在一个 USB 中携带多个发行版(即 rescatux 和 tails)。我已完成此操作:

sudo mkdir -p /media/MULTIBOOT/boot

进而:

sudo grub-install --target=x86_64-efi --boot-directory=/media/MULTIBOOT/boot /dev/sdc1

我收到此错误:

为 x86_64-efi 平台安装。grub-install:错误:找不到 EFI 目录。

我有 Ubuntu 14.04 LTS,它是 64 位的。

这是我的 USB 配置: 在此处输入图片描述

这是我第一次尝试这个,我有点迷茫,我应该使用/dev/sdc1还是/dev/sdc

我已经尝试过(结果类似)另一种选择:

sudo grub-install --target=x86_64-efi --boot-directory=/media/victoria/MULTIBOOT/boot /dev/sdc

哪里有问题?

感谢您的帮助!

答案1

我无法为您的问题提供完整的答案,因为 GRUB 配置和安装的某些方面超出了我的技能水平,并且由于您想要执行的操作存在一些模糊性(如 sudodus 在对您的问题的评论中所述)。话虽如此,我可以提出一些可能有用的意见和建议:

  • 当你从 Ubuntu 安装 GRUB 到正常运行的 EFI 系统时,GRUB 将EFI/ubuntu/grubx64.efi成为EFI 系统分区 (ESP),其中 NVRAM 条目指向该位置。
  • 相比之下,EFI 可启动的 USB 驱动器通常从EFI/BOOT/bootx64.efiUSB 驱动器 ESP 上调用的引导加载程序启动。此文件名通常称为后备文件名,如果没有 NVRAM 条目指向有效的引导加载程序,或者用户从内置引导管理器菜单中选择引导介质,则 EFI 应该将查找该文件名作为最后的手段。因此,要安装到此位置,您必须调整命令grub-install(我甚至不能 100% 肯定它支持这一点)或手动复制文件。
  • 使上述情况复杂化的是,如果计算机使用安全启动,Ubuntu 会安装一个名为垫片( shimx64.efi),并创建一个指向它的 NVRAM 条目,而不是grubx64.efi。同样,要启动外部介质,原始介质shimx64.efi必须命名为EFI/BOOT/bootx64.efi。无论哪种情况,Shim 都会grubx64.efi在与 Shim 相同的目录中启动。
  • 什么时候不是grub.cfg使用安全启动时,Ubuntu 的 GRUB 会在目录中查找文件/boot/grub,该文件不太可能是 ESP。但是,在安全启动处于活动状态时,它会在与 相同的目录中grubx64.efi查找。但是, 会查找并加载,因此效果相同,但路径更复杂。无论哪种情况,都会依赖于 ESP 和包含 的分区。某些发行版的设置不同;例如,Fedora 将最终文件和所有相关文件放在 ESP 上。grub.cfggrubx64.efigrub.cfg/boot/grub/grub.cfg/boot/grubgrub.cfg
  • /boot/grub/grub.cfg文件由每次安装新内核或 GRUB 二进制文件时运行的配置脚本构建(或重建)。这对于单启动系统来说没问题,但如果您使用另一个 Linux 发行版进行多重启动,事情很快就会变得混乱。特别是,如果发行版 A 的 GRUB 控制启动过程,而您更新了发行版 B 的内核,GRUB 将不会显示新的发行版 B 内核,直到您update-grub在发行版 A 中运行(或类似操作)。

在这些因素之间,要使用 GRUB 执行您想要的操作,您可能必须将其安装到后备文件名而不是标准文件名;您可能需要或不需要将 Shim 挤进图片中;并且您可能需要调整您的grub.cfg双发行版设置。这有很多事情要做。如果我需要使用 GRUB 完成所有这些操作,我的方法是将两个发行版都安装到 USB 驱动器,就像它是内部硬盘一样,然后将 GRUB(或 Shim)移动/重命名为后备文件名。这样做的好处是您不需要对文件进行修改grub.cfg。一个很大的警告是,如果您想使用以不寻常的方式安装的东西(例如通过 UNetbootin 或 Rufus 而不是 Ubuntu 的 Ubiquity 安装程序),这可能会改变等式,从而需要一些完全不同的方法。看起来您正在尝试使用硬盘上的 Ubuntu 将 GRUB 安装到 USB 驱动器,以用于从 USB 驱动器启动。如果您比我更熟悉 GRUB,那么这种方法可能会有效,但是有足够多的模糊变量在起作用,您的方法可能会变得非常复杂。

另一种方法是使用我的rEFInd 启动管理器。您需要将其安装到备用文件名中,但 rEFInd 会在启动时扫描内核,因此当您使用另一个发行版安装 GRUB 或 rEFInd 时,在一个发行版中安装新内核的可能性较小。另一方面,如果您想使用安全启动,则需要跳过额外的环节(记录在rEFInd 的安全启动页面)才能使其正常工作,可能在您用来启动 USB 驱动器的每台计算机上。您可能还需要创建/boot/refind_linux.conf文件两个都您的发行版处理特定于发行版的内核选项。(请参阅rEFInd Linux 文档,(尤其是该页面的下半部分左右,包含有关此信息。)

相关内容