Windows 8.1 升级后无法启动 Ubuntu,启动修复无法修复

Windows 8.1 升级后无法启动 Ubuntu,启动修复无法修复

我有一台 sony vaio duo 11 敞篷车,它成功双启动 lubuntu 13.10 和 windows 8,但升级到 windows 8.1 后,它除了 windows 之外什么都加载不了。

我禁用了 Windows 的“快速启动”功能,然后运行启动修复,但它并没有解决问题(当 Windows 8 弄乱启动配置时,它可以工作,但 Windows 8.1 不行)。我在 Windows 上安装了 esayBCD,现在我看到了它的启动加载程序,但没有看到 grub。我甚至尝试在 /dev/sda 上进行 chroot 和 grub 安装,但我不认为 grub 是启动时加载的启动加载程序。

我的猜测是 Windows 将引导加载程序放在了 /dev/sda 以外的其他地方。

如果我使用重新找到的 USB 磁盘启动系统,我可以成功加载 lubuntu。

这是启动修复输出:http://paste.ubuntu.com/6598795/ (这个是在从重新找到的 USB 磁盘启动 sda2 lubuntu 后运行的,但我也尝试使用 Live CD,结果相同)

以下是我到达那里的简要经历:

  • 在 BIOS 中,我禁用了“安全启动”并启用了“UEFI 模式”。
  • 格式化硬盘以清除索尼预装的 Windows 8
  • 在 sda2 上安装了 Lubuntu 13.10(sda1 由安装程序创建为 UEFI 分区)
  • 在 sda3 上安装了 Android-x86 (目前一切正常)
  • 在空闲空间中安装了 Windows 8(它创建了 sda4-5-6)。Windows 搞砸了启动,但启动修复修复了这个问题。Windows 一直在覆盖启动加载程序,直到我删除了它的“快速启动”选项。 (一切恢复正常)
  • 将 Windows 升级到 8.1,现在有一个 Windows 引导加载程序,我(再次)删除了“快速启动”选项,我反复在 /dev/sda 上安装了 grub,但我总是得到另一个只能运行 Windows 的引导加载程序(windows/microsoft/easyBCD??)。

我想了解启动时运行哪个引导加载程序、它位于何处以及如何更改它。谢谢!

编辑:我按照官方说明在 Windows 中安装了 rEFInd,并有效地更改了“Windows 启动管理器”部分,现在它看起来如下所示:

S:\EFI\refind>bcdedit /enum active /v
Windows Boot Manager
--------------------
identificatore          {9dea862c-5cdd-4e70-acc1-f32b344d4795}
device                  partition=S:
path                    \EFI\refind\refind_x64.efi
description             rEFInd am
locale                  it-IT
inherit                 {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}
default                 {b781b519-6749-11e3-a4a1-eb3a69ac7fb1}
resumeobject            {b781b518-6749-11e3-a4a1-eb3a69ac7fb1}
displayorder            {b781b519-6749-11e3-a4a1-eb3a69ac7fb1}
                        {b781b512-6749-11e3-a4a1-eb3a69ac7fb1}
                        {b781b524-6749-11e3-a4a1-eb3a69ac7fb1}
toolsdisplayorder       {b2721d73-1db4-4c62-bf78-c548a880142d}
timeout                 5
displaybootmenu         Yes

我仍然得到一个不是 rEFInd!! 的引导加载程序,它看起来与此类似: Windows 旧版引导加载程序

答案1

首先尝试一下

在 Win 8.1 中,按住 SHIFT 并单击“重新启动”。它应该会带来高级启动选项。您应该能够从那里选择您的 Ubuntu 启动分区,然后启动它。

省去了重新安装的麻烦,但是必须让 Windows 加载 Ubuntu……

答案2

您的 Boot Repair 输出显示没有安装 BIOS/CSM/旧版引导加载程序,因此您看到的屏幕不太可能与此有关。它更可能是 Windows EFI 模式引导管理器。

您已采取了所有正确的步骤,因此令人费解的是它为什么不起作用。不过,您的症状与启用了安全启动的计算机基本一致,因此首先,我建议您检查固件的安全启动设置。也许在您禁用它之后它又重新打开了,或者您忽略了设置中的一些奇怪之处。(另一方面,您可以使用 rEFInd USB 闪存驱动器启动这一事实与这种可能性相矛盾。不过,还是值得检查一下……)

如果这不起作用,你可以考虑一个相当激进的方法(但这样做仅有的如果您目前可以通过 rEFInd USB 闪存驱动器启动 Linux):

  1. 启动 Boot Repair 并使用高级菜单选择恢复备份的选项。Boot Repair 输出表明这些选项已应用,但它们可能会造成一些混乱,因此最好撤消这些更改。
  2. 备份 ESP。(只需将/boot/efi目录树复制到备用 USB 闪存驱动器或 Linux 中的某个方便目录即可 - 但如果有必要,USB 闪存驱动器可以在 Windows 下访问。)
  3. 删除全部ESP 上的文件。
  4. 使用efibootmgr或固件工具,从 NVRAM 中删除所有固件的启动管理器条目。您可以键入sudo efibootmgr -v以查看条目是什么,然后使用选项-B-b ####依次删除每个条目,如sudo efibootmgr -B -b 0001删除Boot0001。您需要-B/-b对每个条目重复该命令。
  5. 在 Linux 中重新安装 rEFInd。(或者,您可以使用 重新安装 GRUB 2。grub-install
  6. 如果 rEFInd 从硬盘启动并使您能够启动 Linux,请尝试恢复EFI/Microsoft子目录。

这里的想法是清除 ESP 和 NVRAM 中的所有垃圾,从而使您可以从头开始。

答案3

我用这种方式解决了这个问题:

  • 从 refind usb 启动盘启动 lubuntu。
  • 删除 /boot/efi 中的所有内容
  • mkdir /boot/efi/EFI(否则 boot-repair 不会意识到有一个 EFI 分区)
  • 启动修复选择选项“单独的/boot/efi”分区。

此时 grub 工作并启动 lubuntu (和 android-x86)。

为了恢复 Windows,我必须恢复文件夹 /boot/efi/Microsoft,然后将其重命名为 Microsoft2并将其添加到 /etc/grub.d/40_custom :

menuentry "Windows Boot Manager (UEFI on /dev/sda1)" --class windows --class os {
    insmod part_gpt
    insmod fat
    set root='hd0,gpt1'
    chainloader /EFI/Microsoft2/Boot/bootmgfw.efi
}

我不得不重命名该文件夹,因为奇怪的是,如果有一个名为“Microsoft”的文件夹,则会显示 Windows 引导加载程序而不是 grub(我真的很想知道为什么)。

答案4

我必须关闭 BIOS 中的“快速启动”选项,这样才有效。

我在 Windows 8.1 中启用了快速启动选项,并在 BIOS 中启用了 UEFI 和安全启动选项。我的设置是 Windows 8.1 Pro 和 Ubuntu 13.10。我还尝试了 Debian 7.3,它给我带来了同样的问题,直到我对 BIOS 进行了上述更改。

相关内容