[syslinux] Question about a "pre-OS", was Re: scope creep

Josh Lehan jlehan at scyld.com
Fri Oct 6 13:54:51 PDT 2006


H. Peter Anvin wrote:
> You're missing the point... he wants console output on his USB serial 
> dongle, which is hellishly hard to support (since serial port isn't one 
> of the BIOS-provided "USB legacy features", syslinux would have to 
> include a full-blown USB stack.)

That would be a huge, but very useful, project.  Quite beyond the scope 
of SYSLINUX, though.

My understanding of SYSLINUX is this, correct me if I'm wrong:

SYSLINUX is a bootloader, which means that it focuses on booting OS's 
from the device presented to it by the BIOS.  There are 4 main API's 
that have evolved over time, with varying support in various BIOS's, for 
possible use by bootloader programs: floppy (INT 13 device 0x00), "fixed 
disk" (INT 13 device 0x80 and a different set of calls), CDROM "El 
Torito", and PXE (the UNDI stack).

SYSLINUX comes in various flavors, to support all of these: SYSLINUX or 
EXTLINUX (floppy and hard drive), ISOLINUX (CDROM), and PXELINUX (PXE).

What SYSLINUX doesn't do, though, is discover new devices and add 
additional BIOS support for them.  There is a patchwork of other 
projects that do this:

Smart Boot Manager (emulates CDROM support, to chain-boot from floppy/HD 
to CD, if BIOS can't directly boot from CD)

Etherboot (emulates a PXE BIOS, for network cards that don't have 
built-in PXE, to chain from floppy/HD to PXE)

There's probably others, but I forgot.

Now, a question:

Does anybody know of a project underway to do something on a greater 
scope, that is, kind of a "pre-OS" to discover all bootable devices and 
add BIOS-like support for them?

Something could be written that would do all the USB discovery and 
setup, and so on, and then install BIOS-like API support for them, so 
that the system could end up successfully booting from those devices, 
even when the real BIOS couldn't do it directly.

This would be useful for USB, FireWire, PXE, ATAoE, iSCSI, various other 
exotic protocols, various older nonstandard devices, and pretty much 
anything that can be discovered and booted from.  It would be something 
that could start from something as simple as a floppy, and then chain 
from there to any other device.

Would such a thing be possible?  Is there a designated "safe area" in 
low-640K memory that a software driver could run at, that wouldn't get 
clobbered by whatever is being chain-booted into?

For example, let's say I have a Linux USB key with SYSLINUX on it, but 
my BIOS doesn't let me boot from USB.  So, I run this "pre-OS" to boot 
from floppy.  It discovers my USB key and provides a driver that sets it 
up as a BIOS-like device (probably "fixed disk"), and chain-boots to 
that.  Is there a designated area of memory that the "pre-OS"'s USB 
driver can still safely sit at, even though SYSLINUX will load again 
from USB and take control?

Josh




More information about the Syslinux mailing list