首先,我很抱歉我的英语不好。我是 Windows 用户,刚接触 grub2 和 Linux。所以我来这里是为了向你寻求一些建议。
我正在运行 Windows 10 UEFI,现在我想使用 grub2 作为主加载器来链式加载 Windows 并链式加载到 Linux。我使用 Ubuntu 安装 ISO 中的 bootx64.efi 并用它替换 bootx64.efi (windows)。grubx64.efi 和 grub.cfg(假设为 grub1.cfg)放在 EFI 分区上。我使用 grub1.cfg 调用另一个 grub.cfg(假设为 grub2.cfg)放在 NTFS 分区上。但重启电脑后,grub1.cfg 找不到 grub2.cfg。
经过一番努力,我发现如果我使用来自 clonezilla 的 bootx64.efi,那么它可以正常工作。
但我想使用 Ubuntu 的 bootx64.efi,因为它支持
if [ -e "..."]; then
命令。
有谁能给我一些提示吗?谢谢
答案1
当 GRUB 从 EFI 分区加载 grub.cfg 时,它会将您的 EFI 分区设置为 GRUB 的根目录。为了从另一个分区加载另一个 grub.cfg,您必须更改 GRUB 的根目录,以便它知道在哪里查找第二个配置。
此外,可能需要加载 ntfs 模块。因此,您的菜单项将如下所示:
menuentry 'Windows' {
insmod part_gpt
insmod ntfs
set root='hd1,gpt2' #This is where you tell grub where to start searching for the new config file
configfile ${root}/path/to/grug2.cfg
}
如果无法加载 ntfs 模块,请将其从 Ubuntu 的 /boot/grub/x86_64-efi/ntfs.mod 复制到 /boot/efi/boot/grub。
或者你可以对它进行更多的硬编码,并使它变得更简单,如下所示:
menuentry 'Windows' {
insmod part_gpt
insmod ntfs
configfile (hd1,gpt2)/path/to/grub2.cfg
}
请注意,这尚未经过测试,但如果您有任何问题请告诉我,我很乐意为您提供帮助。