This section describes how multiple operating systems that are on the same disk are supported with GRUB. The following is an example of an x86 based system that has the Solaris 10 10/08 OS, the Solaris 9 OS, Linux, and Windows installed on the same disk.
Table 15–2 Sample GRUB Menu Configuration
Operating System |
Location on Disk |
---|---|
Windows |
fdisk partition 0 |
Linux |
fdisk partition 1 |
Solaris |
fdisk partition 2 |
Solaris 9 OS |
Slice 0 |
Solaris 10 10/08 OS |
Slice 3 |
Based on the preceding information, the GRUB menu would look like the following:
title Solaris 10 findroot (pool_rpool,0,a) kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS module /platform/i86pc/boot_archive title Solaris 9 OS (pre-GRUB) root (hd0,2,a) chainloader +1 makeactive title Linux root (hd0,1) kernel <from Linux GRUB menu...> initrd <from Linux GRUB menu...> title Windows root (hd0,0) chainloader +1 |
The Solaris slice must be the active partition. Also, do not indicate makeactive under the Windows menu. Doing so causes the system to boot Windows every time. Note that if Linux has installed GRUB on the master boot block, you cannot access the Solaris boot option. The inability to access the Solaris boot option occurs whether or not you designate it as the active partition.
In this case, you can do one of the following:
Chain-load from the Linux GRUB by modifying the menu on Linux.
Chain-loading is a mechanism for loading unsupported operating systems by using another boot loader.
Replace the master boot block with the Solaris GRUB by running the installgrub command with the -m option:
# installgrub -m /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/root-slice |
See the installgrub(1M) man page for more information.
For information about the Solaris Live Upgrade boot environment, see Solaris Express Installation Guide: Solaris Live Upgrade and Upgrade Planning.