多重启动 Windows 10 和 Linux,看不到 Windows,EFI 问题

多重启动 Windows 10 和 Linux,看不到 Windows,EFI 问题

旧 HD 磁盘崩溃后,我购买了新 SSD,并想设置多重启动 Windows 10 和 Linux,但遇到了 UEFI 问题。

我的磁盘:

  • /dev/sda 是新的 SSD。Linux 薄荷 21.3位于 /dev/sda5 上,并且Windows 10应该位于 /dev/sda1-4 上。据我了解 /dev/sda1 是电喷分割。
  • /dev/sdb 是我之前拥有的 SSD。它有Linux 薄荷 20.3,和一个旧的Windows 7的(我不关心Windows 7,我想暂时保留Linux来恢复一些数据)。
  • /dev/sdc 是一个旧硬盘,我的 LVM2 分区已损坏。我目前不关心它。

我希望能够多重启动 Linux Mint 21.3 和 Windows 10。我无法让它发挥作用!

  • 我是无法启动 Windows 10:(
  • 当我运行 update-grub 或 grub-customizer 时,它看不到我的 Windows 10。注意操作系统探针已启用。
  • 我尝试在 Windows 10 的 GRUB 中添加一个条目,但在某些时候,您必须为 Windows 10 的磁盘提供某种 UUID,并且它看起来不像 lsblk 提供的普通 UUID,而是更短。我不知道我应该提供什么,并且我的尝试没有成功(当我启动时,它说找不到该磁盘)。
  • 在某些时候,我更改了 boot、bios_grub 和 efr 之间的 /dev/sda 分区的标志。我不确定应该为 /dev/sdaX 设置哪些标志
  • 我假设我的 BIOS 支持 UEFI,但我不确定 + 我在 BIOS 中没有看到可以让我从 Legacy 切换到 UEFI 的开关,反之亦然。我的主板是 MSI B75MA-P45。
  • 我尝试从 Linux Mint live disk 启动修复实用程序,您可以在那里找到我的完整布局:https://sprunge.us/Lpnlrf请注意,/dev/sda 是现场 USB 薄荷,因此我的第一个 SSD 是 /dev/sdb,第二个 /dev/sdc,硬盘 /dev/sdd。
  • 启动 Linux Mint 21.3 时, sudo efibootmgr -v 回答“此系统不支持 EFI 变量。我没有 /sys/firmware/efi。但我有软件包 grub-efi-amd64、grub-efi-arm 和grub-efi 已安装。

感谢您的帮助 :)

答案1

/dev/sda 是新的 SSD。 Linux Mint 21.3 位于 /dev/sda5 上,Windows 10 应该位于 /dev/sda1-4 上。据我了解/dev/sda1是一个EFI分区。

当您运行启动修复实用程序时,运行该实用程序的 Mint Live 磁盘被识别为/dev/sda,您的新 SSD 被识别为/dev/sdb

Disk sdb: 1.82 TiB, 2000398934016 bytes, 3907029168 sectors
Disk identifier: 88F93FC7-E70C-4253-845C-C3D93CC6658D
           Start        End    Sectors   Size Type
sdb1        2048     206847     204800   100M BIOS boot
sdb2      206848     239615      32768    16M Microsoft reserved
sdb3      239616 1257408925 1257169310 599.5G Microsoft basic data
sdb4  1257410560 1258528767    1118208   546M Windows recovery environment
sdb5  1258528768 3890251424 2631722657   1.2T Linux filesystem
sdb6  3890251776 3907028991   16777216     8G Linux swap

它显然曾经是一个 GPT 分区、UEFI 可启动磁盘,但由于启动修复是以旧版 BIOS 样式启动的和/或因为您可能已将分区类型sda1从 ESP 切换为BIOS boot,所以它假定它在旧版 BIOS 系统,现在已将此磁盘“修复”为 BIOS 可引导 GPT 磁盘。

对于 Windows 10 来说,这是不可接受的组合:它需要在 GPT 分区磁盘上进行 UEFI 引导,并在 MBR 分区磁盘上进行 BIOS 引导。 Windows 不支持其他组合,这里“不支持”的意思是“不起作用”。

Boot-Repair 生成的 GRUB 启动菜单现在显然允许您启动 Mint 21.3(尽管 Boot-Repair 可能在启动菜单中将其错误标记为“Ubuntu”)、Windows 7 和旧的 Mint 20.3。

启动 Linux Mint 21.3 时, sudo efibootmgr -v 回答“此系统不支持 EFI 变量。我没有 /sys/firmware/efi。但我有软件包 grub-efi-amd64、grub-efi-arm 和grub-efi 已安装。

看起来您的 Mint 目前以传统 BIOS 风格启动;这可能是引导修复所做的。事实上,您已经grub-efi-amd64安装了grub-efi和 ,efibootmgr这表明 Mint 最初安装为以 UEFI 方式启动。

grub-efi-arm除非您也在开发 ARM 软件,否则的存在将是一个错误。

/dev/sdb 是我之前拥有的 SSD。它有 Linux Mint 20.3 和旧的 Windows 7(我不关心 Windows 7,我想暂时保留 Linux 来恢复一些数据)。

在启动修复下,这被识别为/dev/sdc

Disk sdc: 223.57 GiB, 240057409536 bytes, 468862128 sectors
Disk identifier: 0x000e99c8
      Boot     Start       End   Sectors   Size Id Type
sdc1  *         2048    206847    204800   100M  7 HPFS/NTFS/exFAT
sdc2          206848 266678271 266471424 127.1G  7 HPFS/NTFS/exFAT
sdc3       266678272 468861865 202183594  96.4G 83 Linux

这是 MBR 分区的,看起来它可能始终是 BIOS 可引导的。目前它似乎还有一个 GRUB 配置,涵盖 Mint 21.3、Windows 7 和旧的 Mint 20.3。

我的 BIOS 没有任何 Legacy 选项或 UEFI 选项。

显然它支持 UEFI,如果有任何传统风格的启动目标可用,则固定偏好传统风格的启动。不幸的是,它没有提供任何选项来调整这一点。

当选择从可两种方式启动的外部媒体(例如 Mint Live 和大多数操作系统安装媒体)启动时,您应该仔细查看:您正在寻找的外部媒体是否只有一个菜单项,或者是否有两个他们?如果有两个,则一个用于传统 BIOS 式引导,另一个用于 UEFI。安装操作系统时,用于启动操作系统安装程序的启动方法也将确定已安装操作系统的启动方法

要使 Windows 10 正常运行,您必须首先将 SSD 从 GPT 分区转换为 MBR 样式,或者将sda1分区从“BIOS 引导”更改回 EFI 系统分区 (ESP)。无论哪种情况,您都需要使用 Windows 10 安装介质的“修复启动”功能来重建适当类型(BIOS 或 UEFI)的 Windows 启动加载程序。请小心以适当的模式启动安装介质。

之后,您必须恢复 Linux Mint 安装的启动。为此,我建议避免启动修复:相反,您应该只是 chroot 到您的主要 Mint 安装中,确保您安装了所需启动过程类型的 GRUB 软件包:对于grub-pc旧版grub-pc-binBIOS 启动,grub-efi-amd64以及grub-efi-amd64-bin对于没有安全启动的 UEFI。如果您还需要安全启动支持,则应将grub-efi-amd64-signed和添加shim-signed到列表中。

对于旧版 BIOS 启动,如果 chroot 时预期的启动磁盘不是/dev/sda,您应该创建一个/boot/grub/device.map文件来指示哪个磁盘正常启动时 BIOS 检测到的第一个磁盘,例如

(hd0) /dev/sdb

如果情况与使用启动修复时类似,即可移动介质显示为临时/dev/sda.

创建device.map文件后,您应该运行

grub-install --target=i386-pc /dev/sdb

将 BIOS 样式的 GRUB 写入当前磁盘的主引导记录sdb (但将sda在没有可移动介质的情况下引导一次)。

如果您选择以 UEFI 模式启动,则不需要该device.map文件。安装 UEFI 版本 GRUB 的命令如下:

grub-install --target=x86_64-efi /dev/sdb

其中/dev/sdb是包含 EFI 系统分区的磁盘。如果您想支持安全启动,请添加该--uefi-secure-boot选项。

如果您无法避免从可移动媒体以传统模式启动来恢复 Linux 启动,但仍想设置 UEFI 启动(鉴于您的 BIOS 不提供控制启动模式的选项,这可能很棘手),您可以安装 GRUB首先在 UEFI 可移动媒体模式下:

grub-install --target=x86_64-efi --removable /dev/sdb

(同样,--uefi-secure-boot如果您需要安全启动支持,请添加该选项。)

此后,您可能必须明确选择从 SSD 启动,以便 Mint 在 UEFI 模式下自行启动。一旦到达那里,您就可以运行sudo grub-install --target=x86_64-efi --uefi-secure-boot /dev/sda安装,为 Mint 生成一个名称明确、可识别的 BIOS 启动顺序选项。


如果使用 [g]parted,请记住,由于某种原因,它将各种 GPT 分区类型表示为“标志”。例如,当选择 ESP 标志时,它将设置“标记”分区的类型为 ESP。为了向后兼容,GPT 分区磁盘上的 [g]parted 认为“boot”和“ESP”标志是等效的。

相关内容