I read your comments above with interest. Noticed this:
Chainloading is one area, which I've still to conquer entirely. I can chainload windows now with little problems. But haven't been able to chainload Linux. By theory one can install a bootloader to the partition record of a given partition and chainload from the bootloader in MBR to the bootloader in the partition record. I haven't acomplished that yet.
Maybe this will help you a little bit. I have a computer that currently has 2 copies of Linux Mint 4 KDE CE, Kubuntu, Sidux, which I just added, and Sabayon. This is the main computer that my wife uses also. She likes Mint 4 KDE CE, so I have a separate install for her. I have a habit of breaking systems and then having to fix them, trying to do strange and unusual things. As you can imagine, this doesn't go over well with her when she wants to do something important, like read the obituaries.
I did have separate boot and home partitions, but have now changed that. I put everything in / for each installation. And I now have a separate partition for booting only. A master boot you might say. It is not associated with any of the installs. You could use the boot of one of the installs as the master boot but this way the boot capability isn't tied to any one install. I call this partition /gboot.
Here is the layout. I have 1.5 Gig physical ram and two hard drives. They are both ide but it works just fine with sata too. To hold down on confusion, I will refer to partitions with the convention sdxx since thats the way most distros do now. I will refer to them as (hdx,x) when talking about grub.
Note: Edited grub notation to make it consistent with actual commands needed.
sda - Boot drive
sda1 - 300 MB - /gboot - ext2
sda2 - 1 Gig - swap
sda3 - 14 Gig - / - Mint 4 KDE - ext3
sda5 - 14 Gig - / - Mint 4 KDE - ext3
sda6 - 14 Gig - / - Kubuntu 7.10 - ext3
sda7 - 14 Gig - / - Sabayon - ext3
sda8 - 14 Gig - / - Sidux - ext3
sda9 - 14 Gig - /home/denise/My_Data - ext3
sda10 - 14 Gig - /home/fred/Backup - ext3
sdb - Slave drive
sdb1 - 1 Gig - swap
sdb2 - 42 Gig - /home/fred/My_Data
I cross mount sda9 on my Mint 4 KDE as /home/fred/Denise
I cross mount sdb2 on her Mint 4 KDE as /home/denise/Fred_Stuff
Ok, let's get to the meat of it. I like the Mint 4 grub so that's what I used. I copied the entire Mint 4 /boot partition to /gboot. You can delete the kernels from /gboot later if you wish. Doesn't help or hurt, as they won't be used anyway.
You need to install grub to the Mint 4 install you just copied the /boot from. In my case I typed:
You need to copy /etc/grub/message.mint to /gboot/grub/. Edit /gboot/grub/menu.lst and change the gfxboot line to gfxboot=/grub/message.mint . This will give you the nice Mint 4 boot screen.
While you are there you can go ahead and put your chainload lines in the /gboot/grub/menu.lst. They can go either before or after the Automagic kernel section. I put mine in before. You don't need any other boot stanzas that you might already have there, so erase them. Example:
EDIT: 8/1/2009 - The later versions of grub no longer need the "makeactive" line in the chainload stanza for booting Linux. Remove it from the below examples.
# lots of stuff
## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
# timeout 10
# Pretty colours
color cyan/blue white/blue
## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line) and entries protected by the
# command 'lock'
# e.g. password topsecret
# password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret
# title Windows 95/98/NT/2000
# root (hd0,0)
# chainloader +1
# title Linux
# root (hd0,1)
# kernel /vmlinuz root=/dev/hda2 ro
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST
title Mint 4 - KDE CE Denise
title Mint 4 - KDE CE Fred
title Kubuntu 7.10
# The reason I use the "makeactive" line is some boot
# systems won't boot without the partition being made
# active. So I always put it in even though it isn't needed
# most of the time.
### BEGIN AUTOMAGIC KERNELS LIST
# lots of stuff!
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below
## ## End Default Options ##
# deleted automagic boot stanzas
### END DEBIAN AUTOMAGIC KERNELS LIST
# deleted static boot stanzas
Ok. here comes the fun and mistake prone part.
You must install Mint grub to the mbr of sda pointing to /gboot. In Mint open a terminal:
When you install a system, install grub to the partition that /boot is in for that installation. In my case that is the / partition. This can usually be done as part of the install. If not, choose not to install grub anywhere.
In some cases the Mint grub and the new install grub will not cooperate. As an example, Sidux and Kubuntu. When I tried to boot Sidux with this setup it booted fine, no problem. Kubuntu, on the other hand didn't like the Mint Grub. If you have a system that won't boot then you need to install the Mint grub to the partition /boot is in for the problem install. In my case with Kubuntu I did this in a Mint terminal.
From now on you can change distros without affecting your master boot setup. The only thing you will have to do is change the title line in /gboot/grub/menu.lst to the new distro name. And maybe do the above as I had to do for Kubuntu. Most distros are happy with Mint grub.
For the sake of being more complete, I should add. Edit each distro's /boot/grub/menu.lst and remove the static boot stanzas that appear there to clean up your boot screens some. I also reduce the time given for the default boot. This keeps the overall unattended boot time lower.
# timeout 10
I hope this sheds some light on the chainload issue. Bye-the-way, in case you haven't figured it out, Denise is my lovely bride of 45+ years.
EDIT: Don't forget. When you install another distro that formats its' partition on install, you will have to correct the UUIDs in /etc/fstab of all the existing systems that use UUIDs. You may have to do the same in /boot/grub/menu.lst also.