Skip to content. | Skip to navigation

Personal tools

Navigation

You are here: Home / Wiki / Tftpbootsetup

Tftpbootsetup

1. DESCRIPTION:

These are the files/directories needed for PXE booting.


2. CONTENTS:

README
	This file

freebsd/
	kernel/MFS for a PXE-booted memory based FreeBSD system.
	We use this MFS for creating disk images and general maintenance
	tasks on a node (e.g., when the node's disk is scrogged).  The
	MFS contains a pretty small set of utilities.

frisbee/
	kernel/MFS for a PXE-booted memory based FreeBSD system.
	This MFS is considerably smaller than the "freebsd" one.  It is
	used to reload node disks with frisbee.  Since it may be loaded
	simultaneously by many nodes to reload their disks, we wanted
	this to be as small as possible.  Not intended as an interactive
	environment, its rc.local script invokes frisbee and then reboots.

freebsd.newnode/
	kernel/MFS for a PXE-booted memory based FreeBSD system.
	A specialized version of the frisbee MFS for loading on nodes
	which are not yet part of Emulab.

pxeboot
	The standard PXE-booted startup.  Loaded by every node whenever
	they reboot.  It is a specialized, stripped-down version of the
	FreeBSD boot loader.

pxeboot.freebsd
pxeboot.frisbee
pxeboot.newnode
	Programs downloaded by PXE in order to bootstrap the various
	MFSes.  These are not variants of "pxeboot" above but are each
	just versions of the standard FreeBSD pxeboot with a path changed
	to reflect the appropriate "root" directory.


3. INSTALLATION:

If you are reading this file, then I guess you have succeeded in unpacking
the tarball.  Hopefully, you have unpacked it into /tftpboot.  If not, go
do that now, I'll wait...

...ok.  Things will work with what you have just unpacked, but to make them
more efficient, you should go into the various */boot directories and run the
prepare script there.  All this script does is create gzip'ed version of the
various files that are needed to bootstrap the MFS-based system.  This will
speed up the boot process considerably:

	foreach d in (freebsd frisbee freebsd.newnode)
	(cd $d/boot ; sudo ./prepare)
	end


4. MODIFYING AN MFS:

If you want to see what is in one of the MFSes or otherwise customize it,
you simply mount the MFS as a filesystem.  This takes two steps in BSD:
associating a "virtual disk" with the file and then mounting that disk,
e.g. as root:

	vnconfig vn0 /tftpboot/frisbee/boot/mfsroot
	mount /dev/vn0c /mnt

When you are done, just unmount the filesystem and rerun the prepare
script:

	umount /dev/vn0c
	cd /tftpboot/frisbee/boot; ./prepare

If you aren't going to do any more mods for a while, then you can
unconfigure the disk as well:

	vnconfig -u vn0

though this isn't necessary in order for your changes to make it into
the MFS that is downloaded (it *is* essential that you rerun the prepare
script above or else the node will continue to download mfsroot.gz instead
of your updated mfsroot).

Note that you may have to create vnode-disk devices in /dev:

	cd /dev; ./MAKEDEV vn0 vn1


5. INSTALLING A NEW KERNEL:

The kernel which drives the MFS-based system is not part of the MFS itself.
So to install a new kernel, you do not have to do the MFS nonsense above.
You just have to stick your kernel into /tftpboot/blah-blah/boot, ala:

	cp kernel /tftpboot/frisbee/boot
	cd /tftpboot/frisbee/boot; ./prepare

Again, it is important to rerun prepare.