我目前正在努力将 grub 引导加载程序安装在我自己创建的 efi 分区中。我使用 GPT 分区表,并创建了一些分区,其中一个分区的类型为 ESP(EFI 系统分区),其各自的类型为 UUID。我通过 在该卷中创建了一个 FAT 文件系统mkfs.fat -F32
。现在我正忙于安装 GRUB 引导加载程序。
我首选的方法是将 GRUB 二进制文件复制到已安装的 EFI 分区,但二进制文件在任何地方都不可用,因此这不是推荐的解决方法(我猜?)。这在理论上可行吗(UEFI 固件似乎能够读取 EFI 分区的 fat 文件系统,那么我为什么不直接复制二进制文件呢)?因此,常见的方法似乎是使用grub-install
(从我在虚拟机中运行的某些 Linux 操作系统中)。现在的问题是,我真的不确定这最终会做什么。我想安装一个普通的 EFI-Bootloader,没有任何 MBR-Legacy 的东西,所以整个东西应该只包含 EFI 分区内的文件,对吗?grub-install 的作用似乎很不透明。经过相当多的努力让它开箱即用,我安装了该grub-efi-amd64
软件包。重启后,我能够安装它,但我需要指定一个设备。这又让我感到困惑,因为考虑到先前的假设,它应该只需要知道 EFI 分区的挂载点。似乎有一个名为的选项--efi-directory
可能可以解决这个问题,但如果使用,grub-install
它会抱怨我没有指定设备。
在我看来,引导加载程序似乎已安装但 EFI 分区为空,这也相当可疑。我感觉它是以传统 MBR 方式安装的,您能证实这一点吗?您有什么建议可以让我达到原始 EFI grub 安装的目标?非常感谢您的帮助,提前谢谢!
答案1
grub-install
只需将二进制文件从 /usr/lib/grub 复制到 /boot/efi,并配置 EFI 系统变量以指向那里。只需将 ESP 挂载到 /boot/efi 并运行grub-install
。它仍然需要一个设备参数以实现向后兼容,但它会被忽略,因此您可以指定任何您想要的内容。Ubuntu 安装程序只需运行grub-install dummy
。