Problem with dual boot - winXP will not boot

I have a problem that I can not get winXP to boot from grub.

I replaced Vista on a laptop with WinXP, which as expected clobbered grub. After a successful WinXP install (rebooted winXP twice to confirm it boots ok) I then restored grub from the Linux DVD.

Now I can boot openSUSE-11.1 again from the grub menu selection, but winXP fails to boot, giving the error “NTLDR is missing”

fdisk -l :

Disk /dev/sda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x08000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          18      144553+  de  Dell Utility
/dev/sda2              19        1324    10489622    7  HPFS/NTFS
/dev/sda3            1325       10247    71673997+   7  HPFS/NTFS
/dev/sda4   *       10248       30401   161887005    f  W95 Ext'd (LBA)
/dev/sda5           10248       10509     2104483+  82  Linux swap / Solaris
/dev/sda6           10510       13120    20972826   83  Linux
/dev/sda7           13121       30401   138809601   83  Linux

Menu.lst

# Modified by YaST2. Last modification on Thu Dec 24 14:14:16 CET 2009
default 0
timeout 8
##YaST - generic_mbr
gfxmenu (hd0,5)/boot/message
##YaST - activate

###Don't change this comment - YaST2 identifier: Original name: linux###
title openSUSE 11.1 - 2.6.27.39-0.2
    root (hd0,5)
    kernel /boot/vmlinuz-2.6.27.39-0.2-default root=/dev/disk/by-id/ata-ST9250421ASG_5TH06KKG-part6 resume=/dev/disk/by-id/ata-ST9250421ASG_5TH06KKG-part5 splash=silent showopts vga=0x317
    initrd /boot/initrd-2.6.27.39-0.2-default

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- openSUSE 11.1 - 2.6.27.39-0.2
    root (hd0,5)
    kernel /boot/vmlinuz-2.6.27.39-0.2-default root=/dev/disk/by-id/ata-ST9250421ASG_5TH06KKG-part6 showopts ide=nodma apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 x11failsafe vga=0x317
    initrd /boot/initrd-2.6.27.39-0.2-default

###Don't change this comment - YaST2 identifier: Original name: windows 2###
title Vista
    rootnoverify (hd0,2)
    chainloader +1

###Don't change this comment - YaST2 identifier: Original name: windows 1###
title dell-recovery-partition
    rootnoverify (hd0,1)
    chainloader +1

The active partition is /dev/sda4.

Any suggestions on this? I’ve read of many others with a similar problem, but none with a solution. Note the winXP install is brand new. Booted twice after a fresh install with no file changes, so nothing has been done from a user perspective on the winXP side. Rather IMHO there is something pecular to the way this Service Pack 3 winXP boots that is bringing this about.

Again symptoms: openSUSE-11.1 will boot, but winXP (which is /dev/sda3) will NOT

Ok, found the solution.

WinXP went and installed its boot loader on /dev/sda2 (the 2nd partition) even though MS-Windows itself is on /dev/sda3.

So the solution is a simple edit, deleting the old “vista” entry in the menu.lst and changing the name of the “dell-recovery-partition” to “winXP” and booting to /dev/sda2 (for MS-WinXP) when then runs in /dev/sda3.

It does make /dev/sda2 next to useless, but I figure I can always restore it later if need be.

And the wife is now happy, as she has winXP as a direct boot on this laptop!

Merry Christmas to all !

Yep, you have to watch that, it always goes for the first avail primary it can use. Win7 did it to me a few weeks back, man I had a bit of a rage about it. Totally and utterly useless.

Indeed - I got “hit” by two glitches replacing Vista with XP while keeping openSUSE.

The 1st was WinXP refused to boot during the 1st reboot when installing. Turns out /dev/sda4 (the extended partition containing my openSUSE Linux partitions) was the active partition when I installed winXP, and winXP would not change the active from /dev/sda4 to /dev/sda3 and hence would not boot after installing on the hard drive. I had to change (with gparted) the active partition to /dev/sda3 myself.

Then I had the above boot problem, where winXP went and put its boot loader on /dev/sda2 instead of /dev/sda3.

One year ago, both of those problems probably would have blocked me. Fortunately I’ve learned a bit about partitions and grub the past year that eventually, after some pain and brainstorming with help and encouragement from users on IRC chat #suse, I was able to find the solution.

that’s why i say, “Install Windows first.”