Here's what I did for a tripple boot setup. I went through alot of trials and I'm not sure if the order is important. Here is the setup I now have and it works for me on my Macbook Pro 1,2. But as they say, "your mileage may vary" :).
I have a 500GB disk partitioned like this:
I use 2 partitions for OS X. Using the gdisk on the Parted Magic CD (version 4.8 ), I created a hybrid MBR:
1 40 409639 200.0 MiB EF00 EFI System Partition
2 409640 251281447 119.6 GiB AF00 Apple_HFS_Untitled_1
3 251543592 670187559 199.6 GiB AF00 Apple_HFS_Untitled_2
4 670449704 879902759 99.9 GiB 0700 Windows XP
5 958028994 976773134 8.9 GiB 8200 Ubuntu Swap
6 879902760 958027760 37.3 GiB 0700 Ubuntu 7.10
Now I can tell you that when I partitioned the 500GB I used the GUI disk utility on Max OS X, and left 50GB unallocated. After OS X and Windows XP were setup on a Boot Camp scheme I decided to install Ubuntu 7.10 from the Linux Format Magazine DVD. I installed it running Windows XP. I DID NOT install a boot loader, thinking it would screw up my Mac OS X booting. That was before I knew anything about EFI booting.
Number Boot Start (sector) Length (sectors) Type
1 1 409639 0xEE
2 409640 250871808 0xAF
3 879902760 78125001 0x83
4 * 670449704 209453056 0x07
I found rEFIt, Parted Magic, gdisk, etc and various posts about triple booting Macbooks. I like rEFIt but for 2 reasons don't use it: 1) it interferes with Macbook updates, 2) it cannot be configured like lilo, grub or grub2 can be, at least not yet (I am using v0.12). I may go with rEFIt in the future however, as it looks like it will be the prefered way to boot EFI systems. The current version doesn't allow me to specify the boot rules for my setup. It didn't recognize my Ubuntu installation on partition 6 until I installed lilo. Plus, I kindof like to have the Linux OS hidden. So chainloading it from Windows XP is the setup I use.
Using the Parted Magic CD, I copied the lilo files and shared libs it requires and the Super Grub2 file sgd2.gz to the Ubuntu partition from the Parted Magic CD. Then I booted Ubuntu using the "Super Grub2 Disk" option under the "Other Features" menu.
I then created a /etc/lilo.conf":
I didn't have the manpage for lilo.conf, and I couldn't figure out how to set the root, (I don't have Internet at the house!) so booting Ubuntu directly always caused a kernel panic when it failed to mount the root fs.
# Global LILO settings
# Kernel specific LILO settings
append="figure out kernel command line to set proper root"
# This loads the grub2 boot loader to boot Ubuntu. Eliminate when above is figured out
I then wrote the lilo boot sector to /dev/sda6 using:
lilo -v -P ignore
Then I copied the boot sector over to my Windows XP C:
dd if=/dev/sda6 of=/media/DOS_FAT_32_Untitled_3/sda6MBR.bin bs=512 count=1
The last step was to change the Windows boot.ini to chainload to the Ubuntu partition:
And thats it. Ubuntu is booted through the "Windows" boot camp partition.
multi(0)disk(0)rdisk(0)partition(4)\WINDOWS="Windows XP SP3" /noexecute=optin /fastdetect
C:\sda6MBR.bin="Ubuntu Linux 7.10"