Installation / Setup of Zones
Create the filesystem for the zone
The first thing that I do is create a filesystem area for the new zone to reside in. I also mount it under a mount point named /zone/1 and I ensure that only the root user has access to it thus:
$ ls -lap /zone total 8 drwxr-xr-x 3 root other 512 Feb 26 12:42 ./ drwxr-xr-x 22 root root 512 Feb 26 12:42 ../ drwx------ 5 root root 512 Feb 26 13:27 1/
Setup the zone
We use zonecfg to create a new zone. Do this from the global zone and as the root user.
bash-2.05b# zonecfg -z zone1 zone1: No such zone configured Use 'create' to begin configuring a new zone. zonecfg:zone1> create zonecfg:zone1> set zonepath=/zone/1 zonecfg:zone1> set autoboot=true zonecfg:zone1> add net zonecfg:zone1:net> set address=192.168.35.210 zonecfg:zone1:net> set physical=hme1 zonecfg:zone1:net> end zonecfg:zone1> info zonepath: /zone/1 autoboot: true pool: inherit-pkg-dir: dir: /lib inherit-pkg-dir: dir: /platform inherit-pkg-dir: dir: /sbin inherit-pkg-dir: dir: /usr net: address: 192.168.35.210 physical: hme1 zonecfg:zone1> verify zonecfg:zone1> commit zonecfg:zone1> ^D
Simple really. The zonecfg tool is interactive and I specified that I want to “create” a zone. The filesystem that I created is the new “zonepath” and I want this new virtual server to boot along with the global zone when the “real” server boots. Who can tell what is “real” and what isn’t? It won’t matter anymore. I also set the ip address for the zone as well as the interface to bind to. Finally I asked for zonecfg to show me what I just did via the simple “info” command. I then used “verify” and “commit” to ensure that the config is complete. That is all. Nothing fancy.
Verify the zone setup
I then used zonecfg and zoneadm to verify that in fact what I had just done was in fact, er, well, done. Really I just like playing with new technology and so will you!
bash-2.05b# zonecfg -z zone1 info zonepath: /zone/1 autoboot: true pool: inherit-pkg-dir: dir: /lib inherit-pkg-dir: dir: /platform inherit-pkg-dir: dir: /sbin inherit-pkg-dir: dir: /usr net: address: 192.168.35.210 physical: hme1
bash-2.05b# zoneadm list -vc ID NAME STATUS PATH 0 global running / - zone1 configured /zone/1
Install the zone
The next step to perform is to “install” the zone.
bash-2.05b# zoneadm -z zone1 install Preparing to install zone <zone1>. Creating list of files to copy from the global zone. Copying <2521> files to the zone. Initializing zone product registry. Determining zone package initialization order. Preparing to initialize <808> packages on the zone. Initializing package <7> of <808>: percent complete: 0% . . < this goes on for some time > . Initialized <808> packages on zone. Successfully initialized zone <zone1>.
bash-2.05b# df -ak /zone/1 Filesystem kbytes used avail capacity Mounted on /dev/dsk/c0t1d0s0 1972734 76238 1797860 5% /zone/1
Verify the installation of the zone
Again I use zoneadm to see the results of my actions :
bash-2.05b# zoneadm list -vc ID NAME STATUS PATH 0 global running / - zone1 installed /zone/1
See that? The STATUS is now “installed”.
Boot the zone
Now lets boot that new virtual server that we created!
bash-2.05b# zoneadm -z zone1 boot bash-2.05b# zoneadm list -vc ID NAME STATUS PATH 0 global running / 2 zone1 running /zone/1
Ping the zone
I now have a virtual server running? Really? Let’s ping it :
bash-2.05b# ping 192.168.35.210 192.168.35.210 is alive
Working with Zones
- List all installed zones
root@airlock:/ # zoneadm list -vc ID NAME STATUS PATH 0 global running / 1 mgt running /zone/mgt 2 int running /zone/int 3 auth running /zone/auth 4 mgt_ext running /zone/mgt_ext 14 ext running /zone/ext root@airlock:/ #
- List all installed zones
root@airlock:/ # zoneadm list global mgt int auth mgt_ext ext root@airlock:/ #
Login to a zone
usage: zlogin [ -CES ] [ -e cmdchar ] [-l user] zonename [command [args ...] ]
root@airlock:/ # zlogin mgt [Connected to zone 'mgt' pts/1] Last login: Wed Dec 27 16:08:30 on pts/1 Sun Microsystems Inc. SunOS 5.10 Generic January 2005 root@air-mgt_mgt:/ # exit logout [Connection to zone 'mgt' pts/1 closed] root@airlock:/ #
Most of this guide was copied from: Get in the Zone
Another nice Article about Solaris Zones: Solaris 10 Zones document written by Brendan Gregg