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:
- Maintaining a cluster of equally configured workstations
- A low-cost X-terminal
- A low cost user platform where remote partitions are mounted by
NFS and you are willing to accept the slowness of data transfers
that results from NFS, compared to a local disk.
- Various kinds of remote servers, e.g. a tape drive server that
can be accessed with the RMT protocol.
- Routers.
- Machines doing tasks in environments unfriendly to disks.
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
- A bootstrap loader, usually in an EPROM on a NIC card, but
could be put anywhere in the address space the BIOS probes in. For
testing this could be put on a floppy disk. Some booting setups may
even be always run from a floppy disk (e.g. temporary setups for
testing or pedagogic purposes).
- A bootp or DHCP server, for handing out IP addresses 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.
- A NFS server, for providing the disk partitions that will be
mounted if Linux is being booted.
- A Linux kernel that has been configured to mount the root
partition via NFS.
- Optionally, compiled-in support for mounting a swap partition
via NFS. This feature is not in the stock 2.[01].x Linux kernels; you
have to apply the contributed patches for NFS swap.
- Development version: Etherboot 4.1pre9 in tar.gz format, also in tar.bz2 format has been
released. Please try it out. Please report successes and problems here.
- Stable version: By HTTP: from http://www.slug.org.au/etherboot/etherboot-4.0.tar.gz
or http://www.slug.org.au/etherboot/etherboot-4.0.tar.bz2
- Patch to make a PnP compatible boot ROM instead
of a "legacy" ROM by Alex Harin
- Patch to allow it to boot Windows95 from disk
after answering N to the boot prompt, by Doug Ambrisko
- Patch for eepro100b cards by Andrew
Coulthurst against 4.0pre8 but should work for 4.0 also.
- Australian residents only: obtaining
an EPROM.
- Previous version: from
http://www.slug.org.au/etherboot/etherboot-3.2.tar.gz
- Rogier Wolff of BitWizard (http://www.BitWizard.nl) has
persuaded his client AW Computer Systems to contribute the Intel
EtherExpress Pro driver to the Etherboot collection. BitWizard is
also sponsoring this driver. Thanks guys! Here is a patch file for 3.1 until the
code in the 3.2 version is fully tested.
- Here are some patches by
William A. Arbaugh to make the Intel EtherExpress Pro driver work
with 3.2. The fixes will be incorporated in the next version.
- There are reports that new versions of objdump don't support
the -k flag needed to dump binaries. I found that ld can generate
the binary image directly, so objdump is not needed. This will be
fixed in the next Etherboot release. To fix 3.2, do this in the
src-32 directory: Edit Config and append "-oformat binary -s" to
LDFLAGS. Edit Makefile and remove lines with $(OBJDUMP) ... and any
preceding $(SIZE) ... lines. Now look at the suffix of the file
required after the ld step, which will be either .tmp or .bin
depending on whether lzhuf is run next or not and change the .out
in the $(LD) line to match.
- Jean Marc
Lacroix provided the source code
for a filter that translates from binary image format to Intel's
HEX format. You need this tool, if the software that came with your
EPROM burner does not support raw image files.
- A tiny non-spooling printer daemon for Linux hosts. Particularly
diskless ones. Here's the source.
- Even older version 3.1
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:
- Improve the documentation. Send me the changes if you feel something
is missing.
- Try different variations on configurations and
software. Send me the documentation or a link to your
Web page when you have succeeded, of course. Here is a list of things
that have been suggested if you want some ideas.
- Spread the word about netbooting wherever you see a situation which
could use the technique.
- Write articles about your experiences with applications of netbooting
for conferences, journals or e-zines.
- Contribute any related software which can be put into contrib/.
- Write drivers for more cards.
- Offer to make EPROMs for people needing them.
NILO
is the successor project to Etherboot.
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.
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.
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), Lance based cards (such as the NE2100,
NI6510 and PCI versions), the NI5210, the Crystal Semiconductor
CS89X0, the Intel Etherexpress Pro, the SMC 83c170 EPIC100, and the
SMC9000. 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 1998-03-18