There can only be 4 primaries. There can be less, but no more. One of those can be an extended, inside which are the logical partitions. Usually the 4th primary is used as the extended, but any of the 4 can be. The first logical is always number 5 in the table, regardless of which primary was used as the extended. That’s why you have no #4; #3 was used as the extended. Vista is on the first primary, and it is the active “bootable” partition (note the asterisk). openSUSE is probably on the 5th partition, number 6 in the table, and it is a logical. IIRC correctly, generic MBR boot code cannot chain within the extended down its logicals, it can only go as far as the 4 primaries (and the extended can never be the “active” partition because it is not an actual physical partition, it is a container). So, as I posted previously, the simple method used by Windows with the bootable flag, will not work in this case.
What is required instead is to install grub stage1 to the MBR with a pointer to the location of grub stage2 (the loader), which in your case is on partition #6. Boot the CD, get into the terminal, su to root. None of the partitions are mounted, and AFAIK don’t need to be for this; grub can internally mount and read linux file systems. So first, do:
cat /boot/grub/device.map
You should see a line with:
(hd0) /dev/sda
Then run the grub shell, just the command “grub”. You will then get a different prompt. I’m not 100% positive how grub numbers the partitions when a number (your #4) is skipped. So ask grub where it is located. Do:
find /boot/grub/stage2
You should get something back like: (hd0,5). Then give the command “root” followed by what grub just returned, in this example, the (hd0,5). Thus:
root (hd0,5)
Grub should then return a message “Filesystem type is ext2fs”. That means it has found and mounted the linux partition. Then do this, with the (hd0,5) being whatever you used above on the root line:
setup --stage2=/boot/grub/stage2 (hd0) (hd0,5)
This tells grub to install itself in the MBR of /dev/sda and to point to its loader at /boot/grub/stage2 in partition #6. Then do:
quit
This is important; grub must do cleanup to finish its work.
Now, you need to mount the openSUSE partition and, if necessary, modify the grub menu.lst file. So:
mount -t ext3 /dev/sda6 /mnt
cd /mnt/boot/grub
gedit menu.lst
Now check the boot stanza. The root line should point to (hd0,5), or whatever you used above in the grub shell. On the kernel line it should have “/boot/vmlinuz-xxxxx” (whatever the filename is) followed by “root=/dev/sda6”. The initrd line should simply be “initrd /boot/initrd”. Save that. Then reboot the system. You will have to add a stanza to menu.lst to boot Vista, thus:
title Windows Vista
rootnoverify (hd0,0)
chainloader +1
Give it a try. Be precise! Good luck.