Basically, there are two ways to do this:
1. Use ntldtr - NT's boot loader.
2. Use GRUB or LILO - most popular Linux boot loaders.
I just finished an installation of XP with RedHat using method 1. I ran into an issue on which no ready help was available - or as far as google knew, here was none. ;-)
Here are the links that helped me:
Illustrates using ntldr as the boot loader
A more comprehensive description on using ntldr for a dual boot
Explaination for missing hal.dll error
Basically, I had two disk drives and when I installed XP, it called the windows partition E: and the other drive C:.
So I copied the linux boot image to e:\ and added an entry in e:\boot.ini to reflect that.
So e:\boot.ini had this as the last line:
When I re-booted, NT boot loader showed me the entry for Linux, but when I selected it, there was a complaint about hal.dll being missing / corrupt or some such.
Turns out, ntldr don't know what e: is!! When I copied linux.bin to c:\ and updated e:\boot.ini to reflect that, everything worked.