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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.