Solaris 9 branded zones
Solaris zones are great for handling all those dev and test environments that seem to breed like cockroaches. The problem recently has been that lots of these environments have been on old sun4u architecture machines (which were cheap), whereas they should be on shiny new sun4v architecture machines (which are great for this sort of work).
Enter branded zones. Unlike a normal zone, which installs from the global zone, a branded zone uses a flar (Solaris flash archive) to install a different Solaris OE. In this case I’m going to go through setting up a Solaris 9 sun4u branded zone on a Solaris 10 sun4v T2000.
First of all, we need to apply a quick kernel patch to Solaris 10. Currently I’ve got:
bash-3.00# cat /etc/release Solaris 10 8/07 s10s_u4wos_12b SPARC Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms. Assembled 16 August 2007
For branded zones for this OE, we need to apply kernel patch 127111-01 at a minimum. Once that’s in place, it’s over to Sun’s website to download the branded zones support files.
There are two different packages – one to support Solaris 8 branded zones, and one for Solaris 9. Head on over to http://www.sun.com/software/solaris/containers/ and download the one you need.
Once you uncompress the TAR file, there’ll be a README, which explains minimum patch levels, and which version of the branded zones package you need to install. For Solaris 9 on the 8/07 release of Solaris 10, I need to install version 1.0 of the Solaris 9 containers.
Installation is pretty simple:
bash-3.00# cd /var/tmp/s9containers-bundle/1.0/Product/ bash-3.00# pkgadd -d `pwd` SUNWs9brandr SUNWs9brandu SUNWs9brandk
pkgadd will go away and do it’s thing – answer ‘yes’ to all the questions, and in a couple of minutes the packages are in place. And that’s it – you’re done! Time to install those branded zones.
Zone configuration is pretty standard, except we need to tell Solaris we’re installing a specific branded zone:
bash-3.00# zonecfg -z test-zone test-zone: No such zone configured Use 'create' to begin configuring a new zone. zonecfg:test-zone> create -b zonecfg:test-zone> set brand=solaris9 zonecfg:test-zone> set autoboot=false zonecfg:test-zone> set zonepath=/export/zones/test-zone zonecfg:test-zone> add net zonecfg:test-zone:net> set physical=e1000g1 zonecfg:test-zone:net> set address=192.168.13.251 zonecfg:test-zone:net> end zonecfg:test-zone> verify zonecfg:test-zone> info zonename: test-zone zonepath: /export/zones/test-zone brand: solaris9 autoboot: false bootargs: pool: limitpriv: scheduling-class: ip-type: shared net: address: 192.168.13.251 physical: e1000g1 zonecfg:test-zone> verify zonecfg:test-zone> commit zonecfg:test-zone> exit
Note that the only real difference during zone configuration is branding the zone. Normally we wouldn’t specify the brand, and it would default to ‘native’.
Once the zone is configured, we need to install it. As we’re installing a branded zone, we can’t take the Solaris files from the global zone, so we need to use a flar as our boot image.
The process is very straightforward – we just supply the path to the flar as an argument to our zone install command:
bash-3.00# zoneadm -z test-zone install -u -a /mnt/flars/sun4u_sol_9_Generic_118558-11.flar Log File: /var/tmp/test-zone.install.4436.log Source: /mnt/flars/sun4u_sol_9_Generic_118558-11.flar Installing: This may take several minutes... Postprocessing: This may take several minutes... Result: Installation completed successfully. Log File: /export/zones/test-zone/root/var/log/test-zone.install.4436.log
And we’re done. Now just boot the zone and carry out the initial configuration as per normal.
Finally, a quick check to show off our sun4v architecture machine running a Solaris 9 sun4u branded zone:
bash-3.00# uname -m sun4v bash-3.00# cat /etc/release Solaris 10 8/07 s10s_u4wos_12b SPARC Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms. Assembled 16 August 2007 bash-3.00# zoneadm list -cv ID NAME STATUS PATH BRAND IP 0 global running / native shared 5 test-zone running /export/zones/test-zone solaris9 shared bash-3.00# uname -a SunOS sunt2k-test 5.10 Generic_127111-01 sun4v sparc SUNW,Sun-Fire-T200