Windows 无法从 hd1 启动

Windows 无法从 hd1 启动

我已经在我的系统中添加了第二个磁盘,并在其上复制了我的 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

相关内容