Skip to content. | Skip to navigation

Personal tools


You are here: Home / Wiki / NInstall / Ops-Emusoft.Html


Installing the Emulab Operations Server

Emulab Installation Documentation

Installing the Emulab Operations Server

  • Prev

    Installing FreeBSD on ops

  • Next

    Installing FreeBSD on boss

  • Home

Installing Emulab software

Step 1 - Installing packages

To make sure that you're running with versions of software from the ports collection that are known to work with our software, and to save you hours of compile time, we provide pre-built binary packages of the ports required by Emulab.

If you haven't already, download the Emulab Server Package (you can use the FreeBSD 'fetch' command to download the file.)

Unpack this someplace (you need about 550MB of space, so don't use /tmp unless it is large enough). Let's say you unpacked it to /var/tmp. You would then run:

# force install of pkg
env ASSUME_ALWAYS_YES=true pkg info

# install base 'ops' applications
pkg add /var/tmp/packages/emulab-ops-6.3.txz

Of course, if you unpacked it somewhere else, put in the correct path.

We provide all of the binary packages necessary to build fs/ops/boss in our packages tarball. It is a pretty bare-bones set of ports; in particular, it does not include any text editor other than 'ed'. To get 'emacs' and 'vim' and a few other useful applications, you can install the emulab-extras package:

# install useful applications
pkg add /var/tmp/packages/emulab-extras-6.3.txz

After installing these packages from the pre-built collection, you should check for updates from the 'Emulab' packages repository. To do this, you will first need to create a description of the repository. Create /etc/pkg/Emulab.conf with the contents:

Emulab: {
  url: "",
  mirror_type: NONE,
  enabled: yes

Now you can synchronize using:

# mark all current packages as coming from the Emulab repo
pkg annotate -ay -A repository Emulab

# check for updates to all installed packages
pkg upgrade

Please do not update any of the Emulab-installed packages other than from the Emulab repository. Otherwise you risk descending into "dependency hell"; for example, by loading some newer application package which in turn might update some shared library versions which in turn might cause other applications to stop working because they require older versions of the libraries.

In theory, you can add more packages later, either in binary form or by building from ports. Be aware that if you use binary packages loaded from the standard (presumably newer) FreeBSD repository, "dependency hell" is always just one wrong step away. Should you want to build from ports, please download the 'approved' ports collection that we have tested with and which corresponds to the binary packages we build. The package is about 66MB; it unpacks to 900MB. Unpack it to a place such as /usr/ports (if it exists, rename the old directory to ports.old, or just remove it), and install whichever ports you want to make fs feel like 'home'.

Step 2 - Unpacking and running 'configure'

At this point, you should already have made your definitions file. If not, refer to Creating the Definitions File. You will use this same file on boss, ops, and fs. You should also have the the Emulab source tree available.

Download the Emulab source tree from the emulab-devel git repository and then run its configure script, providing the path of your definitions file:

git clone git:// /usr/testbed/src/testbed
mkdir -p /usr/testbed/obj/testbed
cd /usr/testbed/obj/testbed
/usr/testbed/src/testbed/configure --with-TBDEFS=/path/to/your/defs-file

Typically, you would store your defs file in the source tree along with the other defs files that came in the package.

Step 3 - Running the ops installation script

In the object tree you've configured (say, /usr/testbed/obj/testbed), there's an 'install' subdirectory with a script called 'emulab-install'. Just run this script as root (note the same package directory argument as above):

cd install
perl emulab-install -p /var/tmp/packages ops

This will take care of installing any additional ports, and doing various other configuration of FreeBSD required to make it into an ops node. The script is designed so that you can run it as many times as you want, and it will skip steps that it's already done. If it fails, send the output to Utah so that we can fix it up. If it succeeds, follow any other instructions it may have. The script will tell you to reboot the machine, but you may wait until after the next step to do so, if you want.

(You may have to set the executable bit on this script, since configure won't; we'd like to get this fixed at some point.)

You should be aware that, among other things, this script sets up sendmail, and sets up password-less 'sudo' for anyone in the 'wheel' group. If you don't want these for security reasons, you can undo them after the installation script has completed.

Step 4 - Installing Emulab software from source

To install the actual testbed software, simply run the following from your object directory (i.e. /usr/testbed/obj/testbed):

gmake ops-install



If you're logged in as root, /usr/local/bin, where gmake resides on FreeBSD, may not be in your path. If not, include the full path to gmake in the above command.

Step 6 - Setting up mailing lists

The emulab-install script set up some mailing lists for the email addresses you defined in the definitions file. These are located in /etc/mail/lists. If you want to run these mailing lists off your ops node, you can put some people in them now. These are just standard sendmail list files: a list of addresses and/or archive files, one per line. If you chose to use archive files, give a path to the file you'd like sendmail to stick all correspondence in, and create this file.

If you haven't done so already, reboot ops now before proceeding.

  • Prev

    Installing FreeBSD on ops

  • Next

    Installing FreeBSD on boss

  • Home