Ubuntu 安装在 EFI 模式下,但 Windows 安装在传统 BIOS 模式下

Ubuntu 安装在 EFI 模式下,但 Windows 安装在传统 BIOS 模式下

我之前安装了 Windows 10 和 Ubuntu,使用 grub 可以双启动 Windows 和 Ubuntu。出于某些原因,我决定重新安装 Ubuntu,但不幸的是,它安装了错误的 grub 配置。现在我无法启动 Windows,无法从 grub(或os-prober)看到它。

我有多个磁盘,Windows 安装在一个 SSD(sdc)上,Linux 有自己的 HDD(sda)。

我想我已经尝试了 askubuntu.com 上的多个答案,但是到目前为止,它们都没有起作用,而且我对所有内容都是在哪种配置下安装的感到更加迷茫,无论是 legacy 还是 uefi,尤其是因为它以前是可以正常工作的。

我附上了我的启动修复报告: 启动修复报告

从报告中我可以看到 Windows 已被检测到,当我尝试使用 Windows Live Disk 使用时cmd bootrec /FixMbr,它成功了,但没有任何变化。自动修复没有。报告还指出 sdc1 有启动文件:

  • /启动管理器
  • /启动/BCD

在 GParted 中我可以看到 /sdc1 具有标志启动。

启动修复建议了一些它自己无法完成的步骤,所以我尝试了这种方法。我从实时 USB 启动并开始按照说明操作。有一次,他们想手动删除 grub,但我无法做到,因为 apt 需要插入 cdrom -问库本图

我尝试直接从 Windows 磁盘启动,然后收到错误“没有这样的设备,未知的文件系统”: 在此处输入图片描述

您知道我该如何修复这个问题并获得正确的启动配置吗?我尝试过更改 BIOS 传统/uefi 设置,但不确定如何以及什么是最佳配置 -个人简介页面

我确实想保留我的 Windows 安装,但我可以再次重新安装 ubuntu 以正确执行此操作,并且 grub 可以看到 Windows,但我不知道使用当前配置重新安装是否会改变任何东西。

答案1

Ubuntu 安装在 EFI 模式下,但 Windows 安装在传统 BIOS 模式下

在 EFI 模式下,GRUB 无法链式加载旧式 BIOS 引导加载程序,反之亦然。这意味着 Windows 未添加到 GRUB 引导菜单中。

要解决此问题,必须在传统 BIOS 模式下重新安装 GRUB,或者需要将 Windows 安装转换为使用 EFI 启动。

为了在 EFI 启动模式下检测 Windows 启动管理器,GRUB 会在 EFI 系统分区 (ESP) 中搜索bootmgfw.efi。根据 Boot-Repair 的输出,此文件不存在;安装 Windows 的磁盘包含旧式 BIOS MBR,但没有 ESP。

将 Windows 安装转换为 EFI

考虑到 OP 希望将来升级到 Windows 11,最好的解决方案是将 Windows 安装转换为 EFI 启动。

从 Windows 安装(最好是该安装的恢复环境,否则您将需要提供开关/allowFullOS来强制转换),或者从 Windows PE 环境(如 Windows 安装程序),您可以运行mbr2gpt将 Windows 磁盘转换为 GPT 分区表,并创建 ESP。

从要转换的 Windows 安装的恢复环境来看,系统磁盘就是要转换的磁盘,因此/disk:<number>不需要识别磁盘号和提供参数。

否则,磁盘号与 中显示的磁盘号相同diskpart。您可以从命令提示符中运行来识别您的磁盘号list diskdiskpart

X:\Windows\System32>diskpart

Microsoft DiskPart version 10.0.19041.964

Copyright (C) Microsoft Corporation.
On computer: ...

DISKPART> list disk

然后您可以键入exit以返回命令提示符。

验证转换

在转换磁盘之前,您必须通过开关检查磁盘是否能够转换/validate

从命令提示符:

X:\Windows\System32>mbr2gpt /validate /disk:<number>

如果磁盘符合转换条件,您将看到:

MBR2GPT: Validation completed successfully

执行转换

如果一切顺利,并且您确信选择了正确的磁盘,则可以继续转换:

X:\Windows\System32>mbr2gpt /convert /disk:<number>

如果一切顺利,您将看到这些消息:

MBR2GPT: Conversion completed successfully
MBR2GPT: Before the new system can boot properly you need to switch the firmware to boot to UEFI mode!

如果您重新启动系统,Windows 安装可能会开始通过 Ubuntu 启动。Windows 成功启动后,您可以关闭 Windows 并从系统固件中的启动选择菜单中选择 Ubuntu。

更新 GRUB 启动菜单

打开终端,然后运行update-grub

$ sudo update-grub

您应该会看到Windows Boot Manager已添加到 GRUB 启动菜单中。如果是这样,您现在可以在系统固件中禁用传统 BIOS 启动。

还要注意,固件的启动设备选择菜单中应该有一个Windows Boot Manager条目。如果没有,则需要bootrec /FixMBR在 Windows 以 EFI 模式启动时运行以将选项添加到 NVRAM。这可能会使该Windows Boot Manager条目在启动顺序中的位置高于Ubuntu。要反转此操作,请从终端列出 NVRAM 启动选项条目:

$ sudo efibootmgr

找到与 Ubuntu 相对应的数字,然后复制BootOrder,将 Ubuntu 移到开头,然后将其粘贴到命令中,即,如果启动顺序为0001,0002,0003,而 Ubuntu 为0003,则运行:

$ sudo efibootmgr -o 0003,0001,0002

从下次重启开始,Ubuntu 将成为第一个启动的操作系统。

相关内容