Dual Boot XP Suse - Having trouble booting XP

I need some help with Dualboot system. I’ve got 3 hard drives in my computer 2 SATA and one ATA. I’m running WinXP on one of the SATA drives, the other one is just used for storing files. Since yesterday I’m running OpenSUSE 11.0 on the ATA drive. I installed Suse correctly over normal way not in the WinXP environment. Everything works fine. Then I restarted the computer to see if the Boot partitions would run correctly. Grub loader starts. OpenSuse works just fine while WinXp is not bootable anymore. Everytime I choose the WinXP boot option I get the message:
rootnoverify (hd0,0)
chainloader (hd1,0)

I’ve been already through several threads and tried some suggestions, but nothing works. Afterall Suse works so I’m able to give you some information about my system:


linux-avxr:/home/micha # fdisk -l

Platte /dev/sda: 160.0 GByte, 160041885696 Byte
255 Köpfe, 63 Sektoren/Spuren, 19457 Zylinder
Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes
Disk identifier: 0xe918238b

   Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sda1   *           1       19456   156280288+   7  HPFS/NTFS

Platte /dev/sdb: 500.1 GByte, 500107862016 Byte
255 Köpfe, 63 Sektoren/Spuren, 60801 Zylinder
Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes
Disk identifier: 0x1c351c35

   Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sdb1   *           1       60800   488375968+   7  HPFS/NTFS

Platte /dev/sdc: 120.0 GByte, 120060444672 Byte
255 Köpfe, 63 Sektoren/Spuren, 14596 Zylinder
Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes
Disk identifier: 0xc5e93da1

   Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sdc1   *           1       14595   117234306   83  Linux

linux-avxr:/home/micha # cat /etc/fstab
/dev/disk/by-id/scsi-SATA_SAMSUNG_SP1203NS01MJ10Y401440-part1 /                    ext2       acl,user_xattr        1 1
/dev/disk/by-id/scsi-SATA_SAMSUNG_HD161HJS0V3J9AQ416769-part1 /windows/C           ntfs-3g    users,gid=users,fmask=133,dmask=022,locale=de_DE.UTF-8 0 0
/dev/disk/by-id/scsi-SATA_SAMSUNG_HD502IJS1PZJDWQ500772-part1 /windows/D           ntfs-3g    users,gid=users,fmask=133,dmask=022,locale=de_DE.UTF-8 0 0
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
linux-avxr:/home/micha # cat /boot/grub/menu.lst
# Modified by YaST2. Last modification on So Okt 26 20:02:15 CET 2008
default 0
timeout 8
gfxmenu (hd0,0)/boot/message
##YaST - activate

###Don't change this comment - YaST2 identifier: Original name: linux###
title openSUSE 11.0 3D
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.25.18-0.2-pae root=/dev/disk/by-id/scsi-SATA_SAMSUNG_SP1203NS01MJ10Y401440-part1 splash=silent showopts vga=0x31b
    initrd /boot/initrd-2.6.25.18-0.2-pae

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe 3D
    rootnoverify (hd1,0)
    kernel /boot/vmlinuz-2.6.25.18-0.2-pae root=/dev/disk/by-id/scsi-SATA_SAMSUNG_SP1203NS01MJ10Y401440-part1 showopts ide=nodma apm=off acpi=off noresume nosmp noapic maxcpus=0 edd=off x11failsafe vga=0x31b
    initrd /boot/initrd-2.6.25.18-0.2-pae

###Don't change this comment - YaST2 identifier: Original name: linux###
title openSUSE 11.0 2D
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.25.18-0.2-default root=/dev/disk/by-id/scsi-SATA_SAMSUNG_SP1203NS01MJ10Y401440-part1 splash=silent showopts vga=0x31b
    initrd /boot/initrd-2.6.25.18-0.2-default

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

###Don't change this comment - YaST2 identifier: Original name: windows 2###
title windows 2
    rootnoverify (hd0,0)
    chainloader (hd0,0)+1
linux-avxr:/home/micha # 

I’m quite new to Linux and I just worked with some older Unix versions in school, thats why don’t understand what’s wrong with the system. If Anybody can help me I would really appreciate it!

check here
GRUB Boot Multiboot openSUSE Windows (2000, XP, Vista) using the Grub bootloader.

Need you to post back the output of:

cat /boot/grub/device.map 
cat /etc/grub.conf

ok I went trough the help page you sent me…Step 1 and 2 no problem, Step 3 (I know this one was optional but Step 2 didn’t made any progress) led to the same result like before…Suse works fine, XP won’t boot!
Here’s the information you asked me for:

linux-avxr:/home/micha # cat /boot/grub/menu.lst
# Modified by YaST2. Last modification on So Okt 26 23:53:57 CET 2008
default 0
timeout 8
##YaST - generic_mbr
gfxmenu (hd0,0)/boot/message
##YaST - activate

###Don't change this comment - YaST2 identifier: Original name: linux###
title openSUSE 11.0
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.25.18-0.2-pae root=/dev/disk/by-id/scsi-SATA_SAMSUNG_SP1203NS01MJ10Y401440-part1    splash=silent showopts
    initrd /boot/initrd-2.6.25.18-0.2-pae

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

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

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- openSUSE 11.0
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.25.18-0.2-pae root=/dev/disk/by-id/scsi-SATA_SAMSUNG_SP1203NS01MJ10Y401440-part1 showopts ide=nodma apm=off acpi=off noresume nosmp noapic maxcpus=0 edd=off  x11failsafe
    initrd /boot/initrd-2.6.25.18-0.2-pae

###Don't change this comment - YaST2 identifier: Original name: Kernel-2.6.25.18-0.2-default###
title Kernel-2.6.25.18-0.2-default
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.25.18-0.2-default root=/dev/disk/by-id/scsi-SATA_SAMSUNG_SP1203NS01MJ10Y401440-part1    splash=silent showopts
    initrd /boot/initrd-2.6.25.18-0.2-default

###Don't change this comment - YaST2 identifier: Original name: Kernel-2.6.25.18-0.2-pae###
title Kernel-2.6.25.18-0.2-pae
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.25.18-0.2-pae root=/dev/disk/by-id/scsi-SATA_SAMSUNG_SP1203NS01MJ10Y401440-part1    splash=silent showopts
    initrd /boot/initrd-2.6.25.18-0.2-pae
linux-avxr:/home/micha # cat /etc/grub.conf
setup --stage2=/boot/grub/stage2 (hd0) (hd0,0)
quit

Do you have any idea what it could be so far?

Do you have any idea what it could be so far?

Probably. But I need to see the files I requested in my post #3. Also, which disk is the Windows C drive, sda or sdb? And what is the boot disk sequence in the bios, that is, which disk is configured to boot first (and second, if the bios shows that).

The files you requested are in post 4 right above your last post! sda is windows c partition. The boot disk sequence is:

  1. CDROM
  2. ATA drive with OPENSuse
  3. SATA with Windows c drive

I already tried to swap the boot sequence, but then I get a
NTDLR-Error. I think because he can’t find the windows bootloader…maybe!?

I see /etc/grub.conf but where is /boot/grub/device.map? The data in that file is critical.

Oh well yeah sorry my mistake…:shame:!
Let me try again:


linux-avxr:/home/micha # cat /boot/grub/device.map
(hd1)   /dev/sda
(hd0)   /dev/sdc
(hd2)   /dev/sdb

Hope that’s right now.:slight_smile:

OK, with your setup the Windows boot stanza should be:

rootnoverify (hd1,0)
map (hd1) (hd0)
map (hd0) (hd1)
chainloader (hd1,0)+1

If you get an error, note it exactly, post it back here, and I’ll tell you what it means and how to repair it.

Okay after I edited the menu.lst and restarted, I got that error again:


NTDLR missing
restart with ctrl + alt + del

That error comes from the code in the partition boot sector. Please change the bios boot sequence to sda as the first disk, reboot, and post back here what happens.

Okay I altered the boot sequence like you said. Here is what happens, the computer isn’t able to load the Grub Bootloader anymore and I get the same error message:


NTLDR missing
restart with ctrl + alt + del

With the switch to sda in the bios, you should not see grub. Before you had the bios booting from sdc and it is the sdc MBR that you had grub installed to.

Now booting from sda, you are using the Windows master boot code (in the MBR) on that disk. That code is working, or you would not have gotten the message you did. It is the code in the partition boot sector that reports the “ntldr is missing” error.

Usually this can be fixed by reinstalling or restoring the boot sector: Run the XP Recovery Console from the bootable XP install CD and use the fixboot command. If you don’t have the CD, there is a very powerful application called Testdisk which you can download from the Packman repository - it can restore the boot sector (when Windows writes this sector, it also writes a backup to the end of the partition; that is what Testdisk restores).

Good luck.

There are couple of things You need to do.

  1. Copy ntldr boot.ini and ntdetect to Your Windows Xp partition (this way You’ll have every file needed to boot on one partition.
  2. Go to YaST Boot Loader —>>> Boot Loader Installation —>>> Boot Loader Options. At Boot Menu untick Set Active flag in Partition Table for Boot Partition.
    3)open Gparted and set boot flag at Your windows xp partition.
    4)at YaST Boot Loader add Chainloader Section, at Section Settings tick Activate this Partition When Selected for boot. At Other System dropdown menu choose partition with Windows XP.Of course at section name type whatever name for Windows xp You need.
    5)You may need to adjust boot.ini file.
    That should do it

P.S. Best thing is to install SUSE Boot Loader at any mbr.After my instructions You will be able to boot XP no matter what happens with MBR.You just always add chainloader section to Your GRUB Boot Loader, no need to use XP fixmbr.Adjust boot order in Your BIOS to boor first from the disk where GRUB is installed.

@BenderBendingRodriguez -

You might want to re-check the thread. OP’s grub is already failing on chainloading to XP boot sector; when grub’s loader does that the Windows MBR is not used in any way. When OP changed bios to boot from Windows disk, Windows MBR code works but again boot fails at XP boot sector. Chainloading cannot work without a valid boot sector, whether the sector is called from an MBR or from another boot loader.

I disagree, NTLDR isn’t loaded because by default Active partition is the suse partition. Don’t tell me what’s wrong because i had the same issue and i fixed it that way.

It fails because there is high probability that second partition which was supposed to be active (the partition he tells he have files) isn’t and that’s why it’s not loading. I had the same problem, where i had two disks and one partition was system and one was boot, simple thing was to do what i’ve written earlier

Let’s remain calm and make sure we understand one another, shall we?

Are you saying that the first disk (which is what OP says bios is booting) should use the active partition on the second disk? That is not possible with the Windows boot code.

Or are you saying that ntldr is on the second disk but needs to be moved to first disk? If so, how was it moved off the first disk? And how did the system boot Windows before?

Or are you thinking that when the “system volume” (which is where the boot loader is) and “boot volume” (which is where the OS is) are on different partitions, that ntldr and boot.ini can be in the boot (OS) volume? If so, that is not correct. The one and only purpose of the system volume is to boot the OS, which means that ntldr and boot.ini must always be on that volume. It is that volume which must be marked active, and which must be found by the MBR code, and which must be on the same disk as the MBR.

In regards to “NTLDR isn’t loaded because by default Active partition is the suse partition”: Again, that only applies if it is the 3rd disk which is being booted, and grub is not in that disk’s MBR. A Windows MBR on one disk cannot call a partition on another disk. Grub stage1 in an MBR can call grub stage2 (the loader) on any disk, but it is only stage2 that can chainload to another boot sector (it is a 2-step process via menu.lst). The Windows MBR can call grub if it is in the boot sector of the active partition, but again, that must be on the same disk.

It helps to understand exactly how the Windows (and grub) boot process works, the functions of each program in that process, and the error messages each of those program’s can report and why. Here is a short summary from MS TechNet:

  1. Bios finds first configured boot disk with an MBR.
  2. MBR code scans its partition table for active flag.
  3. MBR code finds boot sector of that partition on its disk.
  4. MBR code transfers control to boot sector jump instruction.
  5. Jump instruction calls bootstrap code within boot sector.
  6. Bootstrap code examines boot sector data to determine partition’s geometries and where to locate ntldr.
  7. Bootstrap code calls ntldr and transfers control to it.

Note that the active partition must be on the same disk, and that ntldr must be on the same partition - always. It is also of note that it is only the bootstrap code that throws the “ntldr is missing” error - that means that the active partition has already been found and execution transferred to its boot sector. If you would like to look at the bootstrap code (or the MBR code), I can give you the commands.

I can think of a couple of other theoretical possibilities for OP seeing that error, but they are extremely unlikely.

Everything You write is fine but have You ever tried to install Windows XP having two partitions?? The only way a Windows partition is active, system and boot partition is when there is only one NTFS partition available. When there are two partition You could see that the partition where the system is installed (meaning Windows folder etc.) which is a boot partition and second where boot loader (NTLDR, boot.ini and NTDETECT is installed) which is called a system partition (which is also active if i’m not wrong). Try it for Yourself on a virtual machine, You’ll see. Nuff said

Of course - more times than I can remember (I own an IT business). On my test box, I have 4 versions of Windows installed (W2K, 2 XP’s, Vista). There is (and can only be) a single “system volume” (gosh, I hate how MS got the naming backwards) which is where ntdlr, boot.ini, and ntdetect live - again, this is the one and only function of the system volume. And this is the “active” partition. The Windows OS’s each live on their on “boot volume”. The boot volumes are called by ntldr as determined by boot.ini, and can reside on different disks. While it is physically possible to mark more than one partition on the disk active, that is an error - the Windows MBR code will stop at the first record in its partition table marked active, so if that is the system volume, the boot process will proceed; but if the boot volume were to be marked active, for it to boot it would need to have the boot sector installed and boot loader files on it (i.e., the system volume would be unused and the boot volume would in reality be a combined system/boot volume). A key design attribute in the Windows boot flow is that the system volume/boot sector/ntldr must be on the same partition, this partition must be marked active, and it must be on the same disk. Only after ntldr is loaded can the process span to other partitions or disks. In OP’s case, process is not getting that far - the sda1 boot sector bootstrap is failing.

I will say though that this discussion did prompt me to think of something else, so I’ll tip my hat to you for that . . . :wink:

@vraccas -

Sorry about the side-discussion in your thread. :expressionless:

Just for the heck of it, would you try doing the following:

  1. Set bios to boot from second disk, that is, sdb. That should fail. If it boots, then the first disk is not the boot disk. Sometimes it is not clear which SATA port is seen first in the bios boot configuration. I’ve even seen the port numbers painted on the board, be backwards. Assuming sdb does not boot, then . . .

  2. In openSUSE, do this and post back here:

ls /windows/C
ls /windows/D
cat /windows/C/boot.ini