Etherboot 5.0.7

In 5.0.7, if the server IP is all zeros, or the filename is null unless
DEFAULT_BOOTFILE is defined, the DHCP offer will be ignored. This will
ignore many Windows DHCP servers. If you depend on the fallback filename
of /tftpboot/kernel, you can edit etherboot.h.

If you can't get a SMC EtherEZ to work on a hybrid PCI/ISA system due to
inability to map shared memory, you might want to try the -DWD_790_PIO
compile option, which makes the NE driver use PIO instead.

E820 memory sizing support has been added by Eric Biederman. LinuxBIOS
compatibility is much better now, with major changes submitted by Eric.

Christopher Li has written the first Gigabit Ethernet driver, e1000.

A couple more variants of existing NICs supported, i.e. the SiS900,
SiS630ET and the Tulip.

Holtek HT80232 has been added to the list of NE2000 PCI clones.

Gate A20 enabling and disabling may work better with modern BIOSes now.

There is support for FreeBSD booting using a PXE style secondary loader.

Please, please, take care with the XCVR options for the 3c90x. They
affect operation with Linux drivers later.

If you find that your PnP BIOS does not recognise the ROM image (not
floppy image) as a PnP BIOS extension, it could be that it's not fully
compliant with the BIOS Boot Specification. Try defining
-DBBS_BUT_NOT_PNP_COMPLIANT.

The rotating bar progress display has been replaced by a sequence of
dots, one for each transmitted packet. This is kinder to dumb displays,
e.g. serial terminals, and gives a better feel for how the loading is
going. If you want the rotating bar, use -DBAR_PROGRESS.

PCI ID 0x9805 (3C980), and PCI ID 0x7646 which is listed as 3CSOHO100-TX
in Linux kernel 3c59x.c, have been added to the list of NICs.

The option FLOPPY is now called CAN_BOOT_DISK which describes it better,
as it also controls fallback HD booting.

There is a new option POWERSAVE which halts the CPU to save power while
waiting for user input. But it may not work for all CPUs, so it's
optional.

There is a check in the Makefile for gcc 2.96, because it has been
reported that RH 7.[01]'s gcc ("gcc 2.96") generates buggy code when
compiling Etherboot. You can disable the check and use at your own risk,
see the Makefile.  If you must compile on RH 7.[01], I recommend kgcc.
When I say work, I mean work in general; some people have reported
success with gcc 2.96, if you're one, good for you but if you get
strange behaviour, give kgcc a try.

loader.S has had the .fill changed to an .org which may or may not help
people having trouble assembling it, getting an internal inconsistency
error from the assembler.

Developers note! Printf formats have changed to be a subset of C formats
to reduce confusion. In short (X -> X, x -> hX, b -> hhX, I -> @ and a
new one, !, for printing Ethernet addresses). Lowercase versions of X
are also available as is the optional #. See misc.c for a full
description. Also now there is no internal buffer on output to stdout so
you can use printf to display large buffers, etc. without fear of
exceeding any buffer limit.

PXE loadable images can be generated, just say make bin32/nic.pxe or
make bin32/nic.lzpxe where nic is the name of the NIC. This allows you
to chain from PXE to Etherboot. Details in 5.0.2 documentation. Some
setup of the DHCP server is required, at the moment the finer details
are in mailing list postings in the archive, but hopefully will be
documented soon.

This release contains patches to make images that can be run under
LinuxBIOS. To make an image, edit Config to enable the EBI options (and
disable TAGGED_IMAGE), then make bin32/driver.ebi, where driver is the
name of a supported PCI NIC.

The file diskless-windows-howto.html formerly under
contrib/Diskless-From-NT is now maintained at the LTSP site
(www.ltsp.org).

There is a driver for NICs based on the National Semiconductor DP83815
now. Netgear FA311/312 are two that are DP83815 based.

The 3c90x driver has been verified to work with the 3c980.

5.0.2 compiles with gcc 3.0 and works for the couple of NICs that I have
been able to test. Please report any problems with gcc 3.0. Make sure
that gcc 3.0 is the problem by trying a gcc 2.9.5 compiled version
before sending in a bug report.

binutils 2.11 appears to work fine on 5.0.2.

The documentation is now distributed separately. This is to make it
easier to do parallel development of production and development
releases.

tftp-hpa and atftp which were in contrib are now distributed separately
from the distribution page. This makes it easier to track releases in
those utilities.

mknbi is now distributed separately from Etherboot to allow independent
development.

Relocation of Etherboot to 0x84000 works now which may be useful to
those booting from Disk-On-Chip (I have not tested it with DOC, only
from floppy) or similar device which takes over locations in the 0x9xxxx
band.  You will also need to specify --relocseg=0x8000 to mknbi (version
1.2-1 and greater) when building the boot image. Also if your DOC
occupies 0x90000-0x901FF, you need to use kernels 2.4 or higher, which
use setup protocol 0x0202 or greater and do not need to relocate the
boot block to 0x90000 when running setup.S.

Etherboot should make PnP ROMs properly now. 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 may
want 00 00 02 due to an ambiguity in the original specification.

You need gas 2.9.5 or later to be able to assemble loader.S and
boot1a.s.

If you are booting kernel 2.2.18 or later, or 2.4.5 or later, you MUST
specify ip=dhcp (or bootp or one of the other options, see kernel
Documentation/nfsroot.txt) to mknbi-linux or in the DHCP options if you
want the kernel to do IP autoconfiguration, even though you have
included the option in your kernel build. The alternative is to use
ip=rom and then the kernel will use values passed down by Etherboot.
For me at least, kernel IP autoconfiguration is instant and any concerns
about it slowing down the booting are misplaced.
