User manual

Etherboot User Manual
Note that because pinouts for 28 pin EPROMs are upward compatible after a fashion, you can probably
use a larger capacity EPROM in a slot intended for a smaller one. The higher address lines will probably
be held high so you will need to program the image in the upper half or upper quarter of the larger
EPROM, as the case may be. However you should double check the voltages on the pins armed with data
sheet and a meter because CMOS EPROMs don’t like floating pins.
If the ROM is larger than the size of the image, for example, a 32 kB ROM containing a 16 kB image,
then you can put the image in either half of the ROM. You will sometimes see advice to put two copies
of the image in the ROM. This will work but is not recommended because the ROM will be activated
twice if it’s a legacy ROM and may not work at all if it’s a PCI/PnP ROM. It is tolerated by Etherboot
because the code checks to see if it’s been activated already and the second activation will do nothing.
The recommended method is to fill the unused half with blank data. All ones data is recommended
because it is the natural state of the EPROM and involves less work for the PROM programmer. Here is a
Unix command line that will generate 16384 bytes of 0xFF and combine it with a 16 kB ROM into a 32
kB image for your PROM programmer.
(perl -e ’print "\xFF" x 16384’; cat bin/3c509.zrom) > 32kbimage
The speed of the EPROM needed depends on how it is connected to the computer bus. If the EPROM is
directly connected to the computer bus, as in the case of many cheap NE2000 clones, then you will
probably have to get an EPROM that is at least as fast as the ROMs used for the main BIOS. This is
typically 120-150 ns. Some network cards mediate access to the EPROM via circuitry and this may
insert wait states so that slower EPROMs can be used. Incidentally the slowness of the EPROM doesn’t
affect Etherboot execution speed much because Etherboot copies itself to RAM before executing.
If you have your own EPROM programming hardware, there is a nice collection of EPROM file format
conversion utilities here (http://srecord.sourceforge.net/index.html). The files produced by the Etherboot
build process are plain binary. A simple binary to Intel hex format converter can be found at the
Etherboot web site here (http://www.etherboot.org/bin2intelhex.c).
Etherboot is believed to make PnP compliant ROMs for PCI NICs. A long-standing bug in the headers
has been tracked down. However some faulty old BIOSes are out there so I have written a Perl script
swapdevids.pl to switch the header around if necessary. You’ll have to experiment with it both ways to
find out which works. Or you could dump a ROM image that works (e.g. RPL, PXE ROM) using the Perl
script disrom.pl. The fields to look at are Device (base, sub, interface) Type. It should be 02 00 00, but
some BIOSes want 00 00 02 due to ambiguity in the original specification.
8. Troubleshooting tips
Floppy boot doesn’t work. Is the floppy error-free? Have you copied the ROM image (with the disk
loader prepended) to the floppy raw? Is that size of floppy bootable by your computer? Are you trying
to run Etherboot on a 16 bit machine (286, 086/088)? Have you selected too many compile time
options? The real limit on Etherboot is not the size of the EPROM but the fact that it executes in the
48kB region between 0x94000 and 0xA0000. If the sum of code, stack and bss is greater than 48kB,
then Etherboot might crash at unexpected places.
12