Add nvidia_raid_member Windows disks to GRUB

Hello, I never post to forums, because I can usually figure it out, but this is killing me.

I have an ASUS A8N-SLI board with an nForce4 raid 1 setup hosting a Windows 7 array over two 500GB disks. I have a third SATA drive with opensuse 11.3 installed and working perfectly. By changing the boot order in the BIOS, I can alternate which system boots at startup. What I want to do is set up a dual boot configuration… I don’t care how, but I want a screen that asks me which OS to use, preferably defaulting to Windows so my wife can stil check her email without calling me at work.

I thought the easiest setup would be to set the LINUX drive as the primary device and then add then chainload the Windows disks, and set them first in the boot queue. That way, without any intervention, the system would pause for 8 seconds and see if I wanted to boot LINUX, then boot Windows if I didn’t do anything.

The problem is, I can’t figure out how to add Windows to the GRUB menu and recognize it. All of the documentation I can find seems to assume that your Windows and LINUX partitions are on the same disk, which mine are not.

OK, hopefully someone here can at least point me in the right direction.

Not at all! You can chainload anything from anywhere (any partition on any drive). Whether other drives will boot or not depend on the BIOS. The problem in your case is how and if Grub can deal with your hardware based raid. Do those disks show up under Linux? … and as what?

Yes they do. The WD500 disks are the ones that have the nVIDIA raid array on them:

lrwxrwxrwx 1 root root 9 2011-03-05 07:32 ata-ST3160812AS_4LS0LSV5 → …/…/sda
lrwxrwxrwx 1 root root 10 2011-03-05 07:32 ata-ST3160812AS_4LS0LSV5-part1 → …/…/sda1
lrwxrwxrwx 1 root root 10 2011-03-05 07:32 ata-ST3160812AS_4LS0LSV5-part2 → …/…/sda2
lrwxrwxrwx 1 root root 10 2011-03-05 07:33 ata-ST3160812AS_4LS0LSV5-part3 → …/…/sda3
lrwxrwxrwx 1 root root 9 2011-03-05 07:32 ata-WDC_WD5000AAKS-22V1A0_WD-WCAWF3951707 → …/…/sdc
lrwxrwxrwx 1 root root 10 2011-03-05 07:32 ata-WDC_WD5000AAKS-22V1A0_WD-WCAWF3951707-part1 → …/…/sdc1
lrwxrwxrwx 1 root root 10 2011-03-05 07:32 ata-WDC_WD5000AAKS-22V1A0_WD-WCAWF3951707-part2 → …/…/sdc2
lrwxrwxrwx 1 root root 9 2011-03-05 07:32 ata-WDC_WD5000AAKS-22V1A0_WD-WCAWF4171804 → …/…/sdb
lrwxrwxrwx 1 root root 10 2011-03-05 07:32 ata-WDC_WD5000AAKS-22V1A0_WD-WCAWF4171804-part1 → …/…/sdb1
lrwxrwxrwx 1 root root 10 2011-03-05 07:32 ata-WDC_WD5000AAKS-22V1A0_WD-WCAWF4171804-part2 → …/…/sdb2
lrwxrwxrwx 1 root root 9 2011-03-05 07:32 scsi-SATA_ST3160812AS_4LS0LSV5 → …/…/sda
lrwxrwxrwx 1 root root 10 2011-03-05 07:32 scsi-SATA_ST3160812AS_4LS0LSV5-part1 → …/…/sda1
lrwxrwxrwx 1 root root 10 2011-03-05 07:32 scsi-SATA_ST3160812AS_4LS0LSV5-part2 → …/…/sda2
lrwxrwxrwx 1 root root 10 2011-03-05 07:33 scsi-SATA_ST3160812AS_4LS0LSV5-part3 → …/…/sda3
lrwxrwxrwx 1 root root 9 2011-03-05 07:32 scsi-SATA_WDC_WD5000AAKS-_WD-WCAWF3951707 → …/…/sdc
lrwxrwxrwx 1 root root 10 2011-03-05 07:32 scsi-SATA_WDC_WD5000AAKS-_WD-WCAWF3951707-part1 → …/…/sdc1
lrwxrwxrwx 1 root root 10 2011-03-05 07:32 scsi-SATA_WDC_WD5000AAKS-_WD-WCAWF3951707-part2 → …/…/sdc2
lrwxrwxrwx 1 root root 9 2011-03-05 07:32 scsi-SATA_WDC_WD5000AAKS-_WD-WCAWF4171804 → …/…/sdb
lrwxrwxrwx 1 root root 10 2011-03-05 07:32 scsi-SATA_WDC_WD5000AAKS-_WD-WCAWF4171804-part1 → …/…/sdb1
lrwxrwxrwx 1 root root 10 2011-03-05 07:32 scsi-SATA_WDC_WD5000AAKS-_WD-WCAWF4171804-part2 → …/…/sdb2
lrwxrwxrwx 1 root root 9 2011-03-05 07:32 wwn-0x50014ee1ad3fd793 → …/…/sdc
lrwxrwxrwx 1 root root 10 2011-03-05 07:32 wwn-0x50014ee1ad3fd793-part1 → …/…/sdc1
lrwxrwxrwx 1 root root 10 2011-03-05 07:32 wwn-0x50014ee1ad3fd793-part2 → …/…/sdc2
lrwxrwxrwx 1 root root 9 2011-03-05 07:32 wwn-0x50014ee1ad3fd90b → …/…/sdb
lrwxrwxrwx 1 root root 10 2011-03-05 07:32 wwn-0x50014ee1ad3fd90b-part1 → …/…/sdb1
lrwxrwxrwx 1 root root 10 2011-03-05 07:32 wwn-0x50014ee1ad3fd90b-part2 → …/…/sdb2

If I try to mount one of the drives, I get this message:

snowcone:/mnt # mount /dev/sdb /mnt/windows
mount: unknown filesystem type ‘nvidia_raid_member’

Show use fdisk -l , as root cat /boot/grub/menu.lst and cat /etc/fstab

Put output between code tags (select the Go Advanced option in this editor.) to preserve formating

You can not mount hard disk devices (/dev/sda, /dev/sdb, etc). You can only mount partitions (/dev/sda1, /dev/sdb1, etc).

snowcone:/ # fdisk -l
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3741e0bc

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1          13      102400    7  HPFS/NTFS
Partition 1 does not end on cylinder boundary.
/dev/sdb2              13       60802   488282112    7  HPFS/NTFS

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x6d8060d7

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         262     2104483+  82  Linux swap / Solaris
/dev/sda2   *         263        2873    20972857+  83  Linux
/dev/sda3            2874       19457   133210980   83  Linux

Disk /dev/sdc: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3741e0bc

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *           1          13      102400    7  HPFS/NTFS
Partition 1 does not end on cylinder boundary.
/dev/sdc2              13       60802   488282112    7  HPFS/NTFS

snowcone:/boot/grub # cat menu.lst
# Modified by YaST2. Last modification on Sat Mar  5 00:48:39 PST 2011
# THIS FILE WILL BE PARTIALLY OVERWRITTEN by perl-Bootloader
# Configure custom boot parameters for updated kernels in /etc/sysconfig/bootloader

default 0
timeout 8
gfxmenu (hd0,1)/boot/message
##YaST - activate

###Don't change this comment - YaST2 identifier: Original name: linux###
title Desktop -- openSUSE 11.3 - 2.6.34.7-0.7
    root (hd0,1)
    kernel /boot/vmlinuz-2.6.34.7-0.7-desktop root=/dev/disk/by-id/ata-ST3160812AS_4LS0LSV5-part2 resume=/dev/disk/by-id/ata-ST3160812AS_4LS0LSV5-part1 splash=silent quiet showopts vga=0x348
    initrd /boot/initrd-2.6.34.7-0.7-desktop

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- openSUSE 11.3 - 2.6.34.7-0.7
    root (hd0,1)
    kernel /boot/vmlinuz-2.6.34.7-0.7-desktop root=/dev/disk/by-id/ata-ST3160812AS_4LS0LSV5-part2 showopts apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 nomodeset x11failsafe vga=0x348
    initrd /boot/initrd-2.6.34.7-0.7-desktop
snowcone:/boot/grub # cat /etc/fstab
/dev/disk/by-id/ata-ST3160812AS_4LS0LSV5-part1 swap                 swap       defaults              0 0
/dev/disk/by-id/ata-ST3160812AS_4LS0LSV5-part2 /                    ext4       acl,user_xattr        1 1
/dev/disk/by-id/ata-ST3160812AS_4LS0LSV5-part3 /home                ext3       defaults              1 2
proc                 /proc                proc       defaults              0 0
sysfs                /sys                 sysfs      noauto                0 0
debugfs              /sys/kernel/debug    debugfs    noauto                0 0
usbfs                /proc/bus/usb        usbfs      noauto                0 0
devpts               /dev/pts             devpts     mode=0620,gid=5       0 0

Try to add that first (at the end of /boot/grub/menu.lst) and tell us if it boots:

###Don't change this comment - YaST2 identifier: Original name: Windows###
Title Windows
   rootnoverify (hd1,0)
   chainloader +1

If id doesn’t work, add these map commands:

###Don't change this comment - YaST2 identifier: Original name: Windows###
Title Windows
   map (hd0) (hd2)
   map (hd1) (hd0)
   map (hd2) (hd1)
   rootnoverify (hd1,0)
   chainloader +1

If it still doesn’t work try to chainload the hard disk rather than the partition - with or without the map commands:

###Don't change this comment - YaST2 identifier: Original name: Windows###
Title Windows
   map (hd0) (hd2)
   map (hd1) (hd0)
   map (hd2) (hd1)
   root (hd1)
   chainloader +1

As soon as it works (let’s hope it will), replace “default 0” with “default 2”, provided Windows is the third entry in /boot/grub/menu.lst, and Windows should boot by default after 8 seconds (or any other delay you might set by changing the ‘timeout’ value in this file).

Wow, thanks a lot, @please_try_again! The first one (comment #7) worked (without the mapping), but I had to change “Title” to “title” for the code to work. This community is great.
:slight_smile:

That’s right. I copied/pasted my own typo twice. Glad it worked.