Next Previous Contents

2. Introduction to Etherboot

2.1 What is Etherboot?

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 can also be booted from floppies (mainly for testing purposes but some people have been known to use this all the time) and hard disk, as a LILO/SYSLINUX compatible image, or from a hard disk partition.

Etherboot requires the PC architecture, it does not work for other Linux platforms such as Alphas or Suns. Typically the computer is diskless and the code is Linux or FreeBSD, but these are not the only possibilities. The code uses the bootp, tftp and NFS Internet Protocols, among others.

For a somewhat out of date talk/tutorial type introduction to what Etherboot does and how to set it up, see my SLUG talk. You may wish to review this before reading further.

2.2 Legal status of the code

Etherboot is Open Source under the GNU General Public License Version 2 (GPL2). The license conditions can be obtained from the file COPYING in the top directory of the distribution or viewed at www.gnu.org. In particular note that if you are distributing binaries generated from Etherboot, such as ROMs or ROM images, you must provide or promise to provide the user with the source. If you have not made private changes to the code, you can do this by pointing the user to the Etherboot home page, noting the release version of course. If you have made private changes to the code, then you must distribute those changes too with binary distributions.

The GPL applies to the whole package but portions may be used under other licenses. See the section on source copyrights for details, file by file. Please support Open Source by joining the community and sharing. See the Etherboot home page for some ways you can help Etherboot.

No Warranty or Support: Etherboot comes with NO warranties of any kind. It is hoped that it will be useful to you, but NO responsibility is accepted for any outcome of using it. Etherboot also comes with NO support, although you may get helpful advice from the mailing lists listed on the Etherboot home page.

2.3 What hardware is supported?

The following is the current NIC configuration file as of 2001-05-04.

Even if your NIC does not appear in the list, it may still be supported if the chip is one of those supported. Many OEMs use chips from foundries. An exhaustive list of brand names is impossible. The best strategy is to read the number on the LAN controller chip on the board.


# This is the config file for creating Makefile rules for Etherboot ROMs
#
# To make a ROM for a supported NIC add a line of the form
#
# ROM           Driver-name     PCI-IDs
#
# ROM is the desired output name for both .rom and .lzrom images.
# Driver name is the driver it uses (can be omitted if the same as ROM).
# PCI IDs are the PCI vendor and device IDs of the PCI NIC
#   (leave blank for ISA NICs).
#
# All PCI ROMs that share a single driver are only built once (because they
# only have different PCI-IDs, but identical code).  ISA ROMS are built for
# each ROM type, because different vendors used a different logic around the
# basic chip.  The most popular example is the NS8390, which some cards use
# in PIO mode, some in DMA mode.  Two chips currently don't fit into this nice
# black-and-white scheme (the Lance and the NS8390).  Their driver deals
# with both PCI and ISA cards.  These drivers will be treated similarly to
# ISA only drivers by genrules.pl and are compiled for each ROM type that is
# ISA, and additionally compiled for the PCI card type.
#
# Then do: make clean, make Roms and make
#
# Please send additions to this file to <ken_yap@users.sourceforge.net>
#
# 3c59x cards (Vortex) and 3c900 cards
# If your 3c900 NIC detects but fails to work, e.g. no link light, with
# the 3c905 driver, try using the 3c595 driver. I have one report that the
# 3c595 driver handles these NICs properly. (The 595 driver uses the
# programmed I/O mode of operation, whereas the 90x driver uses the bus
# mastering mode. These NICs are capable of either mode.) When it comes to
# making a ROM, as usual, you must choose the correct image, the one that
# contains the same PCI IDs as your NIC.
3c590           3c595           0x10b7,0x5900
3c595           3c595           0x10b7,0x5950
3c595-1         3c595           0x10b7,0x5951
3c595-2         3c595           0x10b7,0x5952
3c900-tpo       3c595           0x10b7,0x9000
3c900-t4        3c595           0x10b7,0x9001
3c900b-tpo      3c595           0x10b7,0x9004
3c900b-combo    3c595           0x10b7,0x9005
3c900b-tpb2     3c595           0x10b7,0x9006
3c900b-fl       3c595           0x10b7,0x900a
# 3C90x cards device IDs
# Original 90x revisions:
#   0x9000 : 10 Base TPO
#   0x9001 : 10/100 T4
#   0x9050 : 10/100 TPO
#   0x9051 : 10 Base Combo
# Newer 90xB revisions:
#   0x9004 : 10 Base TPO
#   0x9005 : 10 Base Combo
#   0x9006 : 10 Base TP and Base2
#   0x900A : 10 Base FL
#   0x9055 : 10/100 TPO
#   0x9056 : 10/100 T4
#   0x905A : 10 Base FX
# Newer 90xC revision:
#   0x9200 : 10/100 TPO (3C905C-TXM)
3c905-tpo       3c90x           0x10b7,0x9000
3c905-t4        3c90x           0x10b7,0x9001
3c905-tpo100    3c90x           0x10b7,0x9050
3c905-combo     3c90x           0x10b7,0x9051
3c905b-tpo      3c90x           0x10b7,0x9004
3c905b-combo    3c90x           0x10b7,0x9005
3c905b-tpb2     3c90x           0x10b7,0x9006
3c905b-fl       3c90x           0x10b7,0x900a
3c905b-tpo100   3c90x           0x10b7,0x9055
3c905b-t4       3c90x           0x10b7,0x9056
3c905b-fx       3c90x           0x10b7,0x905a
3c905c-tpo      3c90x           0x10b7,0x9200
# Intel Etherexpress Pro/100
eepro100        eepro100        0x8086,0x1229
82559er         eepro100        0x8086,0x1209
id1029          eepro100        0x8086,0x1029
id1030          eepro100        0x8086,0x1030
82562em         eepro100        0x8086,0x2449
# Lance PCI PCNet/32
lancepci        lance           0x1022,0x2000
pcnetfastiii    lance           0x1022,0x2625
# AMD HomePNA
amdhomepna      lance           0x1022,0x2001
# Novell NE2100 (Lance based, also works on NE1500)
ne2100          lance
# Racal-Interlan NI6510 (Lance based)
ni6510          lance
# Base driver for Tulip clones
tulip           tulip           0x1011,0x0002
dc21040         tulip           0x1011,0x0002
# Tulip+
dc21041         tulip           0x1011,0x0014
ds21140         tulip           0x1011,0x0009
ds21140a        tulip           0x1011,0x0009
# Tulip 21142
ds21142         tulip           0x1011,0x0019
ds21143         tulip           0x1011,0x0019
# Netgear FA310TX and similar Tulip clones
82c168          tulip           0x11ad,0x0002
kne110tx        tulip           0x11ad,0x0002
# Linksys LNE100TX and other NICs Tulip clones
lc82c115        tulip           0x11ad,0xc115
# Macronix 987x5 Tulip clones
mx98713         tulip           0x10d9,0x0512
mx98715         tulip           0x10d9,0x0531
mx98725         tulip           0x10d9,0x0531
# Another Macronix clone?
mxic-98715      tulip           0x1113,0x1217
# ADMtek Centaur-P, found on stmicro NIC by Ranjan Parthasarathy
an981           tulip           0x1317,0x0981
# ADMtek Centaur-P Tulip clones
centaur-p       tulip           0x1317,0x0985
centaur-c       tulip           0x1317,0x1985
# ASIX AX88140
ax88140         tulip           0x125b,0x1400
ax88141         tulip           0x125b,0x1400
# Davicom, but using the Tulip driver
dm9100          tulip           0x1282,0x9100
dm9102          tulip           0x1282,0x9102
# Intel Tulip
intel21145      tulip           0x8086,0x0039
# Compex RL100-TX
rl100tx         tulip           0x11f6,0x9881
xircomtulip     tulip           0x115d,0x0003
# Davicom DM9102
davicom9102     davicom         0x1282,0x9102
davicom9009     davicom         0x1282,0x9009
# Old base driver for Tulip, not much use now
otulip          otulip          0x1011,0x0002
# Realtek 8139
rtl8139         rtl8139         0x10ec,0x8139
# SMC1211 (uses Realtek 8139 but with different IDs)
smc1211         rtl8139         0x1112,0x1211
# D-Link DFE530TX+ (from mailing list posting)
dfe530tx+       rtl8139         0x1186,0x1300
# Rhine-I, e.g. D-Link DFE-530TX
dlink-530tx-old via-rhine       0x1106,0x3043
dlink-530tx     via-rhine       0x1106,0x3065
# Rhine-II
via-rhine-old   via-rhine       0x1106,0x6100
via-rhine       via-rhine       0x1106,0x3065
# Winbond W89c840
winbond840      w89c840         0x1050,0x0840
# Compex RL100-ATX
compexrl100atx  w89c840         0x11f6,0x2011
# SIS 900 and SIS 7016
sis900          sis900          0x1039,0x0900
sis7016         sis900          0x1039,0x7016
# A few NE2000 PCI clones, list not exhaustive
# RealTek 8029
rtl8029         ns8390          0x10ec,0x8029
# Winbond 86C940
winbond940      ns8390          0x1050,0x0940
# Compex RL2000
compexrl2000    ns8390          0x11f6,0x1401
# KTI ET32P2
ktiet32p2       ns8390          0x8e2e,0x3000
# NetVin 5000SC
nv5000sc        ns8390          0x4a14,0x5000
# WD8003/8013, SMC8216/8416
wd              ns8390
# NE1000/2000 and clones (ISA)
ne              ns8390
# 3Com503, aka Etherlink II, also /16 model
3c503           ns8390
# SMC 83c170 EPIC/100
epic100         epic100         0x10b8,0x0005
# 3c509, ISA/EISA
3c509
# 3c529 == MCA 3c509
3c529           3c509
# Intel Etherexpress Pro/10 (ISA card)
eepro           eepro
# Crystal Semiconductor CS89x0
cs89x0
# Digital DE100 and DE200
depca           depca
# 3Com507 (i82586 based)
3c507           i82586
# Racal-Interlan NI5210
ni5210          i82586
# Exos 205 (i82586 based)
exos205         i82586
# Racal-Interlan NI5010
ni5010          ni5010
# Schneider and Koch G16
sk_g16
# SMC9000
smc9000
# Tiara, Fujitsu Lancard
tiara

All Etherboot drivers are autoprobing, which means they attempt to detect the hardware addresses at which the card is installed. It's fairly easy to write a driver if you know C and are familiar with Ethernet hardware interfacing. Please read the developer manual if you wish to do so.

2.4 Getting help

Please join the Etherboot mailing lists. These are listed on the Etherboot home page. There is a users mailing list and a developers mailing list. The users list is for issues with building and running the software, while the developers list is for issues with features and coding.

Please post questions to the Etherboot mailing lists instead of mailing me because: you get the benefit of a lot of experts seeing your question (no, I don't know everything, if only because there are many configurations I have never used); a lot of people see the question and answer and this helps them too. You will usually not get any reply from me if you email questions to me directly. I want to make the best use of my time and that is by making sure that as many people as possible see the questions and answers. Note that I will post my replies to the mailing lists so to see the answers you should subscribe, or be willing to check the archives later.

Other lists you can join are the Netboot mailing list (joining details on Etherboot home page), and the Linux Terminal Server Project mailing lists at LTSP. The Etherboot and Netboot lists are for general netbooting issues, while LTSP is focused more on the LTSP packages. However there is a fair amount of overlap between the lists and many key people are on all lists.

Note that the Netboot mailing list is spam protected. If your ISP has been slack security-wise and had a machine of theirs get onto one of the Open Relay Blacklists, then you will not be allowed to post. The only things I can suggest are to change your ISP to a more responsible one, or to get a Web based mailbox. I cannot help you with problems here as I do not administer the Netboot mailing list.


Next Previous Contents