Boot problem: Just installed 11.1 dual boot with XP

I just installed Suse 11.1 on my Thinkpad X60s to dual boot with my existing XP installation. The Thinkpads have a special button (Thinkvantage button) for accessing the recovery partition during boot so the installation procedure had to be slightly different from the normal dual boot scenarios as I wanted to preserve that functionality.

I basically followed these instructions on the Thinkwiki site. Excerpt quoted below:

R&R version 4 bootloader seems to honor the active bit in the partition table. To install Linux while maintaining the R&R functionality is therefore rather straightforward:

  • Shrink the second Windows partition – or remove it if not needed
  • Add partitions for Linux (or other operating systems), one of them has to be a primary partition
    since the R&R bootloader cannot boot from an extended one> - Install GRUB on the boot sector of the newly added primary partition
  • Remove the active bit from the Windows partition and activate the boot partition with GRUB

Everything went fine and the Thinkvantage button boots to the recovery partion no problem, Grub throws up the boot menu offering Suse and XP.

Now if I boot to Suse then all is fine but once I boot to XP the next time I boot, XP starts automatically and Grub doesn’t even come up.

I checked the partition tables and it seems that when XP boots it resets the flag to ‘boot’ on the XP partition despite me setting the /boot parton as boot and removing the boot flag from the XP partition.

My partiton table looks like:
sda1 XP 100GB ntfs
sda2 /boot 200MB ext3 - Primary partition with boot flad set.
sda3 Extended partion.
sda4 /swap 2GB
sda5 /home 70GB ext3
sda6 empty
sda7 Thinkpad recovery partiton

Is there a command I can place in Grub to prevent XP from resetting the boot flag?

We would really need to see fdisk info from before and after.

Open a terminal go su and do:

fdisk -l

Ok here are the fdisk lists:

With /boot partion set as active. This is how I have to set it to get Grub to come up. Suse will boot fine with this.

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

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1       16573   133122591    7  HPFS/NTFS
/dev/sda2           29777       30401     5019840   12  Compaq diagnostics
Partition 2 does not end on cylinder boundary.
/dev/sda3   *       16574       16604      249007+  83  Linux
/dev/sda4           16605       29776   105804090    f  W95 Ext'd (LBA)
/dev/sda5           16605       19214    20964793+  83  Linux
/dev/sda6           19215       19475     2096451   82  Linux swap / Solaris
/dev/sda7           19476       27307    62910508+  83  Linux

After XP has booted the table looks like this. The boot flag has been reset to the ntfs partion and Grub no longer comes up offering an OS option. It boots straight to XP.

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

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       16573   133122591    7  HPFS/NTFS
/dev/sda2           29777       30401     5019840   12  Compaq diagnostics
Partition 2 does not end on cylinder boundary.
/dev/sda3           16574       16604      249007+  83  Linux
/dev/sda4           16605       29776   105804090    f  W95 Ext'd (LBA)
/dev/sda5           16605       19214    20964793+  83  Linux
/dev/sda6           19215       19475     2096451   82  Linux swap / Solaris
/dev/sda7           19476       27307    62910508+  83  Linux

Here is my Grub menu.lst

# Modified by YaST2. Last modification on Fri May 22 07:59:14 WEST 2009
default 0
timeout 5
gfxmenu (hd0,2)/message
##YaST - activate

###Don't change this comment - YaST2 identifier: Original name: linux###
title openSUSE 11.1 - 2.6.27.7-9
    root (hd0,2)
    kernel /vmlinuz-2.6.27.7-9-pae root=/dev/disk/by-id/ata-Hitachi_HTS542525K9SA00_071007BB0F00WDGAHZXA-part5 resume=/dev/sda6 splash=silent showopts vga=0x317
    initrd /initrd-2.6.27.7-9-pae

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- openSUSE 11.1 - 2.6.27.7-9
    root (hd0,2)
    kernel /vmlinuz-2.6.27.7-9-pae root=/dev/disk/by-id/ata-Hitachi_HTS542525K9SA00_071007BB0F00WDGAHZXA-part5 showopts ide=nodma apm=off noresume nosmp maxcpus=0 edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 x11failsafe vga=0x317
    initrd /initrd-2.6.27.7-9-pae

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

Here is the grub.conf

setup --stage2=/boot/grub/stage2 --force-lba (hd0,2) (hd0,2)
setup --stage2=/boot/grub/stage2 --force-lba (hd0,2) (hd0,2)
quit

I can see that the XP partition is being set to active. Is there a way of resetting it to the Suse partion automatically?

Reminder - As mentioned in my first post, Grub is installed in the /boot partition so as not to mess up the Thinkpad bootloader.

I’m not too sure what is going on here, even though I have a Thinkpad myself. I have deleted all the windows stuff completely.
I can tell you there are issues with some Thinkpads
openSUSE 11.1 Release Notes

I can also tell you, your partitioning is a bit of a mess too. Hopefully someone more knowledgeable will come in here - @swerdna maybe.

I think it’s just a case of the Grub setting the XP partion as active when you select XP as the OS to boot. Then when you come to reboot the XP partion is still left as active so Grub doesn’t get a chance to start up as /boot (the partition with Grub installed) is no longer the active partition.

I was just wondering if there was a way of resetting /boot as active again from within Grub althoug from a logic point of view I can’t see how because once Grub starts the OS then you’ve left Grub so no subsequent commands will run.

I found a very good article somewhere that went into detail about using Grub for multi booting but unfortunately I lost it and cannot find it with google anymore.

As a last resort, I can simply create an image file for the Grub boot config and insert it into the c drive on the XP partition and then use XP’s ntlr bootloader to boot and choose OS but that is a little messy so was trying to avoid that.

I don’t recall a need for sda1 to be made active if Grub points to it from sda3. I think Yast got confused by the wonky cylinder boundary on sda2.

Try this strategy: boot into openSUSE. Set sda1 active. Change the bootloader entry for windows to this:

###Don't change this comment - YaST2 identifier: Original name: windows###
title Bunch of Old Bolts
    rootnoverify (hd0,0)
    chainloader +1

Re-do the MBR by going to Yast → syatem → bootloader → the tab labelled “Bootloader configuration”. Set the dot in “Boot from the Master Boot Record”. Remove the dot from any other option (and tell us what you found there just for our interest.). Click the Bootloader Options button and remove the dot from “set active partition…” and/or “write generic code…” (but also tell us what you found).

Give that a go.

Due to your wanting to keep the XP restore option, do not mess with the MBR boot code. The
Thinkvantage button usage is in the MBR boot code.

As swerdna posts remove the ‘make active’ from the XP boot option in the menu.lst. You will also need to make sda3 active with what ever software you have.

Good point. Then boot openSUSE from an entry in the xp boot code in the xp file boot.ini. Here’s the method:
Boot Multiboot openSUSE Windows (2000, XP, Vista - any mix) with Windows bootloader.
That method leaves the windows code in the MBR untouched.

OK, I got it working it seems. The solution was staring me in my face and is quite obvious really. Thanks to swerdna for pointing it out

Change the bootloader entry for windows to this:
Code:
###Don’t change this comment - YaST2 identifier: Original name: windows###
title Bunch of Old Bolts
rootnoverify (hd0,0)
chainloader +1

I just removed the makeactive command from the XP boot line and left Grub in the /boot partition and set that as the active partition.

Now when I boot up after being in XP I get Grub come up again.

Here is what my grub.lst looks like.

###Don't change this comment - YaST2 identifier: Original name: linux###
title openSUSE 11.1 - 2.6.27.7-9
    root (hd0,2)
    kernel /vmlinuz-2.6.27.7-9-pae root=/dev/disk/by-id/ata-Hitachi_HTS542525K9SA00_071007BB0F00WDGAHZXA-part5 resume=/dev/sda6 splash=silent showopts vga=0x317
    initrd /initrd-2.6.27.7-9-pae

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- openSUSE 11.1 - 2.6.27.7-9
    root (hd0,2)
    kernel /vmlinuz-2.6.27.7-9-pae root=/dev/disk/by-id/ata-Hitachi_HTS542525K9SA00_071007BB0F00WDGAHZXA-part5 showopts ide=nodma apm=off noresume nosmp maxcpus=0 edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 x11failsafe vga=0x317
    initrd /initrd-2.6.27.7-9-pae

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

When I have time later this weekend I’ll write up a quick how-to for dual booting a Thinkpad with XP and Suse whilst still retaining the Thinkvantage recovery button functionality and the rescue and recovery partion.

But you forgot the secret code: “title Bunch of Old Bolts”

LOL I didn’t even see that.