[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