Solaris Live Upgrade on SunFire T1000/T2000 servers

The process of installing and configuring Live Upgrade on Solaris is pretty well covered at this stage but, as ever with Solaris, there is always something that is not covered in the many existing documents and blog postings on the subject. So, here is an overview of what I did, what worked, what did not work and how I overcame the bits that did not work.

Setup

I wanted to use Live Upgrade to ease the painful patching process on Solaris (not to upgrade the operating system). I tried this on a SunFire T1000 and a SunFire T2000 both running Solaris 2.10 U3 (06/06). In both cases, the systems contained 2 existing 10GB UFS file systems (/ on c0t0d0s0 and /opt on c0t0d0s3) as well as a swap partition (c0t0d0s1).

What Did Work

Following the Live Upgrade documentation from the Sun website, I narrowed the commands down to the following steps:

Create a new partition to accommodate the Alternative Boot Environment
# format
Created a Live Upgrade configuration:
# lucreate -c solaris_env_1 -n solaris_env_2 -m /:/dev/dsk/c0t0d0s4:ufs
Verified the successful creation using
# lustatus
# lucurr

Downloaded any available patches for this system
# smpatch download
Install the downloaded patches in the alternative boot environment
# smpatch update -b solaris_env_2
Reboot the system in the recommended manner
# init 6

What Did Not Work

No matter how many times I retried to reboot the system (in full accordance with the instructions in the documentation), the system simply refused to boot from the new/alternative boot environment. Each time, the lustatus command showed that both boot environment were correctly configured and that the alternative environment (solaris_env_2) was scheduled to boot at the next reboot. However, it never did boot from the alternative environment.
Apparently, when the patch process completes successfully (or whenever you use the luactivate command), the system should automatically update the boot-device EEPROM environment variable (see eeprom command from Solaris).

Workaround

I found that the only way around this problem was to manually adjust the boot-device environment variable from the system console each time you need to boot an alternative boot environment. This was done (from the system console) as follows:

Shut down the system
# init 0
Determine the appropriate setting for the boot-device variable
ok setenv auto-boot? false
ok reset-all
ok probe-scsi-all
ok show-disks

Using the output from the above commands, determine a new value for the boot-device variable. For example:
ok setenv boot-device /pci@7c0/pci@0/pci@8/scsi@2/disk@0,0:a
Verify that the system still boots from the old/existing environment
ok boot
If so, you should now be able to drop back to the boot prompt and set the boot-device variable to a new value in accordance to the Live Upgrade partition you created earlier (in my case, c0t0d0s4 or disk@0,0:e)
ok setenv boot-device /pci@7c0/pci@0/pci@8/scsi@2/disk@0,0:e
Also, you might like to return auto-boot setting to its normal value before booting the system again
ok setenv auto-boot? true
ok boot

Best of luck!


9 thoughts on “Solaris Live Upgrade on SunFire T1000/T2000 servers”

  1. I’ve seen this problem too — there is no way to get luactivate to work. I have a ticket open with Sun — did you do the same?

  2. Do you have a support contract? If not, I’m not sure what the best way is — I will mention this link to them at least, however.

  3. Just to follow up, Sun support says that luuactivate will not work if in eeprom diag-switch?=true, which my system had. I haven’t tried booting the machine yet (not allowed), but at least they have pointed to a solution.

  4. Ryan,

    I finally managed to get around to testing this today and I’m delighted to report that it worked a treat. Here is what I did:

    # lustatus (this shows solaris_env_1 as active)
    # eeprom diag-switch?=false
    # luactivate solaris_env_2
    # init 6
    Wait for system to reboot and log in
    # lustatus (this shows solaris_env_2 as active)

    You must change the diag-switch setting before you use the luactivate command.

    I also found another article which includes the above eeprom command before an luactivate command although it doesn’t make any specific reference to it.
    Thank you for your input.

  5. I hadn’t tried it the other way, since I did the eeprom command immediately and didn’t boot for awhile after. Does seem to have cured the problem.

    Glad I could help!

  6. Thanks so much! Between this and the cpio bug in zones I have been going nuts this week. All better now!

  7. Damian,

    Thanks for your positive feedback, it’s always good to know you’re not alone!

    Can you post some details about the cpio bug in zones that you refer to? I’d be interested in finding out more about this as we use zones quite a bit here.

Leave a Reply