Chainloading OpenSolaris from GRUB 2
I have a triple boot system with OpenSolaris, Ubuntu 9.10 and Microsoft Windows XP. I upgraded my Ubuntu 9.10 GRUB to GRUB 2 today. GRUB2 automatically added an entry for Microsoft Windows XP. However, it didn't detect the OpenSolaris that was installed. I had to manually configure OpenSolaris chainloading in GRUB 2. If you are in a similar situation, this will be helpful for you to configure your GRUB 2.
Find your OpenSolaris partition.
$ sudo fdisk -l Disk /dev/sda: 320.1 GB, 320072933376 bytes 255 heads, 63 sectors/track, 38913 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x00099420 Device Boot Start End Blocks Id System /dev/sda1 1 12158 97659103+ 7 HPFS/NTFS /dev/sda2 * 12159 24314 97643070 bf Solaris /dev/sda3 24317 38913 117250402+ f W95 Ext'd (LBA) /dev/sda5 24317 38297 112302351 83 Linux /dev/sda6 38298 38913 4947988+ 82 Linux swap / Solaris
In my case, it is /dev/sda2. Once you have found it, edit /etc/grub.d/40_custom and add the following entry for OpenSolaris. A key difference between GRUB and GRUB 2 is the device numbering. In GRUB, sda2 is (hd0,1). However, in GRUB 2, sda2 is (hd0,2). Keep this in mind when you are configuring your GRUB 2.
# Chainload OpenSolaris GRUB. menuentry "Chainload OpenSolaris GRUB" { set root=(hd0,2) chainloader +1 }
Now your /etc/grub.d/40_custom should look like the following.
#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. # Chainload OpenSolaris GRUB. menuentry "Chainload OpenSolaris GRUB" { set root=(hd0,2) chainloader +1 }
Then run update-grub to regenerate /boot/grub/grub.cfg.
$ sudo update-grub Generating grub.cfg ... Found linux image: /boot/vmlinuz-2.6.31-19-generic Found initrd image: /boot/initrd.img-2.6.31-19-generic Found memtest86+ image: /boot/memtest86+.bin Found Microsoft Windows XP Professional on /dev/sda1 done
You will not find anything about OpenSolaris in the output message. However, you can examine /boot/grub/grub.cfg to find if an entry is added for OpenSolaris.
$ tail -10 /boot/grub/grub.cfg # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. # Chainload OpenSolaris GRUB. menuentry "Chainload OpenSolaris GRUB" { set root=(hd0,2) chainloader +1 } ### END /etc/grub.d/40_custom ###