x86: Administering the GRUB Bootloader

The open source GRand Unified Bootloader (GRUB) is the default boot loader on
x86 based systems. GRUB is responsible for loading a boot archive into the
system's memory. A boot archive is a collection of critical files that is
needed during system startup before the root file system is mounted. The boot
archive is the interface that is used to boot the Oracle Solaris OS.
You can find more information about GRUB at http://www.gnu.org/software/grub/grub.html. See also the grub(5)
man page.

How GRUB Based Booting Works

After an x86 based system is powered on, the Basic Input/Output System (BIOS)
initializes the CPU, the memory, and the platform hardware. When the initialization phase
has completed, the BIOS loads the boot loader from the configured boot device
and then transfers control of the system to the boot loader. The boot loader
is the first software program that runs after you turn on a system.
This program starts the boot process.

GRUB implements a menu interface that includes boot options that are predefined in
a configuration file called the menu.lst file. GRUB also has a command-line interface
that is accessible from the GUI menu interface that can be used to
perform various boot functions, including modifying default boot behavior. In the Solaris OS,
the GRUB implementation is compliant with the Multiboot Specification, which is described in
detail at http://www.gnu.org/software/grub/grub.html.

Because the Oracle Solaris kernel is fully compliant with the Multiboot Specification, you
can boot x86 based systems by using GRUB. With GRUB, you can boot
various operating systems that are installed on a single x86 based system. For
example, you can individually boot Oracle Solaris, Linux, or Windows by selecting the
boot entry in the GRUB menu at boot time, or by configuring the
menu.lst file to boot a specific OS by default.

Because GRUB is intuitive about file systems and kernel executable formats, you can
load an operating system without recording the physical position of the kernel on
the disk. With GRUB-based booting, the kernel is loaded by specifying its file
name, and the drive and the partition where the kernel resides. For more
information see Naming Conventions That Are Used for Configuring GRUB.

GRUB Support for findroot Command

The findroot command, which functions similarly to the root command previously used by
GRUB, has enhanced capabilities for discovering a targeted disk, regardless of the boot
device. The findroot command also supports booting from an Oracle Solaris ZFS root
file system.

The most common format for the menu.lst entry for this command is as
follows: