Linux

Windows 無法從 hd1 啟動

  • January 12, 2016

我在我的系統中添加了第二個磁碟,並在上面複製了我的 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
}

在非第一個驅動器上使用 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

引用自:https://unix.stackexchange.com/questions/254799