Great. I knew about the problem, but couldn't find the way to fix, PXE spec
being a bit patchy.
On Wed, 11 Dec 2002, Matthew Stapleton wrote:
> Hi all,
> I just fixed the problem where trying to boot dos by chaining from PXE to
> EtherBoot to dos crashes the system in EtherBoot 5.0.8. Also, on my system
> once PXE had loaded EtherBoot, going to local boot to load dos would crash
> during dos loading as well.
>
> In version 2.1 of the PXE Specification, in the UNDI_STARTUP service
> description, it says that 'PXENV_UNDI_STARTUP and PXENV_UNDI_SHUTDOWN are no
> longer responsible for chaining interrupt 1Ah. This must be done by the
> PXENV_START_UNDI and PXENV_STOP_UNDI calls.' Since loader.S only uses
> PXENV_UNDI_SHUTDOWN and PXENV_UNLOAD_STACK, the interrupt doesn't get
> unhooked. If dos or EtherBoot or any other images load over the PXE
> interrupt handler, then when int 1Ah gets called, the system will crash.
Yes, this is indeed the problem. Well spotted in the PXE spec as well. The
first implementation wasn't releasing part of the UNDI memory of PXE to get
round this, but then DOS apps were running out of memory.
> The way I fixed this was to add a call to PXENV_STOP_UNDI. Other ways to
This sounds the right way.
> fix this would be to relocate EtherBoot code to other areas or not release
> the PXE memory to the system.
Could do, but see above. Still if any part of PXE refuses to unload, the
memory shouldn't be released...
> How should I submit the changes to the code or has this problem already been
> fixed?
>
> I also rewrote the hex to ascii routines that display the amount of free
> memory in the PXE loader. The current routines don't seem to work properly.
The idea here was debugging, but the pretier the better as long it doesn't
much memory and fits within the memory model.
> I tested this fix with EtherBoot 5.0.7 and EtherBoot 5.0.8.
> The network card used is an Intel EtherExpress PRO/100+ Management Adapter
> using the eepro100 driver.
> The versions of dos tested were Windows 98 SE MS-DOS and FreeDOS Kernel
> 2.0.27.
> Both doses crashed before the fix. Now they work!!! :)
Great. If you like reading the PXE spec, maybe you can do Etherboot on top of
PXE's UNDI without using an Etherboot's native network driver :). This, of
course, is an option in addition to using the native driver.
Vasil
|