Etherboot 5.5
Michael Brown <[email protected]>
| Newsgroups | gmane.network.etherboot.devel |
|---|---|
| Message-ID | <[email protected]> |
Etherboot 5.5 is now open in CVS. This represents the early stages of a
significant restructuring and improvement of the Etherboot codebase.
New features that are already in place include:
An improved build system:
Changing configuration options no longer requires rebuilding the
entire Etherboot code tree.
All code is compiled. Only the objects we want are linked in. This
reduces #ifdef spaghetti while keeping binary sizes small. See
http://www.etherboot.org/api/ifdef_harmful.html for details.
Standardised debugging. To enable debugging of a particular component
(e.g. the PCI bus), simply append DEBUG=pci to the command line, e.g.
"make bin/rtl8139.dsk DEBUG=pci"
Link maps. Append ".map" to a build target (e.g. "make
bin/rtl8139.dsk.map" to get a listing of all objects, symbols, etc. in
the resulting object.
Link consistency guarantees. Run "make symcheck" to get a report on
unused and undefined symbols etc. If "make symcheck" reports no
errors, then any build of Etherboot (with any custom options) will
compile and link successfully. "make symcheck" will also warn about
objects that seem to be wasting space with large static objects.
A single linker script and a single-stage link process.
Arbitrary alignment (via __attribute__((aligned(x))) is supported and
will be honoured by the relocation code.
Adding new features (e.g. new drivers, new download protocols, new
console types) requires *no* changes to the core code, or to files
such as "Families". Just drop in the .c file and it will work.
The all-drivers image has been reduced in size by about 52%, simply by
sharing buffer space between drivers.
Support for a much wider range of buses. We now support PCI, ISAPnP,
EISA, MCA and ISA as individual buses, rather than pretending that
everything is either PCI or plain old ISA. ISAPnP code works for cards
other than the 3c515.
A concept of "errno", allowing for proper PXE status codes and more
user-friendly error messages.
A new real-mode call interface (again!).
The ability to operate completely in 16-bit real mode, never switching
to protected mode. This is necessary in order to comply fully with the
PXE "specification". This is controlled by a compile-time option
-DKEEP_IT_REAL; off by default.
A DNS resolver that works. A NetBIOS Name Service resolver that works,
since the code is almost identical to the DNS code.
Automatically-generated internal API documentation via doxygen. See
http://www.etherboot.org/api/files.html
Of course, none of this comes for free. The following features are
currently broken:
All architectures except for i386. If anyone wants to donate ia64,
armnommu, or e1 hardware to me, then I can do something about this
myself.
The decompressor (and, therefore, compressed images).
Any prefix other than .dsk.
Any device that isn't a NIC.
The UNDI driver.
The PXE stack.
All image formats except .nbi.
To forestall the inevitable questions: yes, it was worth breaking all
this. The internal architecture of Etherboot had become far too
convoluted, and was in dire need of being torn apart and reassembled.
Michael
-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click