Skip to content. | Skip to navigation

Personal tools


You are here: Home / Wiki / Subboss-Install




Subbosses (or sub-bosses) are regular testbed nodes that have been configured to provide some of the boot-time services (DHCP, TFTP, Frisbee) for a subset of the nodes in your testbed. This reduces the load placed on boss, potentially eliminating dropped DHCP/TFTP requests or slow Frisbee transfers. You may have as many subbosses as you want, and each one may be configured to provide any or all of the three services as necessary. All other services (e.g. tmcd) are still provided by boss.

Allocating a subboss

Reserve the nodes you want to be subbosses to the subbossnodes experiment

wap sched_reserve emulab-ops subbossnodes

If the node is currently allocated to an experiment, you will need to free it:

nfree $current_project $current_experiment pc999

Change the node's role from 'node' to 'subboss' with this database query:

update reserved set erole = 'subboss' where node_id = 'pc999';

Creating a subboss disk image

If you do not already have an image for subbosses, you'll need to create one. If you do have one already, load it onto your subboss and skip to the next section.

Start by loading an existing image onto your subboss:

os_load -i FBSD82-STD pc999

Then, update the client-side software on your subboss as described on the ClientSideInstall page, except use the subboss-install target instead of the client-install target. After this has finished, create an image of your subboss node as described in the Custom OS Images part of the Tutorial. This image can be used for any subbosses you may add in the future.


Once the subboss image has been loaded, you'll need to do the following on the subboss before it will work properly. First, use the mkextrafs script to create the scratch filesystem for tftpboot files and disk images:

sudo /usr/local/etc/emulab/mkextrafs /z

Now, remove any existing /tftpboot directory, create /z/tftpboot, and symlink /tftpboot to it:

rm -rf /tftpboot
mkdir /z/tftpboot
ln -sf /z/tftpboot /tftpboot

Then, create the image_cache directory for frisbee disk images:

mkdir /z/image_cache

Assigning nodes to subbosses

Currently, a subboss may be configured to provide DHCP, TFTP or Frisbee services to a given node. The subbosses table in the database contains the mappings from node to subboss and service. There is currently no way to configure these mappings via the web interface, so you will need to add them by hand.

For example, to specify that pc888 should use pc999 for all three services, you will need to run the following SQL queries:

insert into subbosses values ('pc888', 'dhcp', 'pc999');
insert into subbosses values ('pc888', 'tftp', 'pc999');
insert into subbosses values ('pc888', 'frisbee', 'pc999');

If any of your subbosses will be providing DHCP services, you will need to run "/usr/testbed/sbin/dhcpd_makeconf -i -r". This will update the dhcpd configuration on boss and all subbosses. You generally only need to run this directly if you've modified the dhcpd config file by hand or you're adding a new DHCP subboss.

If any of your subbosses will be providing TFTP services, you will need to ensure that the contents of their /tftpboot directories are the same as that on boss. To do that, run /usr/testbed/sbin/subboss_sync on boss whenever you change something in boss's tftpboot or you add a new subboss to your testbed. This will use rsync to ensure that the subbosses have the same files as boss.