After successfully installing Windows XP and Linux on a 3Ware RAID volume, GRUB cannot start either operating system. Depending on the version, GRUB may display Error 17, or may drop the system to the GRUB prompt.
In a dual-boot configuration, Windows XP is normally installed first, and therefore will occupy the first partition of the hard drive. Depending on the size of this partition, this may put the Linux /boot partition beyond cylinder 1024.
On some systems (Due to BIOS bugs or incompatibilites), the BIOS cannot address any cylinders beyond 1024 on the 3Ware controller. Since the GRUB boot loader uses the BIOS to access the RAID volume, GRUB will fail on these systems.
To workaround this issue, the Linux /boot partition needs to be the first partition on the disk. This can be accomplished by installing Linux first and making sure /boot is the first partition. A second placeholder partition for Windows should be created next, followed by the rest of the desired Linux partitions.
When installing Windows, the placeholder partition should be deleted and then Windows XP can be installed to the newly unallocated space.
The Windows installation process will overwrite the GRUB boot loader, so it will no longer be possible to boot into Linux. To fix this, boot into rescue mode using the Linux installation media. Chroot into the Linux system and add the following lines to /etc/grub.conf:
title Windows XP rootnoverify (hd0,1) chainloader +1
Afterwards, run
# grub-install /dev/sda
to restore the GRUB boot loader. You should now be able to boot both operating systems.