In order to netboot
, you will need the following:
The last of these is generally the sticking point. Due to the nature of PC hardware
, the BIOS
generally has very little idea about how to interact with most of the stuff that's plugged into it (this is unsurprising, given the wide variety of hardware available). Network cards do not provide any sort of generic interface
to the BIOS, and therefore either the BIOS must know how to drive the specific card (this is true in some systems with on-board network cards) or the card itself must do something. Boot ROMs plug into the network card and contain code that initiates a netboot.
Modern Boot ROMs generally support Intel's PXE standard. The card will send out bootp or dhcp requests and receive an answer, and then TFTP a file. This file will then be executed - if it contains the right magic, this can be used to boot the system. Pxeboot (http://syslinux.zytor.com/pxe.php) is an example of this - it's a modified version of the syslinux bootloader that can run within a PXE environment and download kernels via TFTP. This allows you to stick PXEboot on your TFTP server and hand it to the client when it asks for a file. PXEboot then runs and downloads its configuration file, then uses the contents of that to obtain a kernel and boot it. Once the kernel is booted it can mount an NFS filesystem and run.
In order to make your own BootROMs, take a look at http://www.nilo.org which allows you to produce a boot ROM for just about any network card.