Re: Etherboot 5.5

Timothy Legge <[email protected]>
Newsgroups gmane.network.etherboot.devel
Message-ID <[email protected]>
Michael Brown wrote:

> 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.

Very good, the sheer number of configurations was mind boggling.

>     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"

This is very nice, it was one of the things I have been thinking of for 
some time.  I was thinking of it at the nic driver level but you have 
considerable expanded the scope.

>     Arbitrary alignment (via __attribute__((aligned(x))) is supported and 
>     will be honoured by the relocation code.

Cool, I see you fixed the r8169...

>     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.

Very nice, addind drivers and protocols was aleardy easy, this is 
incredible. ;-)

>   The all-drivers image has been reduced in size by about 52%, simply by 
>   sharing buffer space between drivers.

Great!

>   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.

Very good.  The ISAPnP was always a hack.  I was suprised when I learned 
it worked for other people as it was all about me and my 486 when I put 
it together.

>   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.

I understand that this is one of the more difficult parts of the PXE 
spec.  Doesn't it contradict some other requirement in the spec (not 
that that s unusual?

>   Automatically-generated internal API documentation via doxygen.  See
>   http://www.etherboot.org/api/files.html

I browsed this a little today.  I am looking at using doxygen at work so 
this is timely.  I must brush up on what needs to be done and update 
some of the driver documentation.

Wow!!  You have been busy.  I browsed the cvs via the web and the sheer 
number of changes are amazing.  You must not have slept since Christmas.

> Of course, none of this comes for free.  The following features are 
> currently broken:

Not to worry, I am sure most of it will get fixed fairly quickly.

>   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.

I don't know if e1 even worked in 5.2.

> 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.

Such a huge amount of work does not come without issues.  Each of the 
last number of versions of Etherboot have broken a lot of things.  They 
get fixed...

BTW, do we need an updated compiler/build tools?  I received the 
following message from the first build I tried:

In file included from arch/i386/core/hooks.c:1:
arch/i386/include/registers.h:19: warning: declaration does not declare 
anything
arch/i386/include/registers.h:87: warning: declaration does not declare 
anything
arch/i386/include/registers.h:88: warning: declaration does not declare 
anything
In file included from include/etherboot.h:157,
                  from include/buffer.h:4,
                  from include/dev.h:6,
                  from include/main.h:4,
                  from arch/i386/core/hooks.c:2:
include/tftp.h:88: warning: "struct buffer" declared inside parameter list
include/tftp.h:88: warning: its scope is only this definition or 
declaration, which is probably not what you want
arch/i386/core/hooks.c: In function `arch_main':
arch/i386/core/hooks.c:20: error: structure has no member named `eax'
arch/i386/core/hooks.c:23: error: structure has no member named `eax'
make: *** [bin/hooks.o] Error 1

[tim@server src]$ gcc --v
Reading specs from /usr/lib/gcc/i386-redhat-linux/3.4.3/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man 
--infodir=/usr/share/info --enable-shared --enable-threads=posix 
--disable-checking --with-system-zlib --enable-__cxa_atexit 
--disable-libunwind-exceptions --enable-java-awt=gtk 
--host=i386-redhat-linux
Thread model: posix
gcc version 3.4.3 20050227 (Red Hat 3.4.3-22.fc3)

Regards

Tim


-------------------------------------------------------
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.