将 Ubuntu 从 MBR+BIOS 转换为 GPT+EFI 后无法检测/启动 Windows 10

将 Ubuntu 从 MBR+BIOS 转换为 GPT+EFI 后无法检测/启动 Windows 10

总结
如何从磁盘 A 上的 EFI GRUB 安装启动磁盘 B 上的 Windows 10 BIOS 安装?

详细解释
os-prober将 Ubuntu 从 MBR+BIOS 迁移到 GPT+EFI 后不再检测 Windows。

我的磁盘情况有点复杂:

sda                    1,8T                              
└─sda1      ext4       1,4T /media/Steam                 Steam
sdb                  931,5G                              
├─sdb1      vfat       512M                              
├─sdb2      ext4       125G                              home
├─sdb3      ext4     774,5G /media/Dati_ext4             Dati_ext4
└─sdb4      ext4      31,5G                              Ubuntu18.04
sdc                  232,9G                              
├─sdc1      ntfs       100M                              
├─sdc2      ntfs        59G                              Win10
├─sdc3      ntfs       483M                              
└─sdc4      ntfs     172,9G                              Dati_NTFS
nvme0n1                477G                              
├─nvme0n1p1 ext4      62,4G /                            Ubuntu19.10
├─nvme0n1p2 vfat       200M /boot/efi                    EFI
└─nvme0n1p3 ext4     322,1G /home                        home
  • 我有 4 个磁盘(1 个 NVMe 和 3 个 SSD)。
  • 在此之前,他们都在使用 MBR,而 UEFI 则以传统模式启动 NVMe。
  • 我安装了 2 个 Ubuntu(19.10 和 18.04)和 1 个 Windows 10。
  • 每个操作系统都有自己的磁盘(第 4 个磁盘没有安装操作系统)。这意味着每个操作系统都有自己的引导加载程序安装在每个磁盘的 MBR 上。
  • GRUB 还能够看到其他所有操作系统,因此,从 NVMe 的 GRUB,我能够启动这 3 个操作系统中的任何一个。

今天我决定将 Ubuntu 的 NVMe 安装从 MBR+BIOS 转换为 GPT+EFI。由于我没有触碰任何其他磁盘,我希望 GRUB 能够检测到其他操作系统并正常启动它们。

转换工作顺利,我能够在 Ubuntu 19.10 中启动。但是os-prober识别 Ubuntu 18.04,但不是Windows 10。

我想要做的是找到一个修复程序os-prober,以便它识别 Windows,或者手动指定 GRUB 配置来启动 Windows MBR+BIOS 安装。

我已经尝试了第二种方法,但没有奏效。我将其添加到/etc/grub.d/40_customEFI 安装中:

menuentry 'Windows 10 (su /dev/sdc1)' --class windows --class os {
    insmod part_msdos
    insmod ntfs
    set root='hd2,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos1 --hint-efi=hd2,msdos1 --hint-baremetal=ahci2,msdos1  C08E2C498E2C3A74
    else
      search --no-floppy --fs-uuid --set=root C08E2C498E2C3A74
    fi
    parttool ${root} hidden-
    drivemap -s (hd0) ${root}
    chainloader +1
}

我从正在运行的 Ubuntu 18.04 GRUB MBR+BIOS 安装中获取了它。

但是当我从 GRUB 菜单中选择 Windows 10 时,只出现此错误:

Setting partition type to 0x7
error: can't fine command `drivemap'.
error: invalid EFI file path.

是否有可能从 EFI GRUB 启动 Windows 10 不同磁盘上的 BIOS 安装?

答案1

简而言之,您无法从 UEFI grub 启动旧版 Windows。一旦 grub 启动,启动模式已设置为 UEFI,并且您的 Windows 处于旧模式,因此无法启动。您可以选择 Windows 所在的设备(可能带有自己的引导加载程序),然后从 EFI 启动菜单启动它(开机时的一些功能键允许您选择启动设备/操作系统)。您可以安装另一个 grub,或者 Windows 可以从第二个磁盘成功启动,这将处于旧模式。尝试启动第二个磁盘,Windows 可能会出现。

相关内容