GRUB Won't Boot Windows

After loading OpenSuse, GRUB was working fine allowing me to boot either windows (first partition of disk one) and OpenSuse (disk 2).
Suddenly, grub will not boot windows. When selected from the memu, it does a loop back to the menu again. No error messages. OpenSuse boots OK. I have followed some guidance found in the Support Database and on this forum which basically said to use Yast/bootloader to “redo” the bootloader configuration. I did this trying both “redo from scratch” and “suggest new”. The menu.lst now reads:

Modified by YaST2. Last modification on Sun Nov 8 13:18:29 CST 2009

default 0
timeout 8
gfxmenu (hd1,5)/boot/message
##YaST - activate

###Don’t change this comment - YaST2 identifier: Original name: linux###
title openSUSE 11.1
root (hd1,5)
kernel /boot/vmlinuz root=/dev/disk/by-id/ata-WDC_WD800JB-00JJC0_WD-WMAM9DVV0115-part6 resume=/dev/disk/by-id/ata-WDC_WD800JB-00JJC0_WD-WMAM9DVV0115-part1 splash=silent showopts vga=0x31a
initrd /boot/initrd

###Don’t change this comment - YaST2 identifier: Original name: openSUSE 11.1 (/dev/sdc3)###
title openSUSE 11.1 (/dev/sdc3)
root (hd1,2)
configfile /boot/grub/menu.lst

###Don’t change this comment - YaST2 identifier: Original name: windows###
title Windows
rootnoverify (hd0,0)
chainloader +1

###Don’t change this comment - YaST2 identifier: Original name: floppy###
title Floppy
rootnoverify (hd0,0)
chainloader +1

###Don’t change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe – openSUSE 11.1
root (hd1,5)
kernel /boot/vmlinuz root=/dev/disk/by-id/ata-WDC_WD800JB-00JJC0_WD-WMAM9DVV0115-part6 showopts ide=nodma apm=off noresume nosmp maxcpus=0 edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 x11failsafe vga=0x31a
initrd /boot/initrd

###Don’t change this comment - YaST2 identifier: Original name: memtest86###
title Memory Test
kernel (hd1,5)/boot/memtest.bin

###Don’t change this comment - YaST2 identifier: Original name: linux###
title Kernel-2.6.27.37-0.1-default
root (hd1,5)
kernel /boot/vmlinuz-2.6.27.37-0.1-default root=/dev/disk/by-id/ata-WDC_WD800JB-00JJC0_WD-WMAM9DVV0115-part6 resume=/dev/disk/by-id/ata-WDC_WD800JB-00JJC0_WD-WMAM9DVV0115-part1 splash=silent showopts vga=0x31a
initrd /boot/initrd-2.6.27.37-0.1-default

From what I’ve read, my newbie brain says it looks OK for windows. There is some superfluous stuff in the list that shouldn’t affect it. Any suggestions? Please?
Thanks,
Bill

I can’t see anything wrong with the menu.lst at first glance. So did you go to Yast’s bootloader module and set under the Tab called “Boot Loader Installation” to “Boot from the Master Boot Record”? Not from some other place.

And also, for the other folk who cruise by (I’m going to work now), can you post here the response you get to this command:

sudo /sbin/fdisk -l

Having two different “automagically” listed identities pointing at hd0,0 looks odd. Maybe a result of the repair attempt?

fdisk output requested will identify what disk devices are currently recognized and how they are assigned. Possibility that disk device mapping has changed.

IG

Yes. Boot loader installation is set to mbr. Following is result of fdisk:

Disk /dev/sdb: 60.0 GB, 60022480896 bytes
255 heads, 63 sectors/track, 7297 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x434752f4

Device Boot Start End Blocks Id System
/dev/sdb1 1 1918 15406303+ b W95 FAT32
/dev/sdb2 * 1919 7297 43206817+ f W95 Ext’d (LBA)
/dev/sdb5 1919 7297 43206786 b W95 FAT32

Disk /dev/sdc: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000bd806

Device Boot Start End Blocks Id System
/dev/sdc1 * 1 192 1535656+ 82 Linux swap / Solaris
Partition 1 does not end on cylinder boundary.
/dev/sdc2 192 3952 30208752 5 Extended
Partition 2 does not end on cylinder boundary.
/dev/sdc3 3953 6263 18563107+ 83 Linux
/dev/sdc4 6264 9729 27840645 83 Linux
/dev/sdc5 192 1530 10751800+ 83 Linux
/dev/sdc6 1531 3952 19454683+ 83 Linux

I deleted “Floppy” from the menu. No effect.
The fdisk results for sdc may look a little strange to you because there is also another Linux distro installed that the boot loader didn’t properly configure. That’s another question for another day. I need to get windows booting again before my wife kills me. Why does menu.lst refer to the first two partitions :’(as 0 & 1 while fdisk refers to them as 1 & 2? Very confusing.
Thanks,
Bill

Grub starts its numbering at 0 while partioner/mbr starts at 1, so first partition on first disk device is hd0,0 to grub and sda1 to partioner/mbr. Yes, confusing but that’s how it is !

But you don’t have an sda. First disk device is sdb. Do you have a removable disk device that is only sometimes attached? Might exaplain the “floppy” section also at hd0,0 in your original post.

On that logic I’d expect grub to point to hd1,0 to find windows (assuming its on the first partition of that device, although the extended partition appears flagged bootable?)- but then I don’t see how linux can boot if it’s not pointing to hd2,5

Don’t want to suggest anything that might break someone else’s machine so I’ll reserve comment & hope someone else (swerdna?) will pick this up.

IG

Just another thought, the other “failed” Linux install may not be a question for another day but may be the cause.

A bit more info on that sequence of events may clarify things.

IG

I’m thoroughly confused by the device mapping and so it seems is Linux.
Clues and logic: sdc is hd1. sdb is not hd0
Thus sdb is neither hd0 nor hd1 – so it’s hd2 (maybe)
So try this without mapping:

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

What happens? (I think it will need some mapping, but let’s see)

This edit will damage nothing.

With regard to the non-booting other distro: the boot loader was previously working for OpenSuse and Windows eventhough the other distro would not boot.
I tried changing hd0,0 to hd2,0. Resulted in an error message: Error 21: Selected disk does not exist.
I appreciate your help,
Bill

Have you removed a disc?
sdb looks like it might be the XP drive but why is it all FAT?

Honestly - this all looks very messy.

Did you try

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

or

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

here’s an abrev of one of my systems


fdisk -l

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0d2b8347

   Device Boot         Id  System
/dev/sda1   *   ...    83  Linux
/dev/sda2               5  Extended
/dev/sda3              82  Linux swap / Solaris
/dev/sda5               c  W95 FAT32 (LBA)
/dev/sda6              83  Linux

 df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             90709056  26650116  59451100  31% /
/dev/sda6             31372096    180284  29598168   1% /home/rick/common
/dev/sda5             30701232        16  30701216   1% /local

# Modified by YaST2. Last modification on Sun Oct  4 23:29:17 MDT 2009
default 0
timeout 8
gfxmenu (hd0,1)/boot/message
##YaST - activate

###Don't change this comment - YaST2 identifier: Original name: linux###
title openSUSE 11.1 - 2.6.27.29-0.1
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.27.29-0.1-pae root=/dev/disk/by-id/ata-Hitachi_HTS5
42516K9SA00_080524BB6C00QGJ64DZG-part2 resume=/dev/disk/by-id/ata-Hitachi_HTS542
516K9SA00_080524BB6C00QGJ64DZG-part6 splash=silent showopts vga=0x317
    initrd /boot/initrd-2.6.27.29-0.1-pae

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- openSUSE 11.1 - 2.6.27.29-0.1
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.27.29-0.1-pae root=/dev/disk/by-id/ata-Hitachi_HTS5
42516K9SA00_080524BB6C00QGJ64DZG-part2 showopts ide=nodma apm=off noresume nosmp
 maxcpus=0 edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 x1
1failsafe vga=0x317
    initrd /boot/initrd-2.6.27.29-0.1-pae

caf4926,
I did try your 1st config but not the 2nd. In the second: I assume the commands are performed in sequence. If so, the 1st map command will switch the drives. Won’t the 2nd just switch them back again? Just a newbie question.
A little history may help. My 1st drive is a 60GB. It has 2 partitions known to windows as C & D. The file system is fat. I keep most of the OS stuff on C and applications and other stuff on D. I recently installed an 80GB drive in order to play around with and learn about Linux distros. The 1st distro installed worked fine including GRUB. I then installed OpenSuse on a new partition and it worked fine except GRUB only gave me choices of windows or opensuse. It did not configure the other Linux distro. I was not too concerned figuring I would get help fixing it or get rid of it later. It worked fine that way for a couple of weeks. Then, a few days ago, I was unable to boot windows from the grub menu. I cannot associate this with any particular changes except a couple of days before, I installed all the files for KDE4 so I could compare it with Gnome. Would that have affected the boot loader menu?
Unless there is a quick/easy solution to this, I’m thinking that I should just wipe the 80GB disk and start over with a fresh opensuse install.
Thanks,
Bill

In the second: I assume the commands are performed in sequence.

Not sure what you mean

caf4926,
You suggested two configurations for windows. The second one has two lines that begin with “map”. I assume these two lines are switching the hd0 and hd1 designations of the hd’s. If “map (hd0)(hd1)” is executed first, wouldn’t “map (hd1)(hd0)” just switch it back again?
Thanks,
Bill

Just add it as seen to /boot/grub/menu.lst

In fact you can try anything!

No: One of them ‘operates on’ hd0, the other ‘operates on’ hd1

I don’t want to appear argumentative. Just trying to understand. If the first map statement changes 0 to 1 then the 2nd map statement appears to be operating on the same drive (which is now 1) changing it back to 0. Obviously, I’m not understanding something.
Do you think there is a solution to this or is it best for me to start over with a fresh installation?
Under Yast2/bootloader configuration/Other, what is the difference between “Start from scratch” and “Restore MBR of Harddisk”?
I’m willing to try most anything. However, I want to be careful that I don’t do something that makes both OS’s unbootable.
Thanks,
Bill

What we can’t quite figure out is the point already mentioned by @swerdna

I’m thoroughly confused by the device mapping and so it seems is Linux.
Clues and logic: sdc is hd1. sdb is not hd0
Thus sdb is neither hd0 nor hd1 – so it’s hd2 (maybe)

If it doesn’t make sense to us it ain’t going to make sense to the system either.

Tell you what. Chuck the installer disc in and proceed as if to install. See how it identifies the HD’s now.

@bilyo – If you “restore the MBR” and make sure the boot flag is on the windows boot partition, that should allow booting to windows using windows bootloader (and you’ll lose the booting via GRUB to openSUSE entirely).

Regarding “start from scratch” – I’ve never tried it – don’t know. You could try it and see – not too much to lose now.

@caf4926, what about this:
Perhaps boot into openSUSE and uninstall the RPM for GRUB and delete all the GRUB files altogether. The files to delete would be all of /boot all of /usr/lib/grub plus these from /usr/sbin: grub, grub-install, grub-install.unsupported, grub-md5-crypt, grub-set-default, grubonce

And then reinstall the GRUB RPM which should setup GRUB completely fresh, re-detecting the device mapping as it stands now. Do you think that might work?

I’m working with a live CD rather than a purchased DVD. They are apparently somewhat different regarding features. Following some instructions I found in the Support Database, Using the live CD, I tried yesterday to find the boot loader repair function. I got to the point where it was asking for partitioning instructions and didn’t go any farther. I couldn’t remember from the earlier install if the partitioning took place right then or if it occurred only after hitting the final OK. Didn’t want to mess things up any further.
Will the live CD do what you suggest?
Bill

I think there is not a bootloader repair function in the install routine of the live cd or anywhere else in the live cd (but I’m happy to be corrected).

Can you amplify this, there have been a few suggestions from Carl & me:

Will the live CD do what you suggest?