Etherboot

What is Etherboot

Etherboot is a free software package for booting x86 PCs over a network. In principle this could be any network technology that TCP/IP runs on that supports broadcasting. In practice, the bandwidth required means it's only practical over LANs and some WANs. Etherboot is useful for booting PCs diskless. This is desirable in various situations, for example: Normally Etherboot is used to load Linux 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

Documentation

Distribution

Contributing to Etherboot

Etherboot is a volunteer project done in my spare time. Several kind people have contributed in many ways, see the acknowledgement list. You can help in various ways:

News

NILO is the successor project to Etherboot.

Mailing list

There is a mailing list for all network booting issues. Send mail to majordomo@baghira.han.de with the one line in the body: subscribe netboot. Or you may try clicking here. Newer browsers will automatically fill in the mail for you and you only have to click on Send. If not, then type in the words subscribe netboot yourself.

Other links

Netboot is another package for booting PCs diskless. Some of the software provided in the Etherboot package actually come from Netboot. Netboot is maintained by Gero Kuhlmann.

A HOWTO on turning older PCs into X-Terminals

A collection of jumper settings for old network cards

P.K. Wong's HOWTO for booting Windows 95 diskless

Linux Remote-Boot mini-HOWTO: Configuring Remote-Boot Workstations with Red-Hat Linux, DOS, Windows 3.1 and Windows 95 talks about booting from a commercial boot ROM product but a lot of the information is useful to Etherboot and Netboot also.

InCom make commercial TCP/IP boot ROMs.

Netaudio is a neat way of redirecting audio to another computer on the network, especially a diskless X-terminal.

Booting the Bull Netstation

Serving SSH sessions shows how to configure a (possibly diskless) Linux host so that users can directly ssh to a remote hosts from the login prompt.

History of Etherboot

In Linux circles Netboot appeared first. According to the docs Jamie Honan was the person who coded up the first version and specified the format of the tagged image files. This version used assembler code taken from packet drivers to interface to the hardware, only Western Digital (now SMC) NICs in the first instance. It also required a DOS environment to compile. Later on Gero Kuhlmann took over the development of Netboot and made tremendous improvements to it. Among other things he created a harness that would simulate just enough of a DOS environment so that unmodified packet driver binaries could be used in a boot ROM. This allows any NIC on the market that has a packet driver to be used immediately. He also migrated the development to a Linux (Unix) platform.

Etherboot was ported from FreeBSD by Markus Gutschke. He made it compile under Linux and added code to support tagged images in addition to NFS boot. Since tagged images are a more general mechanism and requires less boot rom code, this has become the preferred loading method. Markus has also coded most of the additional features between 2.0 and 3.0, such as additional bootp tags, ANSI screen escapes, etc.

Ken Yap came to Etherboot a bit later. His original objective was to produce a 16 bit version that could be used to netboot ELKS and other OSes on older CPUs. He has done much of the structural rearrangement of the Etherboot code.

Netboot and Etherboot have their strengths and weaknesses. Netboot supports a wider range of NICs because packet drivers are available for most cards. On the down side, Netboot is not autoprobing because the packet drivers require that the I/O address, IRQ and possibly the memory address be specified at ROM creation time. Thus a ROM is specific to a particular card configuration. Netboot ROM images are larger and would need a NIC that will accept large ROMs, or some arrangement to put the ROM code somewhere else in the memory address space. There is a design for a FlashROM card that's included with Netboot if you are handy with hardware. Etherboot has a smaller footprint and the compressed versions will fit in 8 kB which all NICs support, as far as I know. Thus it will have a better chance of fitting in a NIC's boot ROM socket. However NIC support is limited to NE2000s/NE1000s (and PCI versions), some Western Digital/SMD cards (80x3, 8216, 8416), a few 3Com cards (3c503, 3c507, 3c509, 3c905b), Lance based cards (such as the NE2100, NI6510 and PCI versions), the NI5210, the Schneider and Koch G16, the Crystal Semiconductor CS89X0, the Intel Etherexpress Pro, the SMC 83c170 EPIC100, the SMC9000, and the Realtek 8139. Then again, the NE2000 and clones are probably the most widely used NICs in the world. Also Etherboot will autoprobe so the same ROM can be used in all configurations of a NIC. The support utilities are pretty much common to both distributions. So take your pick.

If your card is not supported by Etherboot, there might be a packet driver for it and you can use Netboot. But maybe you want an Etherboot driver. The possibility of creating new drivers depends very much on access to NICs and the hardware documentation for them. Unfortunately, writing a hardware driver is many times harder than writing an ordinary program. First the hardware specifications must be digested, then a testbench with the NIC must be set up. If the program crashes, there are no debugging tools so it's often back to printf statements. Notwithstanding that, if anybody would like a driver written and you can contribute a card and documentation, contact Markus Gutschke or Ken Yap and we will see what we can do.


Comments to Ken Yap.

Last modified 1999-05-01