向 GRUB 启动菜单添加自定义条目

向 GRUB 启动菜单添加自定义条目

您好,成功安装 Ubuntu 12.10 amd64 后,我现在无法启动 Windows 8。

以下是我的操作:

  1. 从 Windows 8 计算机管理中为 Ubuntu 腾出空间(15 GB)
  2. 使用 EFI 启动 Ubuntu 12.10 amd64 LiveUSB 并启用安全启动
  3. 最后创建了 2 个新分区(13 GB Ext4 Root 和 2 GB Swap)
  4. 选择 Windows 8 EFI 系统分区来安装引导加载程序

Grub 在启动时给出如下信息:

  1. Ubuntu(运行无问题)
  2. Windows 恢复环境(大量错误)
  3. Windows 8(下面描述了 2 条错误消息)

这 2 条错误消息是:

  • error: can't find command drivemap.
  • error: invalid EFI file path

答案1

我找到了一个临时的解决办法。

向 GRUB 启动菜单添加自定义条目

将下面的代码附加到/etc/grub.d/40_custom

menuentry "Windows 8" {
    insmod part_gpt
    insmod chain
    set root='(hd0,gpt1)'
    chainloader /EFI/microsoft/BOOT/bootmgfw.efi
}

您可以使用Ctrl+ Alt+T打开终端并运行sudo nano /etc/grub.d/40_custom,然后复制并粘贴代码。最后按Ctrl+O保存并按Ctrl+X离开。

小心: hd0,gpt1这是我的 EFI 系统分区 (ESP) 的 ID。如果您的 ESP 不是第一个硬盘上的第一个分区在启动期间,那么您的就不同了!例如,hd1,gpt2第二个驱动器上的第二个分区。

如果驱动器使用 MBR 和传统分区,则替换part_gpt为,并分别更改为。part_msdoshd0,gpt1hd0,msdos1

将更改应用到 GRUB

只需运行以下命令,它将生成一个新的 GRUB 配置,包括新的自定义条目:

sudo update-grub

现在重新启动,您应该能够启动 Windows 8。如果不行,并且 Windows 抱怨 BCD 配置损坏,则继续以超级用户身份运行:我如何修复 Windows 8 EFI Bootloader?


警告:在某些情况下,如果您启动 Windows 8,GRUB 将被 Windows 启动管理器取代为默认启动管理器。

答案2

GRUB 中的错误 Windows 条目是由于这个错误造成的:https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1024383

解决方案:跑步启动修复来自Recommended RepairliveCD (或者 liveUSB)。

答案3

我找到了一种让 Windows 8 关机的方法。请参阅 https://superuser.com/questions/499923/preinstalled-windows-8-and-linux-uefi-dual-boot-on-a-laptop/528581

在 W8 下,在提升权限的命令窗口中,运行 powercfg /h off。执行此操作时,W8 可能已经覆盖了 EFI 分区。我花了几次迭代来更改 bootmgfw.efi 并重置它,直到它卡住,但现在我很高兴。

我不知道启动 W8 是否足够,或者是否必须登录然后重新启动。也许有耐心的人(我花了半天多时间研究这个问题)可以告诉你。

答案4

“覆盖启动”是主板配置菜单“启动”选项卡上的一个菜单。它允许您选择并立即启动您设备上已安装的任何启动加载程序。

相关内容