[syslinux] Updating BIOS with pxe syslinux memdisk & DOS problems

James Courtier-Dutton James at superbug.demon.co.uk
Fri Sep 12 11:06:42 PDT 2003


Alex Ninaber wrote:
> Hi all,
> 
> 
> We are hoping to update our BIOSes remotely with pxelinux and memdisk (it is
> for a 600 node Beowulf cluster with no floppy access). The DOS floppy loads
> and starts, however somehow the flash utility 'phlash.exe' or 'phlash16.exe'
> are both unable to load the provided rom image and just stop doing nothing.
> It looks like it can't access the rom image somehow, which is strange as it
> does acknowledge the fact it can find the image on the drive. Apparently
> some people have got this working with some motherboards (with I assume
> different flash utilities).
> 
> So the question is: Is this a problem with phlash.exe that is trying to read
> from a floppy that isn't there or is it a problem with memdisk?
> 
> If we can get this working it would be pretty good; far better than walking
> around with usb sticks or usb floppies.
> 
> Regards,
> 
> Alex Ninaber
> 
> 
> 
There are several reasons why phlash.exe might not be working correctly.
1) One reason might be the DOS version. DOS 6.22 might work, but WIN98 
DOS might not. WIN98 DOS handles result codes from DOS calls differently 
than DOS 6.22, and this might be confusing phlash.exe.

2) I have not looked at exactly how memdisk works, but I assume it tries 
to trick DOS into thinking there is an extra disk present.
Maybe this simulation is not perfect.
E.g. once I wrote a small program to hook the keyboard, so that if a 
certain combination of keys were hit, I could get certain jobs done. 
During the development of this program, I discovered that if I did not 
restore all the registers properly, strange things would happen. One 
example was, if I changed the SI register for any reason, any Microsoft 
program could not read the keyboard for anything, but any other Software 
worked fine.
So, maybe memdisk is not supporting the file/open/close api exactly as 
it should, and maybe corrupting a register or two. Normally this should 
not matter, because the DOS API informs us that the programmer should 
assume that no register's state is preserved during an INT21 call, but 
it just so happens, that with some normal DOS calls, some registers are 
preserved, so maybe the programmer got lazy, and did not save all the 
registers before a call as it worked fine with normal DOS, but of course 
might fail with memdisk.

This is all just theory, as I have not looked at the source code, but 
maybe worth considering.

Cheers
James




More information about the Syslinux mailing list