On Fri, Feb 13, 2009 at 02:25:08PM -0500, Scott D. Davilla wrote:
SeaBios seems to have matured nicely and I figure it's about time to try again my attempts at resolving boot restrictions on the AppleTV.
For review, I'm the atv-bootloader author which is used for booting Linux under the AppleTV. This is a second stage bootloader which poses as a mach_kernel which was loaded by EFI firmware.
Currently, to enable loading a generic Linux kernel I'm already moving RSDP and SMBIOS table to where Linux can find them as well as converting the EFI memory map to an e820 memory map. This works very well and the next step is to get VBIOS POST'ed and working. With VBIOS working, this removes the last problem area that being able to use generic video console drivers. Once this is done, then the Linux kernels booted can be truly generic and also adds the possibility of booting Windows.
From what I can gleam from the code, it seems that I should be able to load up SeaBios, setup the proper structures that it expects and go. Then bang, instant bios which will not only handle vbios but also a real bios.
Any comments or pointers to things to watch out for would be appreciated.
Sounds interesting.
As a thought, I wonder if we could extend SeaBIOS to make the EFI calls directly. The SeaBIOS post phase runs in 32bit mode (with standard gcc). Currently, the code in src/coreboot.c extracts info from the coreboot table to build the e820 map and copy rsdp. Maybe a src/efi.c could do something similar for EFI machines.
Just a thought - let us know what you find.
-Kevin