PXE boot FreeBSD iso from pxelinux server

I'm using FOG as a TFTP / PXE server and would like to be able to boot a FreeBSD LiveCD (specifically pfSense, but it could be any LiveCD, really); I've found HOWTOs for booting a "netboot" BSD but they all seem to use a BSD server. So:

  • Is it possible to PXE boot BSD from a Linux server?
  • Is it possible to PXE boot a BSD LiveCD?
  • Is it possible to PXE boot a Linux LiveCD?

My main motivation is to be able to boot small LiveCD images (e.g. < 100MB) that I may only use once and don't want to burn a physical CD for.


Solution 1:

I don't know FOG, but it should work just fine if the image can boot from NFS (which is probably going to be the sticking point for the rolled releases like pfSense). You should be able to follow the basic instructions in the handbook and get it working.

I'd also consider just running a virtual machine to test these things out. QEmu runs great on fBSD.

Edit: If you're familiar with the parts, here's a Quick and Dirty FreeBSD PXEBoot Guide.
If you're not so familiar, then the Handbook's Diskless Operation section is more of a walk through.

A brief overview of the steps:
You set your computer to PXE boot from it's network card. This is usually a bios option.
Set DHCP Options on your DHCP server to tell PXE where to find FreeBSD's loader (pxeboot).
The DHCP Options also tell the Loader where to find the root file system (an NFS share).
The loader mounts the NFS Root File System, finds the Kernel, and boots normally from there.
(Note, the kernel needs to support booting from an NFS share, which is not normally compiled in)

Solution 2:

Two years later, generic instructions for booting PXE booting ISOs from FOG exist:

  • Include any ISO in the FOG Bootmenu
  • How to: Modify the PXE boot menu to allow the booting of .iso files

The MEMDISK wiki also has instructions for booting ISOs; I've successfully used the ISOHYBRID technique to load PartedMagic (i.e. load it as a disk image), but the ISO technique should be applicable to e.g. FreeBSD also.