[syslinux] "pre-OS"
Josh Lehan
jlehan at scyld.com
Wed Oct 11 12:46:34 PDT 2006
n schembr wrote:
> Ok, syslinux is what it is, and I love the way it just works.
>
> I looked up linuxBios and found what I was looking for.
> A project in 2000 called "LOBOS (Linux OS Boots Linux OS): Booting a Kernel in 32-bit Mode”
>
> It looks like this would do what I need, but I can't find any working code.
>
> I like the Idea of booting a simple fail safe system and restarting a production kernel. Yes, UML- Linux would let me do some of this. I need to also look at UML.
LinuxBIOS, kexec(), and kboot are all useful tools for prebooting Linux
then chain-booting from Linux to Linux.
My question, though, was more general.
Is here a tool out there for generic chain-booting into any operating
system, not just Linux?
This tool would have to run in "BIOS mode", or whatever the correct
terminology is for the 16-bit-ish preboot environment that SYSLINUX (and
other bootloaders) run inside of.
I'm thinking along the lines of a tool that would go out and
auto-discover various devices connected via USB, FireWire, etc. and then
set up a BIOS "driver" to support INT 13 access to them.
Then, for example, you could have a Windows bootable CD, that could boot
from a USB-attached CDROM drive that the computer's native BIOS could
not see. You'd start by booting a floppy (for example), running this
"pre-OS" from a floppy, then chain-booting to the CD once an appropriate
INT 13 driver is loaded into memory and the CDROM drive has been given a
BIOS-style "drive number".
Such a tool already exists, "Smart Boot Manager", but it doesn't work
for USB. Smart Boot Manager supplies, as one of its components, an El
Torito stack for accessing a CDROM in this preboot environment. This is
an example of the "pre-OS" that I tried to describe. Notice that
there's no Linux-specific code in it.
Such a "pre-OS" would be able to boot into any PC-compatible OS. It
sets up disks as raw sector-addressable devices, assigning them BIOS INT
13 drive numbers and installing a software driver in a safe area of low
memory (if indeed such a thing exists).
It would add BIOS-style support for disks, so bootloader code loaded
from them (such as SYSLINUX) needs no further changes in order to "see"
the disk and finish booting the OS from it.
Similarly, for network cards, it would have PXE client support (such as
Etherboot), or an iSCSI or ATAoE stack to mount some remote storage over
the network card and make it available under a BIOS INT 13 drive number
for chain-booting into it.
Hope this clarifies things. I was interested in a lower-level solution
that would run at the BIOS level, discovering and recognizing
sector-addressable disk devices, loading boot sectors from those disks,
chain-booting to them, eventually loading any PC-compatible OS, not just
Linux. I do think that kboot/kexec is rather nice for Linux booting
Linux, though.
Josh
More information about the Syslinux
mailing list