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.
Thanks Scott
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
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.
32bit mode is right where I'm running. In going over the SeaBIOS code, it looks like I just need to prep a coreboot table, stick it in the correct place and call post.
Or I could mod the coreboot.c code and create an efi.c to just grab it from the original locations.
Calling EFI proper is not possible, there's really not much to call as I'm way past the EFI release point. But I do have the devicetree and other interesting bits.
This will be fun, of course, no serial port which makes it real interesting to debug.
I would also be interested in USB keyboard support. FILO has ohic/uhic in 32bit mode but not 16bit.
On Fri, Feb 13, 2009 at 08:57:44PM -0500, Scott D. Davilla wrote:
32bit mode is right where I'm running. In going over the SeaBIOS code, it looks like I just need to prep a coreboot table, stick it in the correct place and call post.
Sounds about right.
This will be fun, of course, no serial port which makes it real interesting to debug.
Hrmm. If the machine has an ehci port, we could enhance seabios to send debug info over the ehci debug port. (You'd need a special ehci debug device, but it may be better than debugging blind.)
I would also be interested in USB keyboard support. FILO has ohic/uhic in 32bit mode but not 16bit.
It would definitely be nice to add USB support to SeaBIOS. Eventually, we'll have to do something as USB support is a must these days.
-Kevin
On Fri, Feb 13, 2009 at 08:57:44PM -0500, Scott D. Davilla wrote:
32bit mode is right where I'm running. In going over the SeaBIOS code, it looks like I just need to prep a coreboot table, stick it in the correct place and call post.
Sounds about right.
This will be fun, of course, no serial port which makes it real interesting to debug.
Hrmm. If the machine has an ehci port, we could enhance seabios to send debug info over the ehci debug port. (You'd need a special ehci debug device, but it may be better than debugging blind.)
It does have an ehci debug port. Maybe I should look into that.
Scott D. Davilla wrote:
It does have an ehci debug port. Maybe I should look into that.
Scott D. Davilla wrote:
Or I could mod the coreboot.c code and create an efi.c to just grab itt from the original locations.
This is much preferable.
//Peter