我安装了 Ubuntu 13.04 和 Windows 8(出厂时已安装)。我可以选择关闭 UEFI 和安全启动。安装过程很顺利,我可以使用这两个操作系统,我遇到的问题是尝试进入其中一个。如果我在 Ubuntu 中并重新启动,它会将我带到 GRUB 菜单,其中包含以下选项:
- Ubuntu
- Ubuntu 的高级选项
- Windows UEFI bootmgfw.efi
- Windows UEFI 恢复 bkpbootmgfw.efi
- Windows 启动 UEFI 恢复
- Windows UEFI 恢复 bootmgfw.efi
- Windows 启动 UEFI 恢复 sda2
- Windows 启动管理器(/dev/sda3 上的 UEFI)
- 系统设置
如果我选择 Ubuntu,它可以正常运行并且 Ubuntu 可以加载。
当我想要启动 Windows 时,我尝试了多个选项,所有选项要么直接加载到操作系统,要么给我 Windows 启动管理器,其中一个选项是:Windows 8.1。
这一切都很好,但如果我在 Windows 中,然后想回到 Ubuntu,就会出现问题。我重新启动(或关闭),当它重新启动时,它会直接带我进入 ASCII Windows 启动管理器,其中只有一个选项是 Windows 8.1。即使多次重新启动,也无法从这里进入 GRUB。然而,我找到了一种解决方法:首先,我再次重新启动并进入 BIOS,将 UEFI 更改为 Legacy,然后重新启动。当它重新打开时,它显示“未找到操作系统!”,所以我再次重新启动它,再次进入 BIOS 并将其从 Legacy 改回 UEFI。现在,当我重新启动时,它会给我 GRUB 菜单。从 Windows 转到 Ubuntu 需要很长的过程,我知道一定有什么地方出了问题。我已经多次经历了启动修复过程,并更改了 Windows 中用于关机的电源设置,以便它在关机时不会创建映像。
另外,有没有办法更改 GRUB 菜单以仅提供我想要的两个选项?我不需要也不想要全部 11 个。我还看到其他人将其设置为启动到 Windows 8 GUI 以获取启动选项,但我似乎无法弄清楚如何绕过 GRUB 并实现这一点。我尝试使用 EasyBCD,但似乎没有任何作用。我知道双启动这些操作系统的整个过程存在很多问题,所以如果这个 GUI 不起作用,我也没事。
答案1
启动管理器为您提供不同的启动系统。UEFI 是一个启动管理器,除非您使用的是“有缺陷的”UEFI,它们将 UEFI 硬编码为仅启动 Windows。Grub 既是启动管理器,又是启动加载器。EasyBCD 是一个启动管理器。
UEFI 也使用 NVRAM,因此它会记住以前的条目。您可能必须使用 efibootmgr 手动清理旧条目。
您输入的 bkpbootmgfw.efi 是 Boot-Repair 为有缺陷的 UEFI 重命名的实际 Windows efi 文件。它使 shim 具有 Windows efi 文件名,因此 UEFI 可以启动 grub。如果您可以在 UEFI 中启动 ubuntu 条目,请撤消重命名。并在任何 Windows 更新之前撤消重命名,因为它会覆盖文件,并且 Boot-Repairs 备份可能是较旧的版本,从而导致问题。
Grub2 的 os-prober 也发现了旧的 BIOS 类型启动项,该问题已在 13.10 中修复,但您可能需要关闭 os-prober 以免它添加不正确的条目。
删除 BCD 和 NVRAM 中的重复固件对象
http://technet.microsoft.com/en-us/library/cc749510%28v=ws.10%29.aspx
UEFI NVRAM 启动条目缓存在 BCD 存储中 BCD 对某些 UEFI 全局变量具有 1:1 映射,每次操作 {fwbootmgr} 时,NVRAM 都会自动更新
有些系统在 Windows 内部注册 grub/shim 效果更好 - 对于那些不断将 Windows 重置为默认设置的人来说
Windows 8.1 Ubuntu 13.10 双启动时不显示 Grub
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
https://coderwall.com/p/vfyqkg
sudo efibootmgr -v
“-v”选项显示所有条目,以便您可以确认删除的是正确的条目,然后使用“-b ####”(指定条目)和“-B”(删除条目)的组合。示例 #5 是删除:
http://linux.dell.com/cgi-bin/gitweb/gitweb.cgi?p=efibootmgr.git;a=blob_plain;f=README;hb=HEAD
http://software.intel.com/en-us/articles/efi-shells-and-scripting/
在 /etc/default/grub 中我添加了以下内容:
sudo cp -a /boot/grub/grub.cfg /boot/grub/grub.cfg.backup
gksudo gedit /etc/default/grub
GRUB_DISABLE_OS_PROBER=true
如果您的 grub 已更新以添加正确的条目,您可以将其改回 false 或删除条目。对于您的版本,您必须使用 Boot-Repair 或手动添加正确的条目来启动 Windows。
如果从 UEFI 您可以启动 ubuntu 条目:要撤消并将文件重命名为其原始名称,您只需勾选 Boot-Repair 的“恢复 EFI 备份”选项。