Solaris boot-archive

A couple weeks ago, I was asked to help with a problem with an out-of-sync boot-archive on a SPARC Solaris server.  The problem occurred after EMC Powerpath software had been upgraded, and the server was rebooted.  As it had been quite a while since I’d worked on Sun Solaris platforms, I wasn’t any help – I’d never heard of a boot-archive in Solaris before.

So since then, I’ve been reading up on it and here are some of the things I found out:

The Solaris boot-archive is a file on disk containing an image of the root filesystem.  It is used during the early stages of the boot process.  The boot (1M) manpage describes this process in detail.  The boot-archive file is meant to remain synchronized with the real root filesystem.  If an update is made to a kernel file, driver, module, or driver config file which is part of the boot archive, then the boot archive needs to be updated.  This is done automatically as part of reboot (1M) and shutdown (1M).

If, when a machine boots, the boot-archive is somehow inconsistent with the real root file system, you get the error message we encountered with our server, and are strongly encouraged to reboot in failsafe mode.  But in our specific case, there is a known issue with the EMC Powerpath upgrade, where the emcp.conf file is showing up as unsynchronized in the boot-archive, and it isn’t necessary to boot failsafe.

In our situation, it is sufficient to simply continue booting and then clear the service, if the only inconsistency is the emcp.conf file, like this:

#  svcadm  clear  system/boot-archive

I’m wondering if the whole scenario couldn’t be avoided by just updating the boot-archive after EMC Powerpath is upgraded, and before reboot.

#  bootadm  update-archive  -n

(reveals inconsistencies in the boot archive)

#  bootadm  update-archive  -v

(synchronizes the boot archive with the real root filesystem)

#  reboot

That seems the most straightforward to me, and this is what I’m going to try if I ever get involved in a Powerpath upgrade again.