Windows 8上UEFI上的双启动Ubuntu 12.10(GRUB-错误:找不到命令驱动器映射)


8

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

这是我的动作:

  1. Windows 8计算机管理为Ubuntu提供的预留空间(15 GB)
  2. 使用EFI并启用安全启动,启动Ubuntu 12.10 amd64 LiveUSB
  3. 在末尾创建了2个新分区(13 GB Ext4根和2 GB交换)
  4. 选择Windows 8 EFI System Partition来安装Bootloader

Grub在引导时给了我:

  1. Ubuntu(运作正常)
  2. Windows恢复环境(很多错误)
  3. Windows 8(以下描述了2条错误消息)

2条错误消息是:

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

纠正我选择了“新创建的EFI系统分区”来安装引导加载程序,但实际上是在Windows 8 EFS上安装了引导加载程序...
Kouros

您是否事先做了备份?即Windows 8的启动/系统分区很小,例如150-350 MB,所以也许您做到了dd if=/dev/sda1 of=/media/some_usb_pendrive/backupfile?如果存在这样的备份,我将还原可能已“损坏”的Windows系统/启动方。
humanityANDpeace

抱歉,没有备份,但是我设法使用Recovery Environment(通过按辅助按钮而不是开机按钮)恢复了Windows 8
Kouros

您是否认真重复了自己的问题?沿着Windows 8在UEFI上安装Ubuntu 12.10
duxk.gh 2013年

注意:升级到13.04后,在我的安装中删除了此更改。
gcb

Answers:


6

我找到了一个临时解决方案。

向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不是第一个硬盘驱动器上的第一个分区,那么您的ESP 会有所不同!例如hd1,gpt2,第二个驱动器上的第二个分区。

如果驱动器使用MBR和旧分区,并且分别更改为part_gptpart_msdos则替换为。hd0,gpt1hd0,msdos1

将更改应用于GRUB

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

sudo update-grub

现在重新启动,您现在应该能够启动Windows 8。如果不是,并且Windows抱怨BCD配置损坏,那么在超级用户上继续:如何修复Windows 8 EFI Bootloader?


警告:在某些情况下,如果您启动Windows 8,则GRUB将被Windows Boot Manager替换为默认启动管理器。


我应该做什么?我以为这是Windows数据分区(此处为gpt4),但它与gpt1一起使用,这是我唯一的EFI分区。我虽然安装ubuntu会覆盖EFI分区的Windows内容,就像grub对MBR所做的一样……
gcb 2013年

1
此解决方案不适用于我。字符是否`出现在set root='(hd0,gpt1)'预期的字符中。即使没有该字符,也会给我带来错误(我尝试使用gpt3)。错误是(hd0,gpt1)找不到。
iammilind

3

GRUB中错误的Windows条目是由于以下错误引起的:https : //bugs.launchpad.net/ubuntu/+source/grub2/+bug/1024383

解决方法:运行启动修复Recommended Repair从一个LiveCD(或的LiveUSB)。


1
在此之前,我必须在BIOS中禁用“安全启动”。
罗宾温斯洛

@RobinWinslow是的,Boot-Repair也对我有用(Lenovo Thinkpad S540),但前提是我禁用SecureBoot了BIOS,否则Windows 8仍然会抱怨...如果可以在保留SecureBoot的情况下使其正常工作,那就太好了
fpghost

0

我找到了关闭Windows 8的方法。参见 /superuser/499923/preinstalled-windows-8-and-linux-uefi-dual-boot-on-a-laptop/528581

在W8下,在提升特权的命令窗口中,运行powercfg / h off。到您这样做时,W8可能已经覆盖了EFI分区。我花了几次迭代来更改bootmgfw.efi并将其重置,直到卡住为止,但是现在我很高兴。

我无法确定仅引导W8是否足够,还是必须先登录然后重新引导。也许有更多耐心的人(我为此工作了半天以上)可以说出来。


0

我的Asus-x202笔记本电脑(运行W8和Ubuntu 13.04)上也有相同的问题。

暂时有点烦人的工作对我来说已经足够了:在启动菜单中转到系统(或者使用f2从头开始编写BIOS)。如果使用覆盖启动,Windows将照常启动。


1
您所说的“引导覆盖”到底指的是什么?我不明白您回答的那一部分。
gertvdijk

0

“替代引导”是主板配置菜单的“引导”选项卡上的菜单。它使您可以选择并立即启动设备上尚未安装的任何引导加载程序。


1
@edwin此答案可以使用扩展,但似乎确实是为了回答所提出的问题。vic:欢迎问Ubuntu!我建议对其进行编辑,以添加有关如何使用该功能的更多信息,并更全面地说明其解决此问题的原因。谢谢。
伊利亚·卡根

0

我的新HP Pavillion Sleekbook型号15-b142dx也存在类似问题。它预装了W8。我能够从Windows内部调整Windows分区的大小,然后从拇指驱动器安装了64位Ubuntu 13.04。但是,在重新启动时,W8正常启动,没有启动菜单。因此,我使用了“引导修复”,这使系统无法引导。在启动时,它将打印:

Failed to open \EFI\Microsoft\Boot\grubx64.efi - 800000000000000E 
Failed to load grub
Failed to open \EFI\BOOT\grubx64.efi - 800000000000000E
Failed to load grub
Failed to open \EFI\BOOT\grubx64.efi - 800000000000000E
Failed to load grub

然后它将关闭。

经过一番尝试和错误之后,我发现在引导过程中按F10键将带我进入BIOS,在此可以禁用安全引导。下次启动时,我从grub获得了一个LONG菜单,其中包含很多条目:

Windows UEFI bkpbootmgfw.efi
Windows Boot UEFI loader
EFI/HP/BIOSUpdate/CryptRSA32.efi
.
.
.

这些都包含在文件“ /etc/grub.d/25_custom”中。我制作了该文件的备份副本,然后删除了Windows Boot UEFI加载程序以外的所有条目。(这是允许W8引导的条目之一)。然后,我运行“ update-grub”,并整理好了更好的启动菜单,并且可以启动任何一个OS。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.