[syslinux] Conditional kernel selection based on CPUID/DMI info

Jeffrey Hutzelman jhutz at cmu.edu
Tue Jan 29 14:24:59 PST 2008


--On Tuesday, January 29, 2008 01:47:47 PM -0800 "H. Peter Anvin" 
<hpa at zytor.com> wrote:

> Jeffrey Hutzelman wrote:
>>
>> The second is bioschk.asm, which started out as a way to check for a
>> particularly annoying BIOS (Dell Optiplex GX620 version A11, on which
>> USB keyboard emulation breaks apparently on entering 32-bit protected
>> mode).
>> I decided early that it should be configurable, and ended up writing a
>> scripting language complete with branching, limited user input, and the
>> ability to boot things.  I've attached just the source, but there's also
>> a test suite.
>>
>
> I would be a lot happier putting this in C code (as a COM32 module),
> though.  I'm trying to reduce the size of the assembly core rather than
> have it grow.  I'd like to actually get rid of most of it over time.

So far, I've avoided any com32 modules.  Previous comboot modules I've done 
have been farily trivial and com32 seemed more effort than it was worth. 
That's clearly not the case here, and doing it in C would be quite a bit 
more maintainable, but it wouldn't have met my need -- the original purpose 
of the bioschk module was to detect a buggy BIOS that made user interaction 
from a com32 module impossible.  What actually happened was that I deployed 
new menus using menu.c32 instead of PXE's built-in menu capability, and our 
staff started complaining that they could no longer select anything from 
the menu!

The bug is not in SYSLINUX, BTW.  I'm pretty sure it's been discussed here 
before, and Dell has acknowledged it.  Unfortunately, that was over a year 
ago, and the platform in question is officially EOL, so there's not much 
hope of a fix from them.  Their own BIOS updater run under MEMDISK has the 
same problem; I had to put together a version that would boot and do the 
update without asking for confirmation.


-- Jeff




More information about the Syslinux mailing list