Skip to content. | Skip to navigation

Personal tools


You are here: Home / Wiki / Clientsideinstall


Installing the Emulab Client Software

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

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://
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.