我已经在我的系统中添加了第二个磁盘,并在其上复制了我的 linux-installation + grub。我的系统现在包含 2 个磁盘:
hd0:
sda5: linux
hd1: (old system with dualboot)
sdb2: windows
sdb5: linux
如果我从 hd1 启动(Bios 启动菜单或拔掉 hd0),Windows 会立即启动,但如果我从 hd0 启动并选择从 Windows 启动,它只会显示黑屏,并带有闪烁的光标。
hd0/grub.cfg(不起作用)
menuentry 'Windows 7 (loader) (/dev/sdb1)' --class windows --class os $menuentry_id_option 'osprober-chain-9C567F24567EFE78' {
insmod part_msdos
insmod ntfs
set root='hd1,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1 9C567F24567EFE78
else
search --no-floppy --fs-uuid --set=root 9C567F24567EFE78
fi
parttool ${root} hidden-
chainloader +1
}
hd1/grub.cfg(有效)
menuentry 'Windows 7 (loader) (/dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-9C567F24567EFE78' {
insmod part_msdos
insmod ntfs
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 9C567F24567EFE78
else
search --no-floppy --fs-uuid --set=root 9C567F24567EFE78
fi
parttool ${root} hidden-
chainloader +1
}
PS:我的系统现在有点旧了(athlon x4),有正常的 BIOS,而不是 UEFI。
有什么想法,或者如何获得更多调试信息?
或者是否有一些限制,Windows 总是需要安装在第一个硬盘上? (即使是在 2016 年)
解决方案:
menuentry 'Windows 7 cust' --class windows --class os $menuentry_id_option 'osprober-chain-9C567F24567EFE78' {
insmod part_msdos
insmod ntfs
set root='hd1,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1 9C567F24567EFE78
else
search --no-floppy --fs-uuid --set=root 9C567F24567EFE78
fi
###parttool ${root} hidden-
drivemap -s (hd0) ${root} ### intern disk swap
chainloader +1
}
答案1
在非第一个驱动器上使用 grub 启动 Windows 有点棘手:您必须交换磁盘:
如果您在非第一个硬盘上安装了 DOS(或 Windows),则必须使用磁盘交换技术,因为该操作系统无法从除第一个硬盘之外的任何磁盘启动。 GRUB 中使用的解决方法是命令drivemap(请参阅drivemap),如下所示:
drivemap -s (hd0) (hd1)
更多详情请参见https://www.gnu.org/software/grub/manual/html_node/DOS_002fWindows.html#DOS_002fWindows