我构建了一个新的 UEFI 64 位系统,其中安装了 Windows 7 和 Ubuntu 11.10(安装在不同的硬盘上)。我希望能够从 grub 菜单启动 Windows 7,但到目前为止,我还没有成功让 grub 链式加载它。
获取 grub 菜单后,我选择命令行选项,可以看到 bootmgfw.efi 位于(hd1,gpt1)/efi/Microsoft/Boot/bootmgfw.efi
。但是,当我尝试链式加载时,出现错误:
grub> chainloader (hd1,gpt1)/efi/Microsoft/Boot/bootmgfw.efi
error: invalid signature
我不确定从 LiveCD 安装 Linux 时是否选择了 UEFI 启动选项,因此我想知道我拥有的 grub 是否无法以这种方式进行链式加载?无论如何,我不确定如何使链式加载工作。
答案1
当我写问题时,我开始怀疑,问题在于 Linux 是使用 MBR 安装的,因此 grub 无法链式加载 EFI Windows 7。我重新安装了 Linux,这次确保从 BIOS 中选择了 LiveCD 的 UEFI 启动选项。现在 Linux 已通过 EFI grub 安装,我能够为 Windows 7 添加 grub 菜单项并成功链式加载。
我用了此链接创建适用于 Windows 7 的菜单项。
完成后将sudo vi /etc/grub.d/40_custom
菜单项添加到文件末尾,不要忘记运行sudo update-grub
。