[olug] OT: annoying bios!

Will Langford unfies at gmail.com
Mon Sep 22 15:00:01 UTC 2008


There's no solution to this, just a random ranting.  Might prove to be an
interesting read.

So... where I work, we toil with embedded systems all day.  I've written
most of the drivers, API's, etc that are used on these systems.  They're
Geode-233/266mhz systems with between 16 and 256MB of RAM and either compact
flash or disk on chip storage.  There's also a slew of uarts, gpio lines,
non volatile ram, etc etc etc.
We've been working on this same cpu/chipset combination for probably around
9 years or so... damn did this platform have a pair of legs.  While not
overly useful as a desktop, it's been great for what we've needed.  Three
years ago we started doing ethernet networking with them.  And that's been
pretty straight forward as well.  About 2.5 years ago the system builder and
I started using PXE heavily for the non-embedded board stuff.... servers
we'd put in the field, workstations in house... etc.  Bios updates,
ghosting, that kind of thing.

In the back of our heads was the fact that one day we'd wanna attempt PXE
booting the embedded board (we install upwards of hundreds of these on
location with each server) in an attempt to solve some problems, etc.
 *Always* wanted to to do this since we started PXE'ing in house stuff.
 Long ago, I grabbed an etherboot boot floppy and PXE'd off that.. worked
like a charm.

Eyeballing our BIOS, I couldn't find any free space to attempt to stick an
expansion ROM into it to fire up PXE-from-BIOS.  And that was that.

Lately, I've been building isolated vmware systems for the express purpose
of an isolated clean build environment.  This way development tools don't
collide, etc.  We have our BIOS source, but it's 199x based stuff.  Wants
dos/win95 with borland c++ / tasm or msc / masm (not msvc, msc!).  So... I
get the vmware session up and start fiddling with the BIOS source.

VIOLA! I can build our BIOS.  Prior to this, it was a matter of fighting
with the boss who had the master BIOS source buried on some legacy machine
etc etc etc.  It's basically the last bastion of source I didn't have access
to.

I shrink the amount of space used by our BIOS by half.  I grab realtek's
RPL/pxe code binary for throwing into BIOS/bios-extension-rom's... use a
linux box to concatenate the final BIOS image together and burn it to an
eeprom.  Fire it up and:

PXE-E06 - DDIM required

:(.  Look it up, it's apparently an extension to the PNP sec.  Something
about shadowing the extension to ram, setting it's area read/write, running
it, then setting it back to readonly or freeing some shit up.  I try
altering the extension scan/execute loop in the BIOS to clear the read only
flags in BIOS shadow stuff... but... still no luck :(.  Etherboot's no
better.

A quick grep of our BIOS source shows NO mention of PNP anywhere.

DAMNITALLTOHELL!

3 years of desperately wanting to do this ... finally getting the ability to
build the BIOS from source... and I get cockblocked from an outdated BIOS
:(.  There is a very slight chance that I'll be able to take the expansion
scan/execute loop ... and have it manually shadow the ROM to RAM -- just to
make sure the scan/execute isn't working over ROM instead of shadow'd areas
(which the BIOS does support shadowing, and yes, was told to do so).  Given
the entire lack of PNP -- I imagine this isn't going to help :(.  Lastly,
our BIOS supports booting from a DOS ROM disk... which I've got 32K of space
in the BIOS that I *might* be able to squeeze something into.

Lastly, our boards do support booting from a 512K eeprom (see the 32k thing
above) -- but I was really wanting to take every extra piece of hardware out
of the picture :(.

MOFO!

Dream crushed ruthless in its entirety -- unless I manage to dig up a
realtek PXE BIOS extension that isn't PNP based :(

-Will



More information about the OLUG mailing list