总结
如何从磁盘 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_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.
是否有可能从 EFI GRUB 启动 Windows 10 不同磁盘上的 BIOS 安装?
答案1
简而言之,您无法从 UEFI grub 启动旧版 Windows。一旦 grub 启动,启动模式已设置为 UEFI,并且您的 Windows 处于旧模式,因此无法启动。您可以选择 Windows 所在的设备(可能带有自己的引导加载程序),然后从 EFI 启动菜单启动它(开机时的一些功能键允许您选择启动设备/操作系统)。您可以安装另一个 grub,或者 Windows 可以从第二个磁盘成功启动,这将处于旧模式。尝试启动第二个磁盘,Windows 可能会出现。