Clientsideinstall
Installing the Emulab Client Software
The Emulab client software consists of two parts;
- Emulab's Publish Subscribe (PubSub) system, and
- Emulab's client side scripts and programs.
This document will explain how to update (or install) this software. We assume that you working on an existing Emulab image (say, a STD image from Utah's web site, or one that is running on your Emulab), or a brand new image that you are constructing from scratch, as described in the Client Side Stuff page.
Note that we strongly urge you NOT to build your own image from scratch, but start with an existing image from Utah. This process is just too much of a pain in the ass and too complicated to describe completely, and you will pull less of your hair out by starting with an existing image.
Starting from Scratch
If decide to ignore the warning above, then start on the Client Side Stuff page and then come back when you are done.
Installing/Updating PubSub
Emulab's PubSub system is the heart of the event system and is required for the client side. Note that PubSub is already installed on your boss and ops and is used extensively within the experiment swap process. It is used on images to control event agents such as the program agent, traffic generators, etc. More info on the client agents can be found in the Advanced Tutorial and the Event System Reference.
First grab the latest source package from Utah:
mypc> fetch http://www.emulab.net/downloads/pubsub-0.99.tar.gz
Then unpack and install:
mypc> tar zxf pubsub-0.99.tar.gz mypc> cd pubsub-0.99 mypc> ./configure mypc> sudo gmake install-client
Installing/Updating the Emulab client side
The Emulab client side code is contained in the clientside subdirectory of your Emulab source code. If you do not have a clientside directory, you are running from a very old system and you will need to update your Emulab to emulab-stable.
First, copy to your node, either your entire Emulab source tree or just the clientside subdirectory. If you choose to copy just the clientside directory, also copy over your defs file since you will need that when running configure. Then create an object directory, you do not want to build the clientside in the source directory. For example:
git clone git://git-public.flux.utah.edu/emulab-devel.git
cd emulab-devel
git submodule init
git submodule update
mypc> mkdir /some/object/directory mypc> cd /some/object/directory mypc> /your/src/directory/configure --with-TBDEFS=/your/defs/file mypc> gmake mypc> sudo gmake client-install
At this point you will want to take a snapshot of your image and test it. If you are updating an existing image, you are mostly likely doing this within the context of an Emulab experiment. Go to the image descriptor page, and use the 'Create an Image Descriptor' option. This will create a new image file in the /proj directory, in a subdir of whatever project the image is attached to (typically this is emulab-ops). Once the image descriptor is made navigate to the Image Descriptor page and use the 'Snapshot Node Disk into Image' option.
OLD INFO boss> cd /usr/testbed/images
boss> sudo mv foo.ndz foo.ndz.old
boss> sudo scp ops:/proj/emulab-ops/images/foo.ndz .
sudo /usr/testbed/sbin/imagerelease emulab-ops,foo
Now create a new experiment and swap it in. If it works, you are done; go get a beer to celebrate your success.
If on the other hand, you are building the image from scratch, you will need to follow the instructions on the Image Import page.