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 software for a cluster of equally configured workstations
centrally.
- 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.[02].x Linux kernels; you
have to apply the contributed patches for NFS swap.
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, 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