The most modular approach to installing GRUB is to give it its own small partition. Why do this? Well, you can then remove either Windows or Linux with no disruption to any other OS you have installed.
For me, the partition order is:
1 (primary) XP emergency install
2 (primary) XP main install
3 (extended)
5 (logical) grub partion
6 (logical) linux swap
7 (logical) linux
8 (logical) NTFS media drive
You have to set up GRUB manually in the MBR using grub --install. You tell it to place its stage1 and other files in the dedicated partition.
For each Linux distro you install, you tell it to install grub to the same partition as the distro's root directory - not to the MBR. If you have more than one distro, each distro places its own grub in its own partition.
In my case, I asked the Debian installer to put GRUB in locical partion 7 (hd0,6 in GRUB's language).
In logical partition 5 are the files for the GRUB I manually installed. It has its bootloader in the MBR. It has only 1 menu item per OS.
For Windows, it's simply
Code:
root(hd0,0)
chainloader +1
For each Linux distro, you use the configfile command to switch to that distro's own GRUB menu. For me, it's
Code:
configfile (hd0,6)/grub/menu.lst
This then gives you the menu as installed by your Linux distro. The GRUB for each distro is separate and unaware of any other installed OS.
Only the GRUB you manually install needs to worry about that.
When it's time to kill an OS, just format the partition it's on and it's gone. This doesn't affect your manually installed GRUB loader or its files; all you have to do to it is remove the line in the menu for the nuked OS.