Etherboot 5.0.11 There is a bug in the Perl supplied with RH9 (and possibly RH8). It assumes UTF-8 even with the use bytes pragma. Either get an updated Perl package or set LANG to en_US (without the .UTF-8 suffix). In 5.0.7 and above, 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.