我们的硬件在 UEFI/GRUB 2.02 上成功运行。内部磁盘 (/dev/sda) 是 GPT,第一个分区从 1Mib 开始,为 5Gb,并格式化为 vfat。我们正在运行 Gentoo 并使用 overlayfs。我需要将它更新到 2.04,以便我们可以添加安全启动。
我成功地使用了 ebuild/emerge 并更新了 GRUB。安装过程中没有错误,但是当系统重新启动并运行 GRUB 时,它会进入救援 shell,并显示“错误:没有这样的分区”。如果我将所有文件复制到“真实”/boot/grub 中的适当位置,我会收到错误:grub_file_filters
找不到符号。
在重新启动之前,我检查了: - 磁盘分区,它们看起来正确 - 转储了磁盘的前 4 个 LBA,它们似乎是一个 gpt 分区表 - efibootmgr -v 显示似乎是正确的信息:\EFI\引导\BOOTX64.EFI
挂载为 /boot 的 /dev/sda1/ 具有 EFI\BOOT\BOOTX64.EFI 文件以及 grub/x86_64-efi/* 和 grub/grub.cfg 文件。
基本安装后:救援外壳中的“ls”命令给出 (hd0) (hd1) (hd2) (hd3) (hd4) (hd5) 内部引导驱动器已打开 (hd4)。
从“boot/boot.g1_n2/EFI|grub”复制所有相关文件后:救援外壳中的“ls”命令给出 (hd0) (hd1) (hd2) (hd3) (hd4) (hd4,gpt3) (hd4,gpt2) (hd4,gpt1) (hd5) 内部引导驱动器仍然打开 (hd4)
我们有一个糟糕而尴尬的调试环境,它涉及一个最小的 linux 安装环境和 PXE 引导每个 ISO。我觉得我已经尝试了通过谷歌找到的东西,但我确定我错过了一些东西。
我已经尝试关注https://wiki.archlinux.org/index.php/GRUB#UEFI以及其他各种内容,包括本网站上的答案。
我不确定还能尝试什么。还有其他想法吗?
我终于更新了 grub。我试图使用 grub-2.04-r1 和 grub-2.04-rc1。两者都失败了。我终于尝试了 grub-2.04 并且成功了。我还必须卸载覆盖层并直接在 /dev/sda1 上运行 grub-install。