I found this from another source:
(warning, long post with hopefully good info)
Ok fellow newbies, since no one answered my requests for help on this and since this seems to be a common theme with no clear "How to" that I could find on the net I figured I'd post this again So other newbies can avoid my mistakes
This is basically a "how I did . . ." that could serve as an example on 2 things:
1) Installing windows AFTER linux is installed
2) fixing the boot system after changing partition tables
My specific scenario:
I started with Linux/winxp/winme multi boot (rh9) and grub boot loader. win XP screwed up (again)
I was tired of reinstalling rh9 every time windows became corrupted so I found a (partially complete/correct) FAQ on how to reinstall grub and keep my linux
Where I screwed up:
I had a really huge windows partition that was basically wasted space so I went into dos fdisk , blew away the XP partition and made it only 5 gig so I could add different linux flavors later.
THE PROBLEM THIS CREATED:
both linux and windows now viewed all the partitions with different numbers. previously my root was hd0,1 and my swap was hd0,2 with all my other linux partitions on hd1,x
what I SHOULD have done:
1) make sure M.E. is the active partition in dos fdisk after deleting and recreating XP partition
2) reinstall winxp
3) boot using linux emergency disk and mount the root properly
4) edit fstab and grub.conf to reflect the new partition numbers for /root, /swap, and splash screen (which is also root I believe), and windows boot partition
IF I WAS SIMPLY ADDING WINDOWS FRESH AFTER A LINUX INSTALL:
1) Assuming I already have unpartitioned disk space, I could have booted using the windows boot disk and created the partition(s) in dos fdisk for windows (or in winxp but anaconda seems to cry over this but it will work)
2) install windows version(s) on the newly created/formatted partition(s) in proper order (older to younger)
3) after verifying that windows is booting properly, boot using linux boot/emergency disk, properly mount linux root for your version of linux (rh9 automatically offers to mount pre-existing linux installations on /mnt/sysimage and all I had to do was type: chroot /mnt/sysimage)
4) find out the new partition numbers for the swap partition, and root/boot.
5) edit fstab and grub.conf (in rh9 mine were both stored in /etc directory) to reflect the proper swap partition, root partition, splashscreen partition for grub *note* the splash screen is very important or it wont provide the proper options, and the proper windows boot partition.
how I had to reinstall grub after installing windows to correct all my mistakes.
1) booting in to the (rh9) linux with the boot floppy I typed "linux rescue" at the "boot:" prompt (http://www.bootdisk.com/
if you don't have a boot disk and can't create one from your install)
2) I accepted the default /mnt/sysimage that rh9 provides to mount the existing linux installation. it recognized my network connection but I told it not to install it for this process
3) at the prompt I type "chroot /mnt/sysimage"
4) to find the partition information I typed "sfdisk -l" this listed the partitions and identified the swap file. Some people say there's a command to specifically identify the root partition, but I don't know what it is and I knew mine was only 102 mb and I was able to correctly guess which one was which since I couldn't remember which drive I put the root partition on.
5) after getting the partition numbers I changed directories into the etc directory (this is where both fstab and grub.conf files are on my rh9, "cd etc"
6) I used vi editor to edit fstab & grub
i (for insert, move to right spot and change the hda, mine was now hda1 where it was hda3 previously, the delete key worked ok to remove the old text)
7) using the same method above I edited grub.conf
-my root was now hd0,0 (listed as hda1 in sfdisk) so I changed both the splash screen and root to be hd0,0.
-Previously my windows boot partition was hd0,1 but with all the changes it was now hd0,2 so I had to edit the entry to reflect this
-I saved the file using :wq like above
I had to type exit and hit enter twice at the prompt to solicit a reboot, while it was rebooting I removed the emergency floppy and the rh9 cd1 that the floppy required for boot.
Magically the grub menu/splash screen came up (I had edited the windows option to say "various windows Operating systems"
Now, one thing to note here, I now have 4 partitions on my first hard drive and 26 gig of free space on it for later. when I DO finally add new linux partitions on it later or if I decide to make some of that available to windows I'll have to find a way to HIDE all the linux partitions from the windows systems. I'm told this can be done within the grub.conf file but I haven't tried to tackle that yet . What I'll likely do is copy the grub.conf file to a back up file and that way I can easily restore if I screw things up
I hope this helps someone out there to avoid the frustration I went through while trying to do this without any clear instructions. Mine aren't very clear perhaps but it's more info and examples than I found anywhere.
happy Linux everyone