OK this is an easy one I think.
You can have over 100 distros but need only one swap. If you make more than one swap it can actually slow down the performance as some distros will try to manage them as a set or try to use them all.
You don't need to tell from the second Linux onward about the swap. These buggers will find it themselves.
The easiest to multi boot say 100 distros is by chainloading. Basically you install the 1st Linux boot loader in the MBR and the 2nd to 100th in their respective root partitions. Thereafter you can boot all of them the same way you boot a Window.
Typically if you have a distro in hdb4 it will be known to Grub as (hd1,3) as Grub counts from 0 and hda is traditionally the first disk and hdb the second assuming you have nominated hda as the first disk to be booted then in the /boot/grub/menu.lst of the 1st Linux you need these lines to boot it
Code:
titile My distro in hdb4
root (hd1,3)
chainloader +1
If you put Lilo in the 1st LInux then the equivalent lines needed in the /etc/lilo.conf are
Code:
other=/dev/hdb4
label=Linux_in_hdb4
In the above you will boot up the 1st Linux first and have 100 OS to choose from. By select any one you then boot to the boot menu of that distro. You can also edit the boot menu of the second distro to boot the another lot including returning back to the 1st Linux.
I recommend chainloading because
(1) It is the easiest.
(2) Every boot loader as created by the installer is intact and preserved
(3) The scheme is flexible as you can nominate any distro into the MBR to control the rest
(4) You don't have to know the files names of the kernel and initrd of every Linux
(5) You can use the same technique to boot Dos, Windows, BSD, Solaris and Darwin
(6) You can see the boot menu designed by each distro but can still opt them out by the timeout statement.
(7) You can create a menu to boot all the distros (or other operating systems) even before you install them.
(8) You can run a relay system to boot infinite number of operating systems.
(9) You can mix all the boot loaders together, jumping from Grub to Lilo, then NTLDR, back to another Grub etc.
Chainloading is the "indirect method". The "direct method" is to name the kernel and initrd of every distro. It is more involved as you need the precise locations and filenames of each distro but gain almost nothing.
Just remeber
(a) The distro nominated to go into the MBR must be booted "directly" otherwise it is like a dog chasing its own tail or going round a endless loop.
(b) All MS systems when installed will have their boot loaders automatically installed in their root partitions and readily to be chainloaded.
(c) Solaris, BSD and Darwin will install their boot loaders in the root partitions if you deny them access to the MBR.
Other points
(i) You don't need to make the bootable Linux partition "active" or bootable. The bootable flag is only used by MS and some Unix systems. Both Grub and Lilo requires the bootable partition to be declared up front by the "root" and "other" statements respectively.
(ii) Linux and swap can be anywhere in the hard disk and that means they can all be in logical partitions and has no influence on Windows which must be installed in a "primary" partition. Users have to do hacking in order to install a MS system in a logical partition.
(iii) You don't need to put Grub in its own partition for any Linux. Although Grub can work without an operating system and can take over a partition. In such a case you use Grub to boot other operating systems "manually". If you activate Grub living alone in a partition you get a Grub prompt. Grub is a mini operating system in its own right.
(iv) Unless you are after speed and performance it is best to install every Linux in a single partition for management and maintenance. No Linux is known to refuse to go into a single partition.