Pages

Tuesday, February 27, 2018

Steps to Upgrade from Solaris 11.3 to 11.4 Beta

Recently I updated one of our lab systems running Solaris 11.3 SRU 16 to Solaris 11.4 beta. Just wanted to share my experience along with the steps I ran and the outputs/stdout/stderr messages that I captured. I followed Updating Your Operating System to Oracle Solaris 11.4 document in Solaris 11.4 documentation library and the instructions worked flawlessly without a hitch.

My target system has one non-global zone running, and it took a little over one hour to complete the upgrade from start to finish. I recommend setting at least couple of hours aside for this upgrade as various factors such as the current Solaris 11.3 SRU, number of non-global zones running, and how Solaris 11.4 Beta packages are being accessed have a direct impact on the overall time it takes to complete the upgrade exercise.

Step 1: Prepare the System for Upgrade

Oracle recommends that the target system is at least at Solaris 11.3 SRU 23 level for the upgrade to succeed so the first step is to make sure that the system is running Solaris 11.3 SRU 23 or later.

eg.,
# pkg info entire | grep -i branch
           Branch: 0.175.3.16.0.3.0

The above output indicates that my lab system is running Solaris 11.3 SRU 16 - so, I have no choice but to upgrade 11.3 SRU first. Those with systems already at 11.3 SRU 23 or later can skip to Step 2: Get access to Solaris 11.4 Beta packages.

Following listing indicates that existing/configured publishers allow me to upgrade 11.3 to the latest SRU (which is 29).

# pkg list -af entire@0.5.11-0.175.3
NAME (PUBLISHER)             VERSION                    IFO
entire (solaris)             0.5.11-0.175.3.29.0.5.0    ---
entire (solaris)             0.5.11-0.175.3.28.0.4.0    ---
...

An attempt to update my system to the latest SRU met with a failure.

# pkg update --be-name s11.3.sru29 pkg:/entire@0.5.11-0.175.3.29.0.5.0
            Packages to remove:  37
           Packages to install:  12
            Packages to update: 510
       Create boot environment: Yes
Create backup boot environment:  No

Planning linked: 0/1 done; 1 working: zone:some-ngz
Linked progress: /pkg: update failed (linked image exception(s)):

A 'sync-linked' operation failed for child 'zone:some-ngz' with an 
unexpected return value of 1 and generated the following output:

pkg sync-linked: One or more client key and certificate files have 
expired. Please update the configuration for the publishers or origins 
listed below:

Publisher: solarisstudio
  Origin URI:
    https://pkg.oracle.com/solarisstudio/release/
    ...

Root cause of this failure is that a seperate repo for Solaris Studio has been configured in the non-global zone. Fixed it by removing associated publisher from the non-global zone.

root@some-ngz:~# pkg publisher
PUBLISHER                   TYPE     STATUS P LOCATION
solaris        (syspub)     origin   online T 
solarisstudio  (syspub)     origin   online T 
solarisstudio  (syspub)     origin   online F https://pkg.oracle.com/solarisstudio/release/

root@some-ngz:~# pkg set-publisher -G https://pkg.oracle.com/solarisstudio/release/ solarisstudio

SRU update has no problem afterward.

# pkg update --be-name s11.3.sru29 pkg:/entire@0.5.11-0.175.3.29.0.5.0
            Packages to remove:  37
           Packages to install:  12
            Packages to update: 510
       Create boot environment: Yes
Create backup boot environment:  No

Planning linked: 0/1 done; 1 working: zone:some-ngz
Linked image 'zone:some-ngz' output:
|  Packages to remove:  25
| Packages to install:  12
|  Packages to update: 237
|  Services to change:   9
`
...
Updating image state                            Done
Creating fast lookup database                   Done
Executing linked: 0/1 done; 1 working: zone:some-ngz
Executing linked: 1/1 done
Updating package cache                           3/3

A clone of s11.3.sru.16.3.0 exists and has been updated and activated.
On the next boot the Boot Environment s11.3.sru29 will be
mounted on '/'.  Reboot when ready to switch to this updated BE.

Now that the system was upgraded to 11.3 SRU 29, it is time to boot the new boot environment (BE) in preparation for a subsequent upgrade to 11.4 beta.

# beadm list | grep sru29
s11.3.sru29        R     -          98.05G  static 2018-02-26 17:13

# shutdown -y -g 30 -i6

# pkg info entire | grep -i branch
           Branch: 0.175.3.29.0.5.0

Step 2: Get access to Solaris 11.4 Beta packages

Unless the target system has no connectivity to the public pkg.oracle.com repo, probably the simplest way is to use the public package repository that was set up by Oracle to support 11.4 beta. If the preference is to have a local repository for any reason (say no exernal connectivity, control what gets installed for example), download the Solaris 11.4 Beta package repository file and follow the instructions in README to set up the beta repository locally.

Rest of this section shows the steps involved in getting access to the public repository.

  • Sign-in to Oracle Certificate Request site using your My Oracle Account support credentials

  • Under REPOSITORIES tab, find Oracle Solaris 11.4 Beta and click on "Request Access" button

    • Review the Early Adopter License Agreement and accept the license

  • Navigate to the Certificate Information page

  • Download Key & Certification by clicking on respective buttons. These files are needed while adding the public beta repository to the Solaris publisher.

  • Add pkg.oracle.com/solaris/beta location to the solaris publisher configuration on target system using the personal key and certification that were downloaded in previous step

    # pkg set-publisher -c /var/tmp/pkg.oracle.com.certificate.pem \
      -k /var/tmp/pkg.oracle.com.key.pem -G "*" \
      -g https://pkg.oracle.com/solaris/beta solaris
    
    # pkg publisher | egrep 'PUBLISHER|beta'
    PUBLISHER      TYPE     STATUS P LOCATION
    solaris        origin   online F https://pkg.oracle.com/solaris/beta/
    

    There should be no unrelated mirrors set up. Check by running:

    pkg publisher solaris | grep Mirror
    

    If the above command returns one or more mirrors, remove those mirrors by running:

    pkg set-publisher -M http://<mirrored-site> -M http://<mirrored-site> [...] solaris
    

    Verify that the beta repository location is configured.

    # pkg publisher solaris
    
                Publisher: solaris
                    Alias:
               Origin URI: https://pkg.oracle.com/solaris/beta/
                   ...
          Catalog Updated: Wed Jan 24 14:09:16 2018
                  Enabled: Yes
    

    And confirm that the system can access Solaris 11.4 beta packages.

    # pkg list -af entire@latest
    NAME (PUBLISHER)            VERSION                    IFO
    entire (solaris)            11.4-11.4.0.0.0.12.1       ---
    

    To list all packages supplied by this publisher, run pkg list -a 'pkg://solaris/*'.

    eg.,
    # pkg list -a 'pkg://solaris/*'
    NAME (PUBLISHER)                     VERSION                    IFO
    OSOLvpanels-hypervisor (solaris)     0.5.11-0.151               --o
    ...
    SUNWDTraceToolkit (solaris)          0.5.11-0.144               --r
    SUNWGlib (solaris)                   1.2.10-0.169               --o
    ...
    SUNWPython (solaris)                 2.4.6-0.175.0.0.0.0.0      --o
    SUNWPython-extra (solaris)           0.5.11-0.175.0.0.0.0.0     --o
    ...
    

Step 3: Perform the Upgrade

Optionally perform a dry run update to check if there are any issues.

pkg update -nv

Finally perform the actual update to Solaris 11.4. This is the most time consuming step in this whole exercise.

# pkg update --accept --be-name 11.4.0 --ignore-missing \
  --reject system/input-method/ibus/anthy \
  --reject system/input-method/ibus/pinyin \
  --reject system/input-method/ibus/sunpinyin \
  --reject system/input-method/library/m17n/contrib entire@latest
            ...
            Packages to remove: 190
           Packages to install: 304
            Packages to update: 716
           Mediators to change:   8
       Create boot environment: Yes
Create backup boot environment:  No
           ...

Reboot the system to boot the new 11.4 boot environment and check the OS version.

# uname -v
11.3

# beadm list | grep R
11.4.0             R     -          113.20G static 2018-02-26 20:10

# shutdown -y -g 30 -i6

# uname -v
11.4.0.12.0

# pkg info entire | grep Version
          Version: 11.4 (Oracle Solaris 11.4.0.0.0.12.1)

No comments:

Post a Comment