Etherboot is a software package for creating ROM images that can download code over an Ethernet network to be executed on an x86 computer. Many network adapters have a socket where a ROM chip can be installed. Etherboot is code that can be put in such a ROM.
Etherboot is Open Source under the GNU General Public License Version 2 (GPL2).
Etherboot is normally used for for booting PCs diskless. This is useful in various situations, for example:
- An X-terminal.
- Clusters of compute servers.
- Various kinds of remote servers, e.g. a tape drive server that can be accessed with the RMT protocol.
- Machines doing tasks in environments unfriendly to disks.
- A user platform where remote partitions are mounted over the network and you are willing to accept the lower speed compared to disk.
- Maintaining software for a cluster of equally configured workstations centrally.
Etherboot can boot computers faster than from a disk because there are no delays in spinning up disks, etc. A moment’s calculation will show that even with a 10Mbit Ethernet, sending a 500kB kernel will take only a couple of seconds typically. With 100Mbit Ethernet it gets even better.
Compared to booting from solid-state devices, e.g. Flash disks, Etherboot has the advantage of centralising software adminstration, the tradeoff being the dependence on a server. This can be partly alleviated by providing redundant servers.
Etherboot can work with RAM disks, NFS filesystems, or even local disks, if desired. It’s a component technology and can be combined with other technologies to do things the way you want.
Etherboot is usually used to load Linux, FreeBSD or DOS. However the protocol and boot file formats are general, so there is no reason why it could not be used to load arbitrary images to a PC, including other OSes.
The components needed by Etherboot are
- A bootstrap loader, usually in an EPROM on a network card, or installed in the flash BIOS, but could be put anywhere in the address space the BIOS probes in. For testing this could be put on a floppy disk or a hard disk partition. Some configurations may even be always run from a floppy disk (e.g. temporary testing setups or pedagogic uses).
- A DHCP or bootp server, for returning an IP address and other information when sent a MAC (Ethernet card) address.
- A tftp server, for sending the kernel images and other files required in the boot process. Alternatively, Etherboot can boot from an NFS mount.
- A Linux or FreeBSD kernel.
- Optionally, a NFS server, for providing the disk partitions that will be mounted if Linux or FreeBSD is being booted.
- Optionally, a RAM disk contained in the loaded image. This can be the initial RAM disk if desired.
- Software tools for building the download image, and tools for debugging.