Solaris basics: booting process on x86 systems

On x86, the boot model relies on the BIOS. x86 systems instead of using a VTOC, use MBR.

X86 counterpart to the OPB’s utility is GRUB.
Solaris 11 uses a modified version of GNU GRUB 0.97.

The variable bootfs locates the file system reader.
kernel$ locates the kernel with additional parameter.
module$ locates the boot archive.

Once you start the boot process, either from OBP or a GRUB, the remaining phases are the same:

  • Booter phase: boot archive file gets read, identified by the bootfs variable
  • Ramdisk phase: an ISO is mounted and used as a stand-alone, read-only file system. It contains configuration files and drivers.
  • Kernel phase: mounts to the ramdisk ans reads driver modules. One of those drivers supports root file system and can attach it to the root device specified. Kernel unmounts from the ramdisk and continues working on the root file system.

The boot archive is a collection of files derived from the full root ( / ) file system of a Solaris 11 instance.
When you install Solaris 11, the system creates the archive by copying key files from /.
The archive must be in sync with root file system; this task is performed automatically during a graceful shutdown process.

If you want to manage the boot archive, use bootadm utility with these options:

  • list-archive (SPARC, x86)
  • update-archive (SPARC, x86)
  • list-menu (x86 only)
  • set-menu (x86 only)

init states

0 Firmware (ok prompt, GRUB)
1 System administrator (system will stop here if it can’t boot)
2 Multiuser (allows remote)
3 Multiuser with services
4 Unspecified
5 Shutdown and power off
6 Reboot
S or s Single user

The shutdown command lets you define a grace period and a message to warn users:

 shutdown -g [sec] -i [init state] “[message]”

All the other runlevels all have counterparts in SMF, called milestones.

The halt and power off are the same program code but they are not synonymous with the init states.