经过一天的研究,我现在可以回答我自己的问题:是的,这是可能的,您甚至可以将该分区用作/ boot并存储您的kernels / initramfs / etc。那里。
要求:
- Grub> = 2.00(1.98和1.99不起作用)
- 必须从支持EFI变量(
CONFIG_EFI_VARS
在或作为模块编译efivars
)的Linux内核中安装Grub。
- 要创建EFI引导条目,您将需要
efibootmgr
设定:
首先将您的EFI分区安装到/ boot
mount /dev/sdX1 /boot
如果查看挂载条目,您将看到它只是一个FAT(32)分区。在/boot
你应该找到一个目录efi
。
正如grub会调用的efibootmgr
,evivars
如果未编译到内核中,则应该加载:
modprobe efivars
现在您可以安装grub了:
# Replace x86_64 by i386 for 32 bit installations
grub2-install --target=x86_64-efi
Grub照常将其文件安装到/boot/grub2
。如果一切正常,您现在还应该有一个文件夹/boot/efi/grub2
或/boot/efi/your_distros_name
。使用,--bootloader-id=isert_name_here
您还可以自己指定文件夹的名称。
Grub efibootmgr
自动调用并在EFI引导菜单中创建具有该名称的引导条目(在我的情况下,这意味着它在EFI菜单中显示为可引导设备,不确定每个EFI板上是否都是这种情况)
进一步的设置与通常的grub2设置没有什么不同,grub2-mkconfig
它将为EFI添加适当的模块grub.cfg
。
链加载Windows:
当我要求使用Windows进行双重引导时,我将包括用于链式加载的grub配置:
在EFI上对Windows安装进行链加载与在MBR磁盘上进行链加载略有不同。您将不需要ntfs
或part_mbr
模块,而不是fat
和part_gpt
需要。
另外,不需要设置root,该信息由Windows自己的启动管理器存储。而是指定search
命令。所需的参数可以通过以下方式确定
grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
这将为您提供用于指定EFI分区位置的搜索参数,其外观应类似于:
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 1ce5-7f28
chainloader
您需要在EFI分区中设置Windows EFI加载程序的路径,而不是告诉要读取的扇区数。对于所有Windows EFI安装都是相同的。结果条目应如下所示:
menuentry "Microsoft Windows x86_64 UEFI-GPT" {
insmod part_gpt
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --no-floppy --set=root <insert ouput from grub-probe here>
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
资料来源:这些涵盖了更多情况,如果您想从EFI引导,则值得阅读:
mount /dev/sdXX /boot/efi
,然后按照此步骤bcdedit /set {bootmgr} path \EFI\fedora\shim.efi
从Windows 运行到引导EFI。