1

Its same question for Linux here at discribe in details tha boot process of any linux system but emphasis on Solaris style of things. I am preparing a document in detail showing light on the boot sequence of Solaris right from pressing of Power-on button the host to the login prompt appearance.

It would be great if we could combine and collate that right answers here into a single place of reference. Please include any details worth possible to note during the startup. Once the document gets complete from all the points, I will post the document details here as well and update the link in the question.

Please consider all possible scenarios like booting from disk, booting from usb, booting from network on a disk-less client where the rootfs(/) is on network.

2 Answers2

2

I break this down into 3 distinct phases. Firmware, where you find out about the hardware, Kernel, which takes information provided by the firmware and uses it to find and load drivers, modules, eventually leading to the OS phase, which comprises all the steps necessary to take you all the way to a fully running suite of OS and application which is capable of delivering specified services.

1) firmware

  • x86/64: BIOS loads, configures devices, selects boot device (net/disk/cd/usb)
  • SPARC: nvram loads OpenBoot, configures devices, selects boot device (net/disk/cd/usb)

2) kernel

  • if boot media is net, there is a preliminary step here for the RARP/bootp initialization on SPARC, or for DHCP on SPARC if boot devices is explicitly set to use DHCP (eg: boot net:dhcp). On the x86/64 side there is also a preliminary step which uses DHCP, in a process known as PXE. RARP/bootp are not options with PXE. Both the SPARC and x86_64 methods are used to configure IP addresses, and retrieve information about kernel and media locations on the network.
  • kernel is loaded from boot media (net/disk/cd/usb)

3) OS

  • kernel loads. in this phase, the basics are set up. the booting kernel uses the boot archive to load individual files until is has enough information to mount the local filesystems itself, then file access operations are handled by the appropriate driver.
  • SMF comes into play here as the kernel boots the OS into the initial service milestone, which would typically be the multi-user-server milestone, but might be the single-user milestone if you were booting into single-user mode. This portion of OS initialization loads all the services which are required for the server to function.
  • One the initial milestone is achieved, then additional (optional) services are started via the SMF facility svc.startd. You could think of this as the 'application layer' of the boot process. This is where SSH would start, or Apache, or Weblogic, or Sendmail, or whatever other applications you're using. These are the services deemed required by the Administrator, rather than those required by the kernel, as in the previous bullet.

This may not be quite as detailed as you hope for, but it should serve as a pretty good basis to get you started. Oracle and others have documents online which go into very great level of detail on individual portions of the boot process. A good start might be Chapter 7 SPARC and x86 Based Booting, then a quick google search for 'solaris boot sequence' will find you documents you can use to compare the boot sequences of older versions of Solaris to the latest release.

Tim Kennedy
  • 19,697
2

Here is a description of the boot sequence on x86:

  • power on
  • BIOS do hardware self-test/initialization
  • The user is allowed here to interrupt the process to change bios settings and/or select what device to boot
  • If the boot device is NET, see Tim Kennedy's detailed answer.
  • If the boot device is DISK or USB load MBR and run the first stage of the boot loader found on the media. This will always be GRUB stage one, unlike with Linux where alternative boot loaders might be used. GRUB stage 1 knows where stage 2 is located and run it
  • If the boot device is a CD/DVD media, GRUB stage 2 is directly loaded from it
  • Select what menu.lst to use, especially with ZFS where you can have more than one of them with multiple boot environments.
  • Present the user a boot menu allowing to choose between the default entry or alternative ones. In that stage, the user can also edit the entries to, for example, add or modify the options passed to the kernel. A CLI is also available there.
  • Grub Loads the kernel and is being substituted by it
  • From there, what happens is identical regardless of the architecture (SPARC or x86) and is already explained in Tim's answer.

Note that the version of GRUB used by Solaris has been enhanced to support ZFS boot.

jlliagre
  • 61,204