我知道这是一个非常常见的问题,但我尝试了很多常见的答案(下面列举),但都无济于事。
基本设置:我正在设置 Fedora 31 / Ubuntu 18.04 双引导,每个分区都有一个单独的加密 / 和非加密 /boot 分区,以及一个 /boot/efi 分区,总共 5 个。首先安装了 Fedora,然后是Ubuntu。一切都很顺利,我可以从 efi 启动菜单启动到其中一个。我想锁定 efi 启动顺序并在 grub 中进行启动选择,而当前的 Ubuntu grub 选项错过了 Fedora。所以我启动到 Fedora 并尝试grub2-install /dev/sda
将 MBR 重置为 Fedora 的 grub 配置并添加 Ubuntu。相反,我得到了 oh-too-common grub2-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh doesn't exist. Please specify --target or --directory
。
- 我试过了扩展命令到
grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootfloader-id=grub2
没有变化。 - 我也尝试过
dnf reinstall grub2-efi shim grub2-tools
- 和安装
grub2-efi-modules
尽管如此,我在我的/usr/lib/grub
目录中可以找到的只是arm64-efi
andi386-pc
但没有x86_64-efi
。我对 bootmgr 的东西有点不了解(我的经验一直延伸到解决这些问题,直到每次我有新安装时它们都能工作)。
有人猜测问题是什么或在其他地方寻找答案吗?
答案1
首先我运行“dnf提供”来找到正确的包:
dnf 提供 /usr/lib/grub/x86_64-efi
然后我使用其全名安装了正确的包:
dnf 安装 grub2-efi-x64-modules-1:2.06~rc1-2.fc33.noarch
答案2
grub2-efi-x64-modules
我可以通过在 Fedora 上安装软件包来添加缺少的模块。
就我而言,此后我遇到了另一个错误“我的系统不支持 EFI 变量”。我找到了另一个 stackexchange 帖子,可以通过退出 chroot 环境并通过 加载 efivarfs 模块来解决该问题modprobe efivarfs
。然后我重新登录到已安装的根目录并通过mount -t efivarfs efivarfs /sys/firmware/efi/efivars
.
答案3
在 ubuntu 上(这将创建 efi 支持)/usr/lib/grub/x86_64-efi)
sudo apt install grub-efi
答案4
我通过安装 grub2-efi-modules 和 efibootmgr 解决了