手动安装 GRUB 后 Windows 未列为引导选项

手动安装 GRUB 后 Windows 未列为引导选项

我在拥有多个 SSD 的台式计算机上安装了 Manjaro,其中一个 SSD 安装了 Windows 10。我尝试在辅助 SSD 上安装 Manjaro,效果很好,但 GRUB 无法安装,因为它无法在驱动器上找到 EFI 系统分区 (ESP)。我手动检查,发现所有驱动器上都没有 ESP。我按照中所述手动创建了一个 ESP拱门维基并手动安装用于 EFI 系统的 GRUB如中所述Manjaro 维基

我遇到的问题是 Windows 10 找不到grub-mkconfig,因此不再列在启动选项中,只列出了 Manjaro。我猜原因是 Windows 安装仍然使用 BIOS 而不是 UEFI。如果我读到这个正确询问 Ubuntu 问题,我需要将 GRUB 从 UEFI 切换回 BIOS,以便 GRUB 可以找到 Windows 安装。以干净的方式归档此内容的最佳方法是什么?

我当前的驱动器设置如下:sda(安装了 Windows 10 的 SSD):

Disk /dev/sda: 232,89 GiB, 250059350016 bytes, 488397168 sectors
Disk model: Samsung SSD 850 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb507cf23

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1  *         2048   1026047   1024000   500M  7 HPFS/NTFS/exFAT
/dev/sda2         1026048 487320175 486294128 231,9G  7 HPFS/NTFS/exFAT
/dev/sda3       487321600 488392703   1071104   523M 27 Hidden NTFS WinRE

sdb(sdb5 是缩小的 NTFS 数据分区,sdb2 Manjaro 和 sdb3 手动创建的 ESP 分区)。

Disk /dev/sdb: 1,82 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: CT2000MX500SSD1 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x26b4b1bf

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sdb1             1985 1984962559 1984960575 946,5G  5 Extended
/dev/sdb2       1984962560 3905980415 1921017856   916G 83 Linux
/dev/sdb3  *    3905980416 3907028991    1048576   512M ef EFI (FAT-12/16/32)
/dev/sdb5             2048 1984841727 1984839680 946,4G  7 HPFS/NTFS/exFAT

Partition 1 does not start on physical sector boundary.
Partition table entries are not in disk order.

还有第三个 NTFS SSD sdc,仅保存数据。

答案1

我无法启动 Windows 10 安装的原因是我在主板 BIOS 中停用了 BISO 传统模式,在我的例子中,该模式称为CSM Support、 或UEFI CSM (Compatibility Support Module)

激活 CSM 支持后,我再次能够sda在 BIOS 启动菜单中选择驱动器并启动到 Windows。注意:我只能从 BIOS 菜单中选择启动驱动器,而不能从 GRUB 中选择,因为如上所述,GRUB 是在 UEFI 模式下安装的,因此无法检测到 Windows 安装。

因此,在我的机器上,我安装了 BIOS Windows 和 UEFI Manjaro。这是非常规但有效的。

要清理此问题并允许 GRUB 检测 Windows 和 Manjaro 安装,有两种可能性:

  1. 将 Windows 10 形式 BIOS 转换为 UEFI(我没有尝试过这个,很可能是所描述的过程损坏/删除了 GRUB 或 ESP 分区)
  2. 在 BIOS 模式下重新安装 GRUB。

要重新安装 GRUB,您需要:

  • 启动至 Manjaro live USB
  • 删除现有的 ESP 分区,例如通过 GParted(在我的例子中/dev/sdb3
  • 通过以下方式加载 Chroot 环境manjaro-chroot -a
  • 为 BIOS 系统重新安装 GRUB:grub-install --force --target=i386-pc --recheck --boot-directory=/boot /dev/sdb
  • 更新 GRUB 配置:grub-mkconfig -o /boot/grub/grub.cfg

有关如何手动安装 GRUB 的完整说明,请参阅Manjaro 维基

相关内容