Go to main content

Booting and Shutting Down Oracle® Solaris 11.3 Systems

Exit Print View

Updated: October 2017

x86: Maintaining GRUB 2 and GRUB Legacy Boot Environments on the Same System

You can activate GRUB 2 boot environments on a system that has GRUB Legacy boot environments, but only if the GRUB Legacy boot environments are GRUB 2 aware. Also, you can activate a GRUB Legacy boot environment from a GRUB 2 boot environment. One caveat for activating GRUB 2 boot environments on systems with GRUB Legacy boot environments is that you must install the GRUB 2 prerequisite packages in the current boot environment before you invoke the pkg update command to install an Oracle Solaris release that supports GRUB 2. See How to Upgrade Your GRUB Legacy System to a Release That Supports GRUB 2.

Boot environments are managed through the beadm command. See beadm(1M). When the beadm create command is used to create a new boot environment, a menu entry is also automatically created for that boot environment. You can display all of the boot environments that are on a system by using the beadm list command:

$ beadm list
BE                      Active Mountpoint Space Policy Created
--                      ------ ---------- ----- ------ -------
oracle-solaris11-backup -      -          64.0K static 2014-03-29 11:41
oracle-solaris2         -      -          64.0K static 2014-03-29 11:41
solaris11.3             NR     /          3.35G static 2015-05-17 13:22

The beadm command works with both GRUB 2 and GRUB Legacy configurations. When GRUB 2 boot environments are present in list of boot environments, GRUB 2 is retained as the default boot loader. Oracle Solaris does not attempt to reinstall GRUB Legacy as the default boot loader, even if a GRUB Legacy boot environment is activated. If you remove the last GRUB 2 boot environment from the system, you must manually install GRUB Legacy as the system boot loader. If the system includes the GRUB 2 prerequisite packages, you can use the bootadm install-bootloader –f command to manually install the boot loader. See Installing GRUB 2 by Using the bootadm install-bootloader Command. Otherwise, you can use the installgrub command. See installgrub(1M).

Manually reinstalling GRUB Legacy as the default boot loader by using the bootadm install-bootloader –f command forcibly installs GRUB Legacy as the system boot loader. To ensure that all boot environments remain bootable, this command must be run from the boot environment that contains the latest GRUB Legacy boot loader version. In addition, prior to reinstalling GRUB Legacy, all GRUB 2 boot environments should be removed from the system by using the beadm command. See How to Install GRUB Legacy on a System That Has GRUB 2 Installed.

Note -  It is important to note that when using the bootadm install-bootloader command with the –f option on a system with an older boot loader, the older boot loader must be capable of reading the ZFS version on the boot disk. Otherwise, GRUB might not be able to read the root pool at boot time, rendering the system non-bootable.

If this situation occurs, you must install a newer boot loader by booting from another boot environment or by booting from recovery media and installing the boot loader version that matches your pool version. See How to Boot From Media to Resolve a Problem With the GRUB Configuration That Prevents the System From Booting.