Date: Tue, 19 Mar 2013 10:36:15 +0100
Without the boot interface , GRUB 2 (package grub-pc 1.99-7 from Debian Sid/unstable) is not loaded when running coreboot with SeaBIOS 1.7.2.1 as payload on the ASRock E350M1. Only the SeaBIOS banner is shown and nothing else happens afterward.
Signed-off-by: Paul Menzel paulepanter@users.sourceforge.net --- More or less a request for comments, as I still do not understand how SeaBIOS uses the interfaces itself and how SeaBIOS is of any use at all without being able to boot something. At least I do not know of such a use case.
src/Kconfig | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/src/Kconfig b/src/Kconfig index 3141069..c7ea23c 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -327,6 +327,8 @@ menu "BIOS interfaces" default y help Support int 19/18 system bootup support. + + You have to select this, if you want to boot from some media. config KEYBOARD bool "Keyboard interface" default y
If SeaBIOS is useless without this, then maybe the option to disable it should be removed?
On Tue, Mar 19, 2013 at 11:00 AM, Paul Menzel < paulepanter@users.sourceforge.net> wrote:
Date: Tue, 19 Mar 2013 10:36:15 +0100
Without the boot interface , GRUB 2 (package grub-pc 1.99-7 from Debian Sid/unstable) is not loaded when running coreboot with SeaBIOS 1.7.2.1 as payload on the ASRock E350M1. Only the SeaBIOS banner is shown and nothing else happens afterward.
Signed-off-by: Paul Menzel paulepanter@users.sourceforge.net
More or less a request for comments, as I still do not understand how SeaBIOS uses the interfaces itself and how SeaBIOS is of any use at all without being able to boot something. At least I do not know of such a use case.
src/Kconfig | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/src/Kconfig b/src/Kconfig index 3141069..c7ea23c 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -327,6 +327,8 @@ menu "BIOS interfaces" default y help Support int 19/18 system bootup support.
config KEYBOARD bool "Keyboard interface" default yYou have to select this, if you want to boot from some media.
-- 1.7.10.4
SeaBIOS mailing list SeaBIOS@seabios.org http://www.seabios.org/mailman/listinfo/seabios
Paul Menzel wrote:
I still do not understand how SeaBIOS uses the interfaces itself and how SeaBIOS is of any use at all without being able to boot something. At least I do not know of such a use case.
Payloads can also not be started without that option?
//Peter
Am Dienstag, den 19.03.2013, 17:18 +0100 schrieb Peter Stuge:
Paul Menzel wrote:
I still do not understand how SeaBIOS uses the interfaces itself and how SeaBIOS is of any use at all without being able to boot something. At least I do not know of such a use case.
Payloads can also not be started without that option?
I have not tried that. Thank you for mentioning that use case.
Thanks,
Paul
On Tue, Mar 19, 2013 at 11:00:30AM +0100, Paul Menzel wrote:
Date: Tue, 19 Mar 2013 10:36:15 +0100
Without the boot interface , GRUB 2 (package grub-pc 1.99-7 from Debian Sid/unstable) is not loaded when running coreboot with SeaBIOS 1.7.2.1 as payload on the ASRock E350M1. Only the SeaBIOS banner is shown and nothing else happens afterward.
Signed-off-by: Paul Menzel paulepanter@users.sourceforge.net
More or less a request for comments, as I still do not understand how SeaBIOS uses the interfaces itself and how SeaBIOS is of any use at all without being able to boot something. At least I do not know of such a use case.
I'm not sure what you are trying to accomplish. If you disable various BIOS interfaces, it is definitely going to break external code that relies on those interfaces. Basically everything under the "BIOS interfaces" menu is low-level and should not be changed without understanding the implications. (If one disables the "boot" interface, it should not be surprising that the machine can not "boot".)
The use-case for disabling the boot interface would be for possible embedded systems where one only needs SeaBIOS to execute option ROMs. I don't know of any users of this, but it has been discussed in the past.
Maybe if you explain what it is you're trying to accomplish then some direction could be given.
-Kevin
Kevin O'Connor wrote:
Basically everything under the "BIOS interfaces" menu is low-level and should not be changed without understanding the implications.
Maybe hide those behind a CONFIG_EXPERT option?
//Peter
On Wed, Mar 20, 2013 at 12:20:51AM +0100, Peter Stuge wrote:
Kevin O'Connor wrote:
Basically everything under the "BIOS interfaces" menu is low-level and should not be changed without understanding the implications.
Maybe hide those behind a CONFIG_EXPERT option?
It's possible, but basically all of Kconfig is a CONFIG_EXPERT already - the normal use case is to use one the default options, a pre-built rom, or via the coreboot build.
-Kevin
Am Dienstag, den 19.03.2013, 19:05 -0400 schrieb Kevin O'Connor:
On Tue, Mar 19, 2013 at 11:00:30AM +0100, Paul Menzel wrote:
Date: Tue, 19 Mar 2013 10:36:15 +0100
Without the boot interface , GRUB 2 (package grub-pc 1.99-7 from Debian Sid/unstable) is not loaded when running coreboot with SeaBIOS 1.7.2.1 as payload on the ASRock E350M1. Only the SeaBIOS banner is shown and nothing else happens afterward.
Signed-off-by: Paul Menzel paulepanter@users.sourceforge.net
More or less a request for comments, as I still do not understand how SeaBIOS uses the interfaces itself and how SeaBIOS is of any use at all without being able to boot something. At least I do not know of such a use case.
I'm not sure what you are trying to accomplish. If you disable various BIOS interfaces, it is definitely going to break external code that relies on those interfaces.
That is my point (or misunderstanding). This is not external code but SeaBIOS itself which breaks.
Basically everything under the "BIOS interfaces" menu is low-level and should not be changed without understanding the implications. (If one disables the "boot" interface, it should not be surprising that the machine can not "boot".)
Again as in the other thread this probably stems from the fact that I have the (wrong(?)) assumption that BIOS interfaces are not needed for GRUB or Linux.
The use-case for disabling the boot interface would be for possible embedded systems where one only needs SeaBIOS to execute option ROMs. I don't know of any users of this, but it has been discussed in the past.
I did not think of that. Thanks.
Maybe if you explain what it is you're trying to accomplish then some direction could be given.
I want to make the SeaBIOS payload for coreboot as small as possible and still want to boot from my AHCI hard drive (SATA) using GRUB 2 from Debian Sid/unstable (with working graphics, that means loading the option ROM for AMD/ATI wrestler.
Thanks,
Paul
Paul Menzel wrote:
Again as in the other thread this probably stems from the fact that I have the (wrong(?)) assumption that BIOS interfaces are not needed for GRUB or Linux.
GRUB needs BIOS interfaces. GRUB 2 as payload might not, but GRUB 2 on a random debian system does. It's clear that those are quite different, right?
//Peter
Am Mittwoch, den 20.03.2013, 01:03 +0100 schrieb Peter Stuge:
Paul Menzel wrote:
Again as in the other thread this probably stems from the fact that I have the (wrong(?)) assumption that BIOS interfaces are not needed for GRUB or Linux.
GRUB needs BIOS interfaces. GRUB 2 as payload might not, but GRUB 2 on a random debian system does. It's clear that those are quite different, right?
Yes, I know that. phcoder in #coreboot on irc.freenode.net wrote that even grub-pc (for BIOS) can circumvent some of these if the BIOS interface is not detected. This is the case for the keyboard for example.
I do not even know what the BIOS boot interface does and how it is utilized. I guess I should read up about that.
Thanks,
Paul
Paul Menzel wrote:
I do not even know what the BIOS boot interface does and how it is utilized. I guess I should read up about that.
Hundreds if not thousands of interrupt services and about a dozen data structures.
//Peter
On Wed, Mar 20, 2013 at 12:59:53AM +0100, Paul Menzel wrote:
Am Dienstag, den 19.03.2013, 19:05 -0400 schrieb Kevin O'Connor:
Basically everything under the "BIOS interfaces" menu is low-level and should not be changed without understanding the implications. (If one disables the "boot" interface, it should not be surprising that the machine can not "boot".)
Again as in the other thread this probably stems from the fact that I have the (wrong(?)) assumption that BIOS interfaces are not needed for GRUB or Linux.
Both grub and Linux can invoke BIOS calls. Grub 1 will certainly require bios calls; it may be possible to compile grub 2 so that it doesn't require bios calls, but that's not going to be anything out of the box.
Maybe if you explain what it is you're trying to accomplish then some direction could be given.
I want to make the SeaBIOS payload for coreboot as small as possible and still want to boot from my AHCI hard drive (SATA) using GRUB 2 from Debian Sid/unstable (with working graphics, that means loading the option ROM for AMD/ATI wrestler.
If you want a smaller payload - use lzma compression. With compression the SeaBIOS payload uses ~50K of rom space. If your using the onboard VGA - be sure to lzma compress the vga option ROM as well. If for some reason 50K is still too big then it is possible to disable unneeded drivers under the "Hardware Support" menu. However, I'd be curious to why 50K is too big on the ASRock - that should have a plenty large rom. For space reductions, you'd almost certainly find bigger wins slimming down coreboot than trying to cut features out of seabios.
-Kevin
Am Dienstag, den 19.03.2013, 22:18 -0400 schrieb Kevin O'Connor:
On Wed, Mar 20, 2013 at 12:59:53AM +0100, Paul Menzel wrote:
Am Dienstag, den 19.03.2013, 19:05 -0400 schrieb Kevin O'Connor:
Basically everything under the "BIOS interfaces" menu is low-level and should not be changed without understanding the implications. (If one disables the "boot" interface, it should not be surprising that the machine can not "boot".)
Again as in the other thread this probably stems from the fact that I have the (wrong(?)) assumption that BIOS interfaces are not needed for GRUB or Linux.
Both grub and Linux can invoke BIOS calls. Grub 1 will certainly require bios calls; it may be possible to compile grub 2 so that it doesn't require bios calls, but that's not going to be anything out of the box.
Reading »The Master Boot Record (MBR) and Why it is Necessary?« [1] to see what INT 19 is doing, it looks like in my setup (coreboot → SeaBIOS (payload) → GRUB 2 on hard drive) no BIOS *boot* interface is needed. Looking at SeaBIOS‘ debug message written to serial
07.765: Add to e820 map: c7fd0000 00010000 1 07.765: Returned 65536 bytes of ZoneHigh 07.765: e820 map has 7 items: 07.765: 0: 0000000000000000 - 000000000009fc00 = 1 RAM 07.765: 1: 000000000009fc00 - 00000000000a0000 = 2 RESERVED 07.765: 2: 00000000000f0000 - 0000000000100000 = 2 RESERVED 07.765: 3: 0000000000100000 - 00000000c7fe0000 = 1 RAM 07.765: 4: 00000000c7fe0000 - 00000000e0000000 = 2 RESERVED 07.765: 5: 00000000f8000000 - 00000000f9000000 = 2 RESERVED 07.765: 6: 0000000100000000 - 000000021efffc00 = 1 RAM 07.765: Jump to int19 07.765: enter handle_19: 07.765: NULL 07.765: Boot support not compiled in.
and looking at the code, it looks like this is indeed GRUB 2 independent and maybe the Kconfig option for BIOS boot interface should be renamed to for example Boot support and moved under the General menu.
Maybe if you explain what it is you're trying to accomplish then some direction could be given.
I want to make the SeaBIOS payload for coreboot as small as possible and still want to boot from my AHCI hard drive (SATA) using GRUB 2 from Debian Sid/unstable (with working graphics, that means loading the option ROM for AMD/ATI wrestler.
If you want a smaller payload - use lzma compression. With compression the SeaBIOS payload uses ~50K of rom space.
I am under 64 KB without compression when taking out the BIOS boot interface. ;-)
If your using the onboard VGA - be sure to lzma compress the vga option ROM as well.
Good idea. Especially as I still have to wait for the hard drive to spin up.
If for some reason 50K is still too big then it is possible to disable unneeded drivers under the "Hardware Support" menu.
Already did that. I have just AHCI support and some USB support enabled.
However, I'd be curious to why 50K is too big on the ASRock - that should have a plenty large rom.
Yes, currently it has a 4 MB flash chip. Later I want to put an initramfs image on there too (I have a LUKS encrypted drive), so every bit is going to count. ;-)
For space reductions, you'd almost certainly find bigger wins slimming down coreboot than trying to cut features out of seabios.
That is probably true. Nevertheless it would be nice if it is clear for noobs like me, what certain option do and what effects they have.
Thanks,
Paul
[1] http://www.dewassoc.com/kbase/hard_drives/master_boot_record.htm
Paul Menzel wrote:
it would be nice if it is clear for noobs like me, what certain option do and what effects they have.
The good way to fix that is for you to send patches for the Kconfig help messages. *After* you have researched what the options do.
//Peter