安装 openSUSE 后 Windows 10 项目未显示在 GRUB 菜单中

安装 openSUSE 后 Windows 10 项目未显示在 GRUB 菜单中

我将 openSUSE Leap 15 与 Windows 10 一起安装在同一硬盘上,但分配了可用空间。我期望双启动选项,但 Windows 10 项目根本没有显示在 GRUB 菜单中。所有分区(包括Windows EFI系统分区)仍然存在。但我不知道如何恢复 Windows 启动。如何重新启动 Windows(不丢失 openSUSE)?

这是硬盘的当前状态:

Device: /dev/sda
Size: 232.89 GiB
Encrypted: No
Device Path: pci-0000:00:1f.2-ata-1
Device ID 1: ata-Samsung_SSD_850_EVO_250GB_S21NNXAG700322J
Device ID 2: scsi-0ATA_Samsung_SSD_850_S21NNXAG700322J
Device ID 3: scsi-1ATA_Samsung_SSD_850_EVO_250GB_S21NNXAG700322J
Device ID 4: scsi-35002538d4028bcda
Device ID 5: scsi-SATA_Samsung_SSD_850_S21NNXAG700322J
Device ID 6: wwn-0x5002538d4028bcda

和一张图片:

在此输入图像描述

答案1

请验证您当前安装的 GRUB 软件包的名称。如果它们包含类似内容grub2-i386-pc(或目录/boot/grub2/i386-pc存在),则说明您不小心以旧版 BIOS 模式启动了 SuSE 安装程序,因此它安装了旧版 BIOS 版本的 GRUB 引导加载程序,这自然无法引导任何使用较新 UEFI 引导的操作系统方案。

要解决此问题:

首先,了解如何在 UEFI 模式下将系统引导至 Linux 并访问 OpenSUSE 安装。 openSUSE 安装介质位于救援系统模式,或者 LiveCD/USB 可能适合于此。这是 openSUSE 文档中相关说明的链接

通过运行来验证您是否确实处于 UEFI 模式efibootmgr -v。如果它响应,则EFI variables are not supported on this system您无法在 UEFI 模式下启动,而是在传统 BIOS 模式下启动。 (在传统 BIOS 模式下启动会禁用 UEFI 运行时服务,这是用于访问 EFI NVRAM 变量的机制。)

您可能需要更改 UEFI BIOS 设置,以优先选择 UEFI 启动而不是旧版 BIOS,或者完全禁用旧版兼容性(通常称为 CSM = 兼容性支持模块)。此时的实际过程特定于您的硬件和 UEFI BIOS。请查阅您的硬件文档。

一旦您成功以 UEFI 模式启动系统并访问 openSUSE 安装,消除任何当前的 GRUB 引导加载程序包。然后将您的 EFI 系统分区挂载为/boot/efi并完全重新安装 GRUB2。如果包管理要求您选择 GRUB2 硬件相关包的实际版本,请选择grub2-x86_64-efi而不是grub2-i386-pc.

通常,GRUB 的完全重新安装包含一个脚本,该脚本将使用该工具自动更新 EFI NVRAM 变量efibootmgr。使用efibootmgr -v,您应该会看到启动选项列表,类似于 UEFI BIOS 设置中的可用选项。 (重新)安装 UEFI 版本的 GRUB 后,列表应包含 OpenSUSE 的新条目,指定grubx64.efiEFI 系统分区中引导加载程序文件的位置。如果由于某种原因没有发生这种情况,您可以使用如下命令手动创建它:

efibootmgr -c -d /dev/sda -L "openSUSE" -l '\EFI\opensuse\grubx64.efi'

请注意,该efibootmgr -d选项指定包含 EFI 系统分区的整个磁盘设备,而不是分区本身。

EFI 系统分区并非 Windows 独有:在 UEFI 系统中,所有已安装的操作系统都应该将其主引导加载程序放在那里。甚至还有一个标准化的目录模式来避免引导加载程序之间的冲突:每个供应商都应该将他们的引导加载程序放在\EFI\<vendor name>\目录中,openSUSE 和 Microsoft 都遵守这一点。

答案2

您可以尝试类似于找到的解决方案这里

  1. 启动至 SUSE 并挂载 Windows 分区。
  2. 从 shell 运行:

    sudo os-prober
    
  3. 如果找到 Windows,则运行:

    grub2-mkconfig -o /boot/grub2/grub.cfg
    

相关内容