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.