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.