EFI 双启动 Ubuntu 14.04 和 Wind10 - Grub 行为异常

EFI 双启动 Ubuntu 14.04 和 Wind10 - Grub 行为异常

我在联想 y50-70 上安装了 EFI 双启动。在 win10 发布的第一天,我就毫无问题地升级到了 win10。

这是我的 Hd 的结构:

  • sda1-Windows 恢复分区
  • sda2——Ubuntu EFI 分区
  • sda3 - LSP_ESP:我认为是联想恢复系统的 ESP
  • sda4-无法安装的分区:我推断这是 win10 ESP
  • sda5-win10主分区
  • sda6——联想恢复分区
  • sda7-PBR_DRV:不知道这个分区的用途,它是由联想预先配置的。
  • sda8——交换
  • sda9——Ubuntu 根分区

我已经在 win10 上禁用了快速启动,在 BIOS 上禁用了安全启动,Ubuntu 以 EFI 模式安装,Ubuntu ESP 具有更高的启动优先级。

问题:

一个多月以来,双启动与 win10 运行良好。现在(可能是在最后一次内核头更新之后)笔记本电脑自动启动 win10。

试图:

我认为问题出在 ubuntu ESP 损坏,因此我按照标准 CHROOT 程序从实时 USB 在 sda2 上重新安装 ubuntu ESP,运行以下命令

apt-get install --reinstall grub-efi-amd64

一切都运行正常,但重新安装后,在更新 grub 阶段,找不到 Windows 引导加载程序,还运行了另一个更新 grub 命令。我退出 chroot 并重新启动。
重新启动后,ubuntu ESP 正确启动,但正如预期的那样,没有 Windows 引导加载程序选项。我登录到我的 Ubuntu 并执行了另一次更新 grub。
这次找到了 Windows 引导加载程序,Youppie!问题解决了!
其实这并不容易。再次重新启动后,没有显示 GRUB 提示符,win10 自动启动。再次。注意:
我重复了两次该过程,示例步骤,相同的中间结果,相同的最终效果。

循环要点:

  1. 自动启动 win10
  2. 使用 chroot 从实时 USB 恢复
  3. 更新 grub -> win10 加载程序未找到
  4. 重启->显示 grub 提示符->启动进入 ubuntu
  5. 更新 grub -> 找到 win10 -> 重启
  6. 自动启动 win10

步骤 6 之前的 efibootmgr 输出:

BootCurrent: 0004  
Timeout: 0 seconds  
BootOrder: 0004,0003,2003,2001,0002,2002  
Boot0000* EFI Network 0 for IPv4 (F8-A9-63-4E-C6-FF)  
Boot0001* EFI Network 0 for IPv6 (F8-A9-63-4E-C6-FF)  
Boot0002* Lenovo Recovery System  
Boot0003* Windows Boot Manager  
Boot0004* ubuntu  
Boot0005* EFI USB Device (JetFlashTranscend 16GB)  
Boot2001* EFI USB Device  
Boot2002* EFI DVD/CDROM  
Boot2003* EFI Network  

uname -a 输出:

Linux Elianto 3.16.0-48-generic #64~14.04.1-Ubuntu SMP Thu Aug 20 23:03:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux  

如果您需要中间步骤(命令输出)的更多数据,请在评论中询问。

谢谢。

答案1

我想到两种可能的解决方案:

  1. 安装我的rEFInd 启动管理器。此工具在启动 Windows 方面比 GRUB 更可靠,因此它可以解决导致 GRUB 忽略 Windows 条目的任何原因。请注意,这意味着您将绕过 GRUB,至少在 Windows 启动时是如此;相反,您将看到 rEFInd 的菜单。(要启动 Ubuntu,rEFInd 应该能够直接启动 Linux 内核或使用 GRUB。)
  2. 为 Windows 创建一个手动 GRUB 启动节,如我在回答中所述这个问题。您需要更改一些详细信息,例如分区标识符(可能应该是(hd0,gpt2))。

另外,仅供参考,您的/dev/sda2是 EFI 系统分区 (ESP)。请注意,它是电喷系统分区 - 它“属于” EFI(计算机的固件),而不是任何一个操作系统。操作系统需要将其引导加载程序存储在 ESP 中,但 ESP 实际上并不属于任何一个操作系统;它通常由所有操作系统共享。也就是说,磁盘上可以有多个 ESP,并且一些用户限制每个操作系统使用专用 ESP。这似乎不是你的情况,虽然如果没有更详细的信息(例如 或 的输出),我无法 100% 肯定这一点sudo parted /dev/sda printsudo gdisk -l /dev/sda(您提供的摘要几乎总是不如剪切和粘贴的程序输出。)这与您的问题无关,但我认为我应该澄清这一点混淆。

相关内容