IDEA: Linux kernel and pcbios compatibility...

Eric W. Biederman ebiederman at lnxi.com
Sat Dec 20 13:11:01 CET 2003


Takeshi Sone <ts1 at tsn.or.jp> writes:

> On Fri, Dec 19, 2003 at 12:49:42AM -0700, Eric W. Biederman wrote:
> > Adam Sulmicki <adam at cfar.umd.edu> writes:
> > 
> > > you mean just like dosemu runs under linux ???
> > 
> > Right but for BSD and early versions of windows the dependencies
> > were worse.  I don't know which services matter though.
> 
> Last time I saw the source code of FreeBSD, its _bootloader_ has its 
> own vm86 monitor (in assembly), works in protected mode,
> and calls all the BIOS calls (video, keyboard, disk,...) in 
> vm86 mode. Also the kernel calls E820, APM, VESA, etc in vm86.
> Also I saw a recent version of Windows calls BIOS services in vm86.
> 
> Maybe we can modify FreeBSD, and have work-around for Windows,
> but at least I don't think it's the way to go.
> 
> My conclusion then was that PCBIOS had to work in real mode.
> 
> Maybe we can code it with GCC and .code16gcc hack.
> If 64KB is not enough, maybe 0xE000 segment can be used
> so that we have 64KB code and 64KB data segments.
> And all the "POST" code can be outside the real mode space.
> So it's not impossible or hard at all.

Ok Then I am up to idea #2. For cooperation, just before I go
catch my flight.

Implement a minimal but real PCBIOS.

Have a linux kernel.

Use the PCBIOS to initialize the option roms.
Jump to the linux base boot loader.

When I have loaded something I go to real mode with kexec
and had off control to the loaded kernel.  Which can make BIOS
calls.  I have traditionally avoided that because the PCBIOS tends
to get wedged when I start linux but with the source that should
not be a problem.

Eric



More information about the coreboot mailing list