Skip to content. | Skip to navigation

Personal tools


You are here: Home / Wiki / Kb287


Emulab FAQ: Setting Up a New Emulab: The node boot process (also known as PXE booting)

Emulab FAQ: Setting Up a New Emulab: The node boot process (also known as PXE booting)

As told by Mike, edited by Leigh.

The PXE ROM on the motherboard or NIC DHCPs and then downloads (via TFTP) the indicated (in dhcpd.conf on boss) boot program. For Emulab that program is a modified version of the FreeBSD boot loader known as "pxeboot" (source is in This bootloader uses the BIOS for all its IO, it does not contain any device drivers of its own. Anyway, pxeboot contacts boss via the Utah- created "bootinfo" protocol (a simple ASCII UDP exchange) to find out what OS the node should boot.

If told to boot from a partition on disk, pxeboot loads the first sector of the indicated partition into memory (just like an MBR-based boot block would), brings the machine back down into "real mode", and then jumps to the loaded code.

If told to boot either the "admin" or "frisbee" MFS, pxeboot uses TFTP to download a filesystem image into memory ("the MFS") and then downloads a kernel and boots it. The directory from which the MFS and kernel are downloaded is either /tftpboot/freebsd or /tftpboot/frisbee.

Lastly, if a node is booting for the first time, or otherwise not known to the testbed, it will be told to boot the "newnode" MFS. The newnode MFS is very similar to the admin MFS, but automatically launches a perl script that will contact the webserver on boss, running a web script (see www/newnodecheckin.php). The arguments to the web script is a description of the new node, including the interfaces, cpu speed, disk size, etc. It is after this point that a node will appear in the Add Testbed Nodes webpage (via the admininstration menu).

More details about adding new nodes can be found in the setup documentation in the doc directory. Look at setup-nodes.txt