I googled for "Cloning Solaris Zones" and found lots of documentation on the zoneadm clone feature. I started to follow the howtos and hit a brick wall... my zoneadm doesn't know how to clone. Deeper digging shows that the documentation on Sun's site was for Solaris Express- Sun's bleeding edge version of OpenSolaris- Can I say "How useless!"
I continued to google, after all I was very close I have the configuration and the filesystem, I just need to connect the two. I found the zoneadm attach/detach commands. This sounds perfect to me but alas my zoneadm doesn't support attach/detach. Apparently, this feature is only available from Solaris 11/06- Can someone tell me when Sun started releasing new OS versions every 6 months!
I had no intention of giving up and here is the process which evolved:
-
Setup the "Gold Master" zone including all the services, users, passwords, etc. (I'm assuming that your zonepath is a ZFS filesystem- this has it's pluses and minuses so don't take my word on it.)
-
Halt the Master zone and export the config file to your zone template file: > zoneadm -z master halt > zonecfg -z master export -f /root/template
-
It should look something like this: (edit with values for new zone) > create -b > set zonepath=/zfszones/zoneclone > set autoboot=true > set pool=work1-pool > add inherit-pkg-dir > set dir=/lib > end > add inherit-pkg-dir > set dir=/platform > end > add inherit-pkg-dir > set dir=/sbin > end > add inherit-pkg-dir > set dir=/usr > end > add net > set address=192.168.0.2 > set physical=bge0 > end > add rctl > set name=zone.cpu-shares > add value (priv=privileged,limit=10,action=none) > end
-
Configure a new zone using the new config file: > zonecfg -z zoneclone -f zoneclone.cfg
-
Create a ZFS snapshot of the master zone: > zfs snapshot zfspool/master@040207
-
Clone the ZFS snapshot > zfs clone zfspool/master@040207 zfspool/zoneclone
-
Mount the new ZFS filesystem at the correct zonepath > zfs setmountpoint=/zfszones/zoneclone/ zfspool/zoneclone
-
Change the zone state to "installed" - WARNING: I have no idea if this is a good idea but it seems to work. > vi /etc/zones/index > > Find a line that looks like: > zoneclone:configured:/zfszones/zoneclone:0000003c-ffbf-f825-ffbf-f80001000000 > > Replace it with: > zoneclone:installed:/zfszones/zoneclone:0000003c-ffbf-f825-ffbf-f80001000000
-
Boot the new zone: > zoneadm -z zoneclone boot