Tri-Boot System: Linux, Solaris and Windows
I just finished to setup my laptop with a Tri-Boot System with Ubuntu Linux, Solaris 10 and Windows Vista. Here are some tricks I discovered during this process.
Linux is the OS that I use the most and usually I create a different partition for the "/home" directory, cause it's more practice if I decide to reinstall the entire system. With Solaris, I'm still learning about this OS, preparing myself for Indiana and trying to learn more about the amazing tools on it (ZFS, Zones, DTrace, etc). Windows I keep mostly for some software tests and games =P.
So, at that moment I had to start creating the disk partitions. There is a partition for the Linux root directory ("/"), one for Linux home, Linux swap, one for Solaris and the last for Windows. Briefly, I would divide my disk in five pieces.
For the disk partitioning process, I used GParted Live CD. At this moments I learned something: when trying to create an logical partition for each of this pieces and was receiving an error message from GParted. Then, I discovered that "a PC hard disk can contain either as many as four primary partitions, or 1-3 primaries and a single extended partition" in a Wikipedia Disk Partitioning article. Therefore, I changed my strategy. I've created a logical partition for Solaris and Windows, and a extended one to Linux. Here is the result:
In the image, the last partition, where Solaris 10 is installed, you can see that GParted displays it as Linux Swap. This happens because every partition type is identified by one byte at the MBR, and Solaris and Linux swap identifier are the same (x86: Change to Solaris fdisk Identifier).
After the disk partitioning, was time to install the Operating Systems. I'm not going to write about installing them, because I believe there are no complications at this steps, you just have to select the right partitions you've created for each OS. I started with Windows, them Linux and finished with Solaris (if you are following this steps, please keep reading before you try this).
After this steps, GRUB was loading the menu placed in the Solaris partition. It didn't detected the Linux installation, so there was no option in the GRUB menu for booting Linux when. Like I said before, I use mostly Linux, so I prefer that the menu that was in Linux to be shown. To recover it, I followed the steps at an Ubuntu Tutorial, called Recovering Ubuntu after installing Windows, to fix the MBR. If you prefer this too, I really recommend that you install Solaris before Linux, so you can skip the recovering process.
But with the Linux GRUB menu running, I wasn't able to boot Solaris. To fix that, just add the following lines at the end of your menu.lst (/boot/grub/menu.lst):
Next time you reboot you computer, there will be another option in the GRUB menu, called "Solaris", that when is selected it calls the Solaris GRUB menu.