Hi Kevin, The Seabios try to booting usbrom with IPL_TYPE_BEV, which i think should use IPL_TYPE_HARDDISK, right? Followed by BIOS BOOT Specification I think it can add #define IPL_TYPE_USBROM 0x05 to support BCV, how do you think about that?
On Wed, Aug 12, 2009 at 10:59 AM, Jason Wang wangqingpei@gmail.com wrote:
Hi Kevin,
On Wed, Aug 12, 2009 at 8:18 AM, Kevin O'Connor kevin@koconnor.netwrote:
On Wed, Aug 12, 2009 at 03:59:02AM +0800, Jason Wang wrote:
Hi all Since USB ROM has already added into the booting menu list(IPL
table),
and the UHCI stack can be run well in usbrom now, i have some issues to confirm, any advices are welcome.
- <<Plug and Play BIOS Specification>>Page21, There is an r Return
Status
from Initialization Call of OPTION ROM. Which used to let the bios know
the
status. But it seems Seabios does not check the return code. Is that OK?
SeaBIOS assumes the rom runs successfully - I think that is okay. If you wish to unload the optionrom, set its size to 0.
- After Seabios make an far call into the BEV, the OPTION ROM should
begin
to load OS.if it failed, it can return back to BIOS. But it can not
return
back with my USB OPTION ROM, Is there any configuration I should set?
You should not use BEV; you should use a BCV.
I use a BCV now, sorry for messing this two types. Which i use is BCV. I tried to put only an "lretw" in BCV. but still failed.
I don't know why you can't return - it should work. Maybe the stack or gdt/idt was changed?
- In my eyes, OPTION ROM hook int13 after jump into BEV, not in the
initialization.But after that how does it jump into the booting code
which
located in the USB disk?
As above, define a BCV and hook int13 from the BCV handler.
So, BCV handler is used to hook int13, anything else that BCV should do?
SeaBIOS will make int13 calls to load the OS and boot it. As long as your rom can handle the int13 calls, SeaBIOS will be able to boot an OS from usb.
BTW: Kevin: I looked the code of Seabios ata.c to learn how seabios booting
OS
from ata disk. some question i have:
- ATA used add_bcv_hd to add ata disk into IPL table. it's type is
IPL_TYPE_HARDDISK(0x02). It's vector is the driver id. how does seabios
know
the bootstrap vector based the driver ID?
add_bcv_hd() adds the drive to the BCV table, not the IPL table.
SeaBIOS populates the BCV table with built-in harddrives and optionroms with a BCV.
what does ata fill FDPT area for? Should my usbrom do the same?
It's some weird legacy thing. Nothing modern will require it. I don't know what legacy things will break without it.
For my usbrom, i should not use add_bcv to add option rom into IPL ? or
just
take the ata as example?
As above, you should use a BCV.
-- Jason Wang Peking University
-Kevin
-- Jason Wang Peking University