我在联想 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 自动启动。再次。注意:
我重复了两次该过程,示例步骤,相同的中间结果,相同的最终效果。
循环要点:
- 自动启动 win10
- 使用 chroot 从实时 USB 恢复
- 更新 grub -> win10 加载程序未找到
- 重启->显示 grub 提示符->启动进入 ubuntu
- 更新 grub -> 找到 win10 -> 重启
- 自动启动 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
我想到两种可能的解决方案:
- 安装我的rEFInd 启动管理器。此工具在启动 Windows 方面比 GRUB 更可靠,因此它可以解决导致 GRUB 忽略 Windows 条目的任何原因。请注意,这意味着您将绕过 GRUB,至少在 Windows 启动时是如此;相反,您将看到 rEFInd 的菜单。(要启动 Ubuntu,rEFInd 应该能够直接启动 Linux 内核或使用 GRUB。)
- 为 Windows 创建一个手动 GRUB 启动节,如我在回答中所述这个问题。您需要更改一些详细信息,例如分区标识符(可能应该是
(hd0,gpt2)
)。
另外,仅供参考,您的/dev/sda2
是 EFI 系统分区 (ESP)。请注意,它是电喷系统分区 - 它“属于” EFI(计算机的固件),而不是任何一个操作系统。操作系统需要将其引导加载程序存储在 ESP 中,但 ESP 实际上并不属于任何一个操作系统;它通常由所有操作系统共享。也就是说,磁盘上可以有多个 ESP,并且一些用户限制每个操作系统使用专用 ESP。这似乎不是你的情况,虽然如果没有更详细的信息(例如 或 的输出),我无法 100% 肯定这一点sudo parted /dev/sda print
。sudo gdisk -l /dev/sda
(您提供的摘要几乎总是不如剪切和粘贴的程序输出。)这与您的问题无关,但我认为我应该澄清这一点混淆。