/boot/grub/grub.cfg 有两个不同的 Linux 版本,并且丢失了 Windows 加载程序

/boot/grub/grub.cfg 有两个不同的 Linux 版本,并且丢失了 Windows 加载程序

我正在使用 grub2 运行 UEFI 双启动 Alienware 系统(Windows 8.1 - Ubuntu 16.04)。在正常 dist-upgrade 之后,我发现新的内核更新“4.4.0-57”,它应该会取代“4.4.0-53”。但是,我在 Grub2 中丢失了 Windows 8.1 条目,现在我只能启动 Ubuntu,update-grub 对我来说不起作用;我检查了 /boot/grub/grub.cfg,它给了我这个。

grub配置文件

有任何想法吗?

编辑:引导修复摘要 http://paste2.org/GOGjKmNP

答案1

剧本update-grub应该选择 Windows 启动加载程序,因为它如下所示:

sda2:
__________________________________________________________________________
    File system:       vfat
    Boot sector type:  Windows 8/2012: FAT32
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        /EFI/Boot/bootx64.efi /EFI/ubuntu/MokManager.efi 
                       /EFI/ubuntu/fwupx64.efi /EFI/ubuntu/grubx64.efi 
                       /EFI/ubuntu/shimx64.efi 
                       /EFI/Microsoft/Boot/bootmgfw.efi 
                       /EFI/Microsoft/Boot/bootmgr.efi 
                       /EFI/Microsoft/Boot/memtest.efi

请注意/EFI/Microsoft/Boot/bootmgfw.efi,这是 Windows 引导加载程序。我最初的假设是update-grub脚本中的一个错误导致它出于某些未知原因忽略了 Windows 引导加载程序。我想到两种解决方法……

选项1

在文本编辑器中打开该/etc/grub.d/40_custom文件并向其中添加以下行:

menuentry "Windows 8.1" {
    set root='(hd0,gpt2)'
    chainloader /EFI/microsoft/BOOT/bootmgfw.efi
}

请注意,这些行是针对您的特定系统定制的,如果其他人需要实施此修复,则可能需要进行调整。(hd0,gpt2)具体来说,规范标识了 Windows 引导加载程序文件所在的位置。此外,此引导条目有许多变体可供尝试。在 GRUB 中对自定义引导条目进行 Web 搜索可能会有所帮助。

编辑此文件后,键入sudo update-grub并检查grub.cfg或重新启动以查看效果。运气好的话,将添加适用于 Windows 的 GRUB 2 条目并使其正常工作。如果该条目不起作用,那么当您尝试该条目时 GRUB 发出的任何错误消息都可能是有用的。

选项 #2

此解决方法基于这样的假设:Windows 快速启动和/或休眠功能正在造成细微的文件系统损坏,从而导致update-grub失败。因此,目标是禁用这些 Windows 功能。不过,要做到这一点,您必须先启动 Windows。在尝试的过程中,您还将测试另一个可能比 GRUB 更好的启动管理器,即使文件系统损坏不是问题的原因。要尝试此方法:

  1. 下载我的 USB 闪存驱动器或 CD-R 版本的rEFInd 启动管理器。(两个文件的下载链接均在该页面上。)
  2. 使用您下载的文件准备启动介质。
  3. 重新启动到 rEFInd 启动介质。(您可能需要使用固件的启动管理器来启动可移动介质,就像安装 Ubuntu 时所做的一样。)
  4. 重新索引应该显示 Windows 和 Ubuntu 的条目。如果是,则启动 Windows。
  5. 在 Windows 中,禁用快速启动和休眠,如下所述这里这里, 分别。
  6. 重新启动到 Ubuntu。
  7. 再试sudo update-grub一次。
  8. 如果这仍然不起作用,但如果 rEFInd 为您提供了启动 Windows 的选项,请使用其 PPA 或 Debian 包安装 rEFInd。这将使 rEFInd 成为默认的引导加载程序;由于它有效,此步骤将绕过仍然存在问题的(对您而言)GRUB,转而使用有效的(对您而言)rEFInd。

如果 rEFInd 在第 4 步中没有显示启动 Windows 的选项,或者该选项不起作用,则问题比 Boot Info Script 输出中显示的要深。我猜如果是这种情况,Windows 引导加载程序文件已损坏。如果您碰巧有备份,从备份中恢复文件可能会解决问题。如果没有,您应该在 Windows 论坛上询问恢复问题。

相关内容