我在预装了 Windows 8 的 ASUS Zenbook UX32VD 中安装了 Ubuntu(~EFI 模式)。它已禁用安全启动。我在放置根目录的同一分区中安装了 grub(在我的情况下是 sda7)。
安装后,Ubuntu 可以加载并运行,非常好。
但是 grub 中还有另外两个分区没有运行:
Windows Recovery Enviroment (loaer) (on /dev/sda2)
Windows 8 (loader) (on /dev/sda4)
每当我尝试加载以上任何内容时,我都会得到:
error: can't find command <<drivemap>>.
error: invalid EFI file path.
我在网上发现很多人遇到了类似的问题:https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1024383
我尝试使用 Ubuntu 的 Boot-repair(推荐修复)实用程序,并且在 grub 中发现了 2 个新条目,分别称为:
Windows UEFI bootmgfw.efi
Windows Boot UEFI Loader
他们加载了 Windows 8,但缺少恢复分区。我尝试使用 Boot-repair 多次,并使用不同的参数,这可能会使 bootmgfw.efi 失败,但没有一个添加恢复分区条目:
http://paste.ubuntu.com/1690668/ (这是我进行的最后一次启动修复。编辑:此启动修复使用了推荐修复)
我想知道如何在 grub 中添加一个条目来加载恢复一。任何帮助我加载恢复分区的帮助都将不胜感激。
答案1
Windows RE 不能直接从 GRUB 加载,因为它需要bootmgfw.efi
调用它。唯一的方法是通过 Windows 8,因为它依赖于 Windows 的底层框架才能加载。只要您没有移动原始分区(Windows RE 和 Windows 8),您就应该能够通过 Windows 进入。否则,您将需要重建 BCD,这超出了本问题的范围。
答案2
我知道帖子晚了,但我找到了解决方案。
我启动了 Ubuntu 16.04 UEFI USB,并关闭了安全启动:。我有一台戴尔电脑,我正在为一位升级到 Windows 10 的客户工作,他想运行他们无法访问的出厂重置。
从 USB 启动并选择“尝试 Ubuntu...”。
打开集线器并打开磁盘。
在主硬盘上查找大约 5xxmb 大小的分区,并记下分区号。我注意到有 2 个分区。第一个是 /dev/sda1,所以我挂载了它并查看了内容。我注意到
/EFI/Dell/Boot/bootmgfw.efi
重新启动计算机并在 grub 菜单中按“e”来编辑条目。
清除文本并添加以下内容:
insmod part_gpt
insmod chain
set root='(hd1,gpt1)'
chainloader /EFI/Dell/Boot/bootmgfw.efi
然后我点击F10并启动到Windows菜单,选择故障排除,然后选择戴尔备份和恢复。
您可能需要尝试使用 set root 行,将 hd1 更改为 hd0 或 hd2 或其他任何内容,具体取决于您有多少个驱动器。 gpt1 是分区号,因此如果您的分区号是 gpt4,/dev/sda4
则需要在此处使用 gpt4。我选择第一个分区的原因是:1) 分区根目录中有一个 EFI 文件夹,2) 该 EFI(戴尔)中有一个制造商文件夹,3) 它包含 Boot/bootmgfw.efi,据我所知,这是一个 Windows 启动管理器二进制文件。
答案3
我遇到了几乎同样的问题(看这里)(同一台机器!),添加/更改正常启动项(Windows 8(加载器)(在/dev/sda4上))为
setparams 'Win8'
set root='(hd0,gpt1)'
chainloader /EFI/microsoft/BOOT/bootmgfw.efi
修复了这个问题。但是,我无法让恢复程序工作。我确实需要这个。有人找到解决方案了吗?
编辑:
这是一次似乎可以修复恢复模式的尝试:
setparams 'Win Recover - Recovered'
set root='(hd0,gpt2)'
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
它启动了,然后出现蓝屏。我不知道这是因为这个条目有误还是我的 win8 坏了...如果有人能验证它是否正常工作 - 那就太好了!