我已经安装了 Windows 7 GPT,其中已有 EFI 系统分区。
我现在尝试在单独的硬盘上安装 Linux,该硬盘也是 GPT 格式的。我没有找到任何在没有 EFI 系统分区的情况下启动 grub 的工作方法,所以我的问题是:
grub2可以使用与windows相同的EFI系统分区吗?我如何告诉 grub2 使用它?
为了澄清我的设置:
gpt /dev/sda:
1 EFI System partition created by windows (100MB)
2 "Microsoft reserved partition" (200MB)
3 Windows root (rest of disk)
gpt /dev/sdb:
# After answering my own question: this partition is not needed
1 boot partition containing grub, kernels etc.(32MB)
2 crypto LVM partition (rest of disk)
我希望 grub2 使用现有的/dev/sda1
EFI 分区。
PS:我的主板支持 EFI。
答案1
经过一天的研究,我现在可以回答我自己的问题:是的,这是可能的,您甚至可以将该分区用作 /boot 并存储您的内核/initramfs/等。那里。
要求:
- Grub >= 2.00(1.98 和 1.99 不起作用)
- Grub 必须从 Linux 内核安装,该内核支持 EFI 变量(
CONFIG_EFI_VARS
在模块中编译或编译为模块efivars
) - 要创建 EFI 启动项,您需要
efibootmgr
设置:
首先将EFI分区挂载到/boot
mount /dev/sdX1 /boot
如果您查看挂载条目,您会发现它只是一个 FAT(32) 分区。在下面/boot
你应该找到一个目录efi
。
当 grub 调用时,如果它没有编译到内核中,efibootmgr
您应该加载:evivars
modprobe efivars
现在您可以安装 grub:
# Replace x86_64 with i386 for 32 bit installations
grub2-install --target=x86_64-efi
Grub 像往常一样将其文件安装到/boot/grub2
.如果一切正常,您现在应该还有一个文件夹/boot/efi/grub2
或/boot/efi/<name_of_your_distro>
.您--bootloader-id=insert_name_here
还可以自己指定文件夹的名称。
Grubefibootmgr
自动调用并在 EFI 启动菜单中创建一个具有该名称的启动项(在我的例子中,这意味着它在 EFI 菜单中显示为可启动设备,不确定每个 EFI 板上是否都是这种情况)
进一步的设置与通常的 grub2 设置没有什么不同,grub2-mkconfig
会将 EFI 的适当模块添加到您的grub.cfg
.
链式加载窗口:
当我要求与 Windows 进行双重启动时,我将包含用于链式加载的 grub 配置:
在 EFI 上链式加载 Windows 安装与 MBR 磁盘上的 Windows 安装略有不同。您不需要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
您需要在 EFI 分区中设置 Windows EFI 加载程序的路径,而不是告诉chainloader
要读取的扇区数。这对于所有 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 启动,它们值得一读: