TL;DR
如何从磁盘 A 上的 EFI GRUB 安装启动磁盘 B 上的 Windows 10 BIOS 安装?
在将 Ubuntu 从 MBR+BIOS 迁移到 GPT+EFI 之后,长长的解释
os-prober
是不再检测 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。
- 每个操作系统都有自己的磁盘(第四个磁盘没有安装操作系统)。这意味着每个操作系统都在每个磁盘的 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_custom
EFI 安装中:
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.
甚至可以从 Windows 10 的不同磁盘上的 EFI GRUB 启动 BIOS 安装吗?
简短的回答,您无法从 UEFI grub 启动旧版 Windows。grub 启动后,启动模式已设置为 UEFI,并且您的 Windows 处于旧模式,因此无法启动。您可以选择 Windows 所在的设备(可能带有自己的引导加载程序),然后从 EFI 引导菜单引导该设备(开机时的一些功能键允许您选择引导设备/操作系统)。您可以有另一个 grub 安装或 Windows 从第二个磁盘成功启动,该磁盘将处于旧模式。尝试只启动第二个磁盘,Windows 可能会出现。