How do I get grub to boot Windows from a second hard drive

I normally boot into Linux using grub so have linux as the first hard drive in my machine. I have Windows installed onto a second hard drive and am trying to get grub to boot it.

The grub config file contains

title Windows
rootnoverify (hd1,1)
chainloader +1
makeactive

but it does not work.


Solution 1:

The Windows boot loader assumes it's the first disk in the system. You need to tell grub to remap the two disks as part of the Windows entry in /boot/grub/menu.lst:

map (hd0) (hd1)
map (hd1) (hd0)

This is only an in-memory change to the way the chain-loaded boot loader sees the disks.

Solution 2:

I had the same problem at one time, but like Ted said, you have to change the way the chain-loader sees the disk. Here how my grub menu list looks.

# on /dev/sdc1
title       Windows Vista Ultimate (loader)
root        (hd2,0)
savedefault
map     (hd0) (hd2)
map     (hd2) (hd0)
chainloader +1

Solution 3:

My computer boot from the second disk. This is done in the BIOS. On my first disk is MS DOS (and Debian...)

I'm booting my old MS DOS 6.0 like this:

# on the second disk ...known by the system as /dev/hda
title           MS DOS
root            (hd1,0)
map     (hd0) (hd1)
map     (hd1) (hd0)
chainloader +1

And this is how my disks look with fdisk -l

Disk /dev/hda: 20.0 GB, 20020396544 bytes
255 heads, 63 sectors/track, 2434 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1          63      506016    6  FAT16
/dev/hda2              64         976     7333672+   f  W95 Ext'd (LBA)
/dev/hda3   *         977         989      104422+  83  Linux
/dev/hda4             990        1112      987997+  83  Linux
/dev/hda5              64         135      578308+   6  FAT16
/dev/hda6             136         976     6755301    7  HPFS/NTFS

Disk /dev/hdc: 6448 MB, 6448619520 bytes
255 heads, 63 sectors/track, 784 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdc1   *           1          13      104391   83  Linux
/dev/hdc2              14         784     6193057+  8e  Linux LVM