[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