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 Solaris OS.
You can find more information about GRUB at https://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 https://www.gnu.org/software/grub/grub.html.
Because the 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 the Solaris OS, 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.
For step-by-step instructions on booting a system with GRUB, see Booting an x86 Based System by Using GRUB (Task Map).
See also the following man pages:
GRUB Support for New findroot Command
GRUB support for a new findroot command has been implemented in this Solaris
release. The findroot command, which functions similarly to the root command that was previously
used by GRUB, has enhanced capabilities for discovering a targeted disk, regardless of
the boot device. The findroot command also supports booting from a ZFS
root file system.
The most common format for the menu.lst entry for this command is:
findroot (rootfs0,0,a)
kernel$ /platform/i86pc/kernel/$ISADIR/unix
module$ /platform/i86pc/$ISADIR/boot_archive
For more information, see x86: Implementation of the findroot Command.
For GRUB reference information, see Chapter 15, x86: GRUB Based Booting (Reference).