'''SeaBIOS''' is an open-source legacy BIOS implementation which can be used as a coreboot [[Payloads|payload]]. It implements the standard BIOS calling interfaces that a typical x86 proprietary BIOS implements.

+

[http://www.seabios.org '''SeaBIOS'''] is an open-source legacy BIOS implementation which can be used as a coreboot [[Payloads|payload]]. It implements the standard [https://secure.wikimedia.org/wikipedia/en/wiki/BIOS BIOS] calling interfaces that a typical x86 proprietary BIOS implements.

−

This page describes using SeaBIOS with coreboot. SeaBIOS can also run natively in qemu and bochs - see the SeaBIOS README file for information on non-coreboot uses.

+

This page describes using SeaBIOS with coreboot. SeaBIOS can also run natively in [[QEMU]] and [http://bochs.sourceforge.net/ bochs] &mdash; see the [http://git.linuxtogo.org/?p=kevin/seabios.git;a=blob;f=README;hb=HEAD SeaBIOS README] file for information on non-coreboot uses.

= Use cases =

= Use cases =

Line 7:

Line 7:

Any software requiring 16-bit BIOS services benefits from SeaBIOS (eg, Windows and DOS). SeaBIOS also enables booting Linux out of the box (using standard boot-loaders like GRUB and Syslinux).

Any software requiring 16-bit BIOS services benefits from SeaBIOS (eg, Windows and DOS). SeaBIOS also enables booting Linux out of the box (using standard boot-loaders like GRUB and Syslinux).

However, Windows has a very strict ACPI interpreter, and many coreboot boards do not have a complete [[ACPI in coreboot|ACPI definition]]. As a result, many coreboot boards will fail during Windows boot (eg, it may fail with a STOP 0xA5 code).

+

However, Windows has a very strict ACPI interpreter, and many coreboot boards do not have a complete [[ACPI in coreboot|ACPI definition]]. As a result, many coreboot boards will fail during Windows boot (eg, it may fail with a '''STOP 0xA5''' code).

So far [[ASUS M2V-MX SE]] and [[GIGABYTE GA-M57SLI-S4]] have known good working ACPI and are able to boot XP/Vista/Windows 7. Please ask on the [[Mailinglist|mailing list]] for the status of other boards/chipsets.

So far [[ASUS M2V-MX SE]] and [[GIGABYTE GA-M57SLI-S4]] have known good working ACPI and are able to boot XP/Vista/Windows 7. Please ask on the [[Mailinglist|mailing list]] for the status of other boards/chipsets.

Line 23:

Line 23:

== Other ==

== Other ==

−

SeaBIOS has also been tested with FreeDOS and NetBSD.

+

SeaBIOS has also been tested with FreeDOS, NetBSD, and OpenBSD.

Because SeaBIOS implements the standard x86 BIOS interfaces, it is expected many other operating systems and boot-loaders will work.

Because SeaBIOS implements the standard x86 BIOS interfaces, it is expected many other operating systems and boot-loaders will work.

Line 29:

Line 29:

= Building =

= Building =

−

== SeaBIOS ==

+

== Building via coreboot's menuconfig ==

+

+

Probably the easiest way to use SeaBIOS as coreboot payload is to simply use the coreboot build process, which downloads and builds SeaBIOS as payload by default nowadays. You just have to run the following in your coreboot checkout:

+

+

<source lang="bash">

+

$ make menuconfig

+

$ make

+

</source>

+

+

Both SeaBIOS and coreboot will be built, and SeaBIOS will be added as payload to the '''coreboot.rom''' image that is being built.

+

+

== Manual build ==

One can download the latest version of SeaBIOS through a git repository:

One can download the latest version of SeaBIOS through a git repository:

<source lang="bash">

<source lang="bash">

−

$ git clone git://git.linuxtogo.org/home/kevin/seabios.git seabios

+

$ git clone git://git.seabios.org/seabios.git seabios

$ cd seabios

$ cd seabios

</source>

</source>

−

There's also a [http://git.linuxtogo.org/?p=kevin/seabios.git;a=summary gitweb] facility to browse the latest source code online.

+

There's also a [http://code.coreboot.org/p/seabios/source/changes/master/ gitweb] facility to browse the latest source code online.

−

Edit '''src/config.h''' and set the following values:

+

Run '''make menuconfig''' and set the following variables:

−

<source lang="C">

+

* CONFIG_COREBOOT 1

−

#define CONFIG_COREBOOT 1

+

* CONFIG_DEBUG_SERIAL 1

−

#define CONFIG_DEBUG_SERIAL 1

−

#define CONFIG_VGAHOOKS 1

−

</source>

Then:

Then:

Line 55:

Line 63:

The final SeaBIOS payload file is '''out/bios.bin.elf'''.

The final SeaBIOS payload file is '''out/bios.bin.elf'''.

−

−

=== Compiled SeaBIOS images ===

−

−

It is also possible to download a compiled SeaBIOS image. The latest released version compiled for coreboot is: http://linuxtogo.org/~kevin/SeaBIOS/bios.bin.elf-0.6.0

−

−

Other versions are also available at: http://linuxtogo.org/~kevin/SeaBIOS/

== coreboot ==

== coreboot ==

−

For best results, configure coreboot with CONFIG_WRITE_HIGH_TABLES and CONFIG_VGA_BRIDGE_SETUP both enabled, and CONFIG_VGA_ROM_RUN and CONFIG_PCI_ROM_RUN both disabled.

+

For best results, configure coreboot with '''CONFIG_WRITE_HIGH_TABLES''' and '''CONFIG_VGA_BRIDGE_SETUP''' both enabled, and '''CONFIG_VGA_ROM_RUN''' and '''CONFIG_PCI_ROM_RUN''' both disabled.

−

Finally, configure the SeaBIOS '''/out/bios.bin.elf''' file as the coreboot payload and build coreboot. The resulting '''coreboot.rom''' file will contain both SeaBIOS and coreboot, and it can be flashed to a rom.

+

Finally, configure the SeaBIOS '''out/bios.bin.elf''' file as the coreboot payload and build coreboot. The resulting '''coreboot.rom''' file will contain both SeaBIOS and coreboot, and it can be flashed to a ROM chip.

= SeaBIOS and CBFS =

= SeaBIOS and CBFS =

Line 72:

Line 74:

SeaBIOS can read the coreboot flash filesystem and extract files.

SeaBIOS can read the coreboot flash filesystem and extract files.

−

When SeaBIOS scans the target machine's PCI devices, it will recognize option ROMs in CBFS that have the form '''pciVVVV,DDDD.rom'''. It will also run any file in the directory '''vgaroms/''' as a vga option ROM not specific to a device and files in '''genroms/''' as a generic option ROM not specific to a device. In the above cases, SeaBIOS will recognize files with a '''.lzma''' suffix, and automatically decompress them (eg, '''pci1106,3344.rom.lzma''' and '''vgaroms/sgabios.bin.lzma''').

+

When SeaBIOS scans the target machine's PCI devices, it will recognize option ROMs in CBFS that have the form '''pciVVVV,DDDD.rom'''. It will also run any file in the directory '''vgaroms/''' as a VGA option ROM not specific to a device and files in '''genroms/''' as a generic option ROM not specific to a device. In the above cases, SeaBIOS will recognize files with a '''.lzma''' suffix, and automatically decompress them (eg, '''pci1106,3344.rom.lzma''' and '''vgaroms/sgabios.bin.lzma''').

+

+

SeaBIOS can also load a graphical bootsplash image from '''bootsplash.jpg''' or '''bootsplash.bmp''', payloads found in the CBFS directory '''img/''', and floppy images found in the '''floppyimg/''' directory.

−

SeaBIOS can also load a graphical bootsplash image from '''bootsplash.jpg''', payloads found in the CBFS directory '''img/''', and floppy images found in the '''floppyimg/''' directory.

+

Further, SeaBIOS can obtain configuration information from CBFS. A file '''bootorder''' determines the order of devices and methods to attempt to boot the system from. Additional configuration items may be found in the CBFS '''etc/''' directory.

−

The examples below show some common uses of this feature.

+

The examples below show some common uses of these features.

== Adding a VGA option ROM ==

== Adding a VGA option ROM ==

−

It is frequently necessary to add a VGA option ROM to CBFS in order to use a VGA adapter that is built-in to a motherboard. Note, VGA adapters on external cards do not require this step as SeaBIOS will automatically extract the VGA bios directly from the card. For machines without a VGA adapter, please follow the [[#Adding sgabios support|sgabios instructions]] below.

+

It is frequently necessary to add a VGA option ROM to CBFS in order to use a VGA adapter that is built-in to a motherboard. Note, VGA adapters on external cards (PCI, AGP, PCIe) do not require this step as SeaBIOS will automatically extract the VGA BIOS directly from the card. For machines without a VGA adapter, please follow the [[#Adding sgabios support|sgabios instructions]] below.

The first step is to find the vendor and device ID of the built-in VGA adapter. This information can be found from '''lspci''':

The first step is to find the vendor and device ID of the built-in VGA adapter. This information can be found from '''lspci''':

An [http://code.google.com/p/sgabios/ sgabios] option ROM can forward many VGA BIOS requests and keyboard events over a serial port. One can deploy it in addition to the primary VGA BIOS or by itself.

+

An [http://code.google.com/p/sgabios/ sgabios] option ROM can forward many VGA BIOS requests and keyboard events over a serial port. One can deploy it in addition to the primary VGA BIOS or by itself.

−

−

If the target machine does not have a VGA adapter, then one should install sgabios. Most bootloaders (eg, grub) require a VGA BIOS in order to function properly - the sgabios rom can fill this requirement.

−

The current version of sgabios (as of 20090617) does not implement a proper checksum. As a work around, a tool from the seabios source repo can fix the checksum:

+

If the target machine does not have a VGA adapter, then one should install sgabios. Most bootloaders (eg, GRUB) require a VGA BIOS in order to function properly &mdash; the sgabios ROM can fill this requirement.

When using sgabios, all the characters that SeaBIOS writes to the screen will be seen twice - once from SeaBIOS sending the character to the serial port and once from sgabios forwarding the character. To prevent the duplicates one can edit the SeaBIOS '''src/config.h''' file and set the following:

+

When using sgabios, all the characters that SeaBIOS writes to the screen will be seen twice &mdash; once from SeaBIOS sending the character to the serial port and once from sgabios forwarding the character. To prevent the duplicates set the [[#Other Configuration items|config file]] '''etc/screen-and-debug''' to zero.

−

−

<source lang="C">

−

#define CONFIG_SCREEN_AND_DEBUG 0

−

</source>

== Adding a graphical "bootsplash" image ==

== Adding a graphical "bootsplash" image ==

−

SeaBIOS can show a custom [http://en.wikipedia.org/wiki/JPEG JPEG] image during bootup. To enable this, add the jpeg file to flash with the name '''bootsplash.jpg'''. For example:

+

SeaBIOS can show a custom [http://en.wikipedia.org/wiki/JPEG JPEG] image or [http://en.wikipedia.org/wiki/BMP_file_format BMP] image during bootup. To enable this, add the JPEG file to flash with the name '''bootsplash.jpg''' or BMP file as '''bootsplash.bmp'''. For example:

The size of the jpeg image determines the video mode to use for showing the image. Make sure the dimensions of the image exactly correspond to an available video mode (eg, 640x480, 1024x768).

+

The size of the image determines the video mode to use for showing the image. Make sure the dimensions of the image exactly correspond to an available video mode (eg, 640x480, or 1024x768), otherwise it will not be displayed.

−

SeaBIOS will show the image during the wait for the boot menu. (If the boot menu has been disabled, users will not see the image.) The image should probably have "Press F12 for boot menu" embedded in it so users know they can enter the normal SeaBIOS boot menu. By default, the boot menu prompt (and thus graphical image) is shown for 2.5 seconds. This can be customized by modifying SeaBIOS' '''src/config.h''' file and changing the '''CONFIG_BOOTMENU_WAIT''' setting.

+

SeaBIOS will show the image during the wait for the boot menu (if the boot menu has been disabled, users will not see the image). The image should probably have "Press F12 for boot menu" embedded in it so users know they can enter the normal SeaBIOS boot menu. By default, the boot menu prompt (and thus graphical image) is shown for 2.5 seconds. This can be customized via a [[#Other Configuration items|configuration parameter]].

−

The jpeg viewer in SeaBIOS uses a simplified decoding algorithm. It supports most common jpegs, but does not support all possible formats. Please see the [[#Trouble reporting]] section if a valid image isn't displayed properly.

+

The JPEG viewer in SeaBIOS uses a simplified decoding algorithm. It supports most common JPEGs, but does not support all possible formats. Please see the [[#Trouble reporting|Trouble reporting]] section if a valid image isn't displayed properly.

It is possible to embed an image of a floppy in flash. SeaBIOS can then boot from and redirect floppy BIOS calls to the flash image. This is mainly useful for legacy software (such as DOS utilities). To use this feature, place a floppy image into the CBFS directory '''floppyimg/'''. For example:

+

It is possible to embed an image of a floppy in flash. SeaBIOS can then boot from and redirect floppy BIOS calls to the flash image. This is mainly useful for legacy software (such as DOS utilities). To use this feature, place a floppy image into the CBFS directory '''floppyimg/'''. For example:

The floppy image will appear as writable to the system, however all writes are discarded on reboot.

The floppy image will appear as writable to the system, however all writes are discarded on reboot.

−

When using this system, SeaBIOS reserves high-memory to store the floppy. The reserved memory is then no longer available for OS use, so this feature should only be used when needed.

+

When using this system, SeaBIOS reserves high-memory to store the floppy. The reserved memory is then no longer available for OS use, so this feature should only be used when needed.

+

+

== Configuring boot order ==

−

= Trouble reporting =

+

Place a file in CBFS with the name '''bootorder''' to configure the boot up order. The file should be ASCII text and contain one line per boot method. The description of each boot method follows an [https://secure.wikimedia.org/wikipedia/en/wiki/Open_firmware Open Firmware] device path format. SeaBIOS will attempt to boot from each item in the file &mdash; first line of the file first.

+

+

The easiest way to find the available boot methods is to look for "Searching bootorder for" in the SeaBIOS serial output. For example, one may see lines similar to:

+

+

Searching bootorder for: /pci@i0cf8/*@f/drive@1/disk@0

+

Searching bootorder for: /pci@i0cf8/*@f,1/drive@2/disk@1

+

Searching bootorder for: /pci@i0cf8/usb@10,4/*@2

+

+

The above represents the patterns SeaBIOS will search for in the bootorder file. However, it's safe to just copy and paste the pattern into bootorder. For example, the file:

+

+

/pci@i0cf8/usb@10,4/*@2

+

/pci@i0cf8/*@f/drive@1/disk@0

+

+

will instruct SeaBIOS to attempt to boot from the given USB drive first and then attempt the given ATA harddrive second.

+

+

Once a file has been created, add it to CBFS with the name '''bootorder'''. For example:

+

+

<source lang="bash">

+

$ ./build/cbfstool coreboot.rom add mybootlist.txt bootorder raw

+

$ ./build/cbfstool coreboot.rom print

+

</source>

+

+

== Other Configuration items ==

−

If you are experiencing problems with SeaBIOS, it's useful to increase the debugging level. This is done by editing the '''src/config.h''' file and setting the debug level to a higher number (for example 8):

+

Additional configuration options are available in the CBFS '''etc/''' directory. For example, to set the duration of the boot menu to five and a half seconds, one would do the following:

A debug level of 8 will show a lot of diagnostic information without flooding the serial port (levels above 8 will frequently cause too much data).

+

The SeaBIOS tool '''tools/encodeint.py''' will create a litte-endian encoded binary integer which can be placed into a CBFS file.

+

+

{| border=1

+

|+ Configuration variables

+

|-

+

! Filename !! Description

+

|-

+

| boot-menu-wait || Amount of time (in milliseconds) to wait at the boot menu prompt before selecting the default boot.

+

|-

+

| extra-pci-roots || If the target machine has multiple independent root buses set this to a positive value. The SeaBIOS PCI probe will then search for the given number of extra root buses.

+

|-

+

| ps2-keyboard-spinup || Some PS2 keyboards don't respond to commands immediately after powering on. One may specify the amount of time (in milliseconds) here to allow as additional time for the keyboard to become responsive.

+

|-

+

| optionroms-checksum || Option ROMs are required to have correct checksums. However, some option ROMs in the wild don't correctly follow the specifications and have bad checksums. Set this to a zero value to allow SeaBIOS to execute them anyways.

+

|-

+

| s3-resume-vga-init || Set this to a non-zero value to instruct SeaBIOS to run the vga rom on an S3 resume.

+

|-

+

| screen-and-debug || Set this to a zero value to instruct SeaBIOS to not write characters it sends to the screen to the debug ports. This can be useful when using [[#Adding sgabios support|sgabios]].

+

|-

+

| boot-fail-wait || If no boot devices are found SeaBIOS will reboot after 60 seconds. Set this to the amount of time (in milliseconds) to customize the reboot delay or set to -1 to disable rebooting when no boot devices are found. (This setting is only in git versions after 20120601.)

+

|}

+

+

= Trouble reporting =

+

+

If you are experiencing problems with SeaBIOS, it's useful to increase the debugging level. This is done by running '''make menuconfig''' and setting '''CONFIG_DEBUG_LEVEL''' to a higher value. A debug level of 8 will show a lot of diagnostic information without flooding the serial port (levels above 8 will frequently cause too much data).

To report an issue, please collect the serial boot log with SeaBIOS set to a debug level of 8 and forward the full log along with a description of the problem to the coreboot [[Mailinglist|mailing list]].

To report an issue, please collect the serial boot log with SeaBIOS set to a debug level of 8 and forward the full log along with a description of the problem to the coreboot [[Mailinglist|mailing list]].

Revision as of 13:26, 9 June 2012

SeaBIOS is an open-source legacy BIOS implementation which can be used as a coreboot payload. It implements the standard BIOS calling interfaces that a typical x86 proprietary BIOS implements.

This page describes using SeaBIOS with coreboot. SeaBIOS can also run natively in QEMU and bochs — see the SeaBIOS README file for information on non-coreboot uses.

Windows

However, Windows has a very strict ACPI interpreter, and many coreboot boards do not have a complete ACPI definition. As a result, many coreboot boards will fail during Windows boot (eg, it may fail with a STOP 0xA5 code).

Linux

SeaBIOS has been tested with GRUB, LILO, and Syslinux. Linux booting works well.

Other

SeaBIOS has also been tested with FreeDOS, NetBSD, and OpenBSD.

Because SeaBIOS implements the standard x86 BIOS interfaces, it is expected many other operating systems and boot-loaders will work.

Building

Building via coreboot's menuconfig

Probably the easiest way to use SeaBIOS as coreboot payload is to simply use the coreboot build process, which downloads and builds SeaBIOS as payload by default nowadays. You just have to run the following in your coreboot checkout:

$ make menuconfig
$ make

Both SeaBIOS and coreboot will be built, and SeaBIOS will be added as payload to the coreboot.rom image that is being built.

Manual build

One can download the latest version of SeaBIOS through a git repository:

$ git clone git://git.seabios.org/seabios.git seabios
$ cd seabios

There's also a gitweb facility to browse the latest source code online.

Run make menuconfig and set the following variables:

CONFIG_COREBOOT 1

CONFIG_DEBUG_SERIAL 1

Then:

$ make

The final SeaBIOS payload file is out/bios.bin.elf.

coreboot

For best results, configure coreboot with CONFIG_WRITE_HIGH_TABLES and CONFIG_VGA_BRIDGE_SETUP both enabled, and CONFIG_VGA_ROM_RUN and CONFIG_PCI_ROM_RUN both disabled.

Finally, configure the SeaBIOS out/bios.bin.elf file as the coreboot payload and build coreboot. The resulting coreboot.rom file will contain both SeaBIOS and coreboot, and it can be flashed to a ROM chip.

SeaBIOS and CBFS

SeaBIOS can read the coreboot flash filesystem and extract files.

When SeaBIOS scans the target machine's PCI devices, it will recognize option ROMs in CBFS that have the form pciVVVV,DDDD.rom. It will also run any file in the directory vgaroms/ as a VGA option ROM not specific to a device and files in genroms/ as a generic option ROM not specific to a device. In the above cases, SeaBIOS will recognize files with a .lzma suffix, and automatically decompress them (eg, pci1106,3344.rom.lzma and vgaroms/sgabios.bin.lzma).

SeaBIOS can also load a graphical bootsplash image from bootsplash.jpg or bootsplash.bmp, payloads found in the CBFS directory img/, and floppy images found in the floppyimg/ directory.

Further, SeaBIOS can obtain configuration information from CBFS. A file bootorder determines the order of devices and methods to attempt to boot the system from. Additional configuration items may be found in the CBFS etc/ directory.

The examples below show some common uses of these features.

Adding a VGA option ROM

It is frequently necessary to add a VGA option ROM to CBFS in order to use a VGA adapter that is built-in to a motherboard. Note, VGA adapters on external cards (PCI, AGP, PCIe) do not require this step as SeaBIOS will automatically extract the VGA BIOS directly from the card. For machines without a VGA adapter, please follow the sgabios instructions below.

The first step is to find the vendor and device ID of the built-in VGA adapter. This information can be found from lspci:

After the above is done, one can write the coreboot.rom file to flash. SeaBIOS will extract the VGA ROM and run it during boot.

Adding gpxe support

A gpxe option ROM can nicely complement SeaBIOS and coreboot by adding network boot support. Adding gpxe is similar to #Adding a VGA option ROM. The first step is to find the Ethernet vendor/device ID. For example:

As with VGA option ROMs, the gpxe option ROM may be compressed with LZMA. However, compression won't significantly reduce gpxe's size as it implements its own compression.

In addition to gpxe, other option ROMs can be added in the same manner.

Adding sgabios support

An sgabios option ROM can forward many VGA BIOS requests and keyboard events over a serial port. One can deploy it in addition to the primary VGA BIOS or by itself.

If the target machine does not have a VGA adapter, then one should install sgabios. Most bootloaders (eg, GRUB) require a VGA BIOS in order to function properly — the sgabios ROM can fill this requirement.

Place the sgabios ROM file in the vgaroms/ directory of CBFS. For example:

When using sgabios, all the characters that SeaBIOS writes to the screen will be seen twice — once from SeaBIOS sending the character to the serial port and once from sgabios forwarding the character. To prevent the duplicates set the config fileetc/screen-and-debug to zero.

Adding a graphical "bootsplash" image

SeaBIOS can show a custom JPEG image or BMP image during bootup. To enable this, add the JPEG file to flash with the name bootsplash.jpg or BMP file as bootsplash.bmp. For example:

The size of the image determines the video mode to use for showing the image. Make sure the dimensions of the image exactly correspond to an available video mode (eg, 640x480, or 1024x768), otherwise it will not be displayed.

SeaBIOS will show the image during the wait for the boot menu (if the boot menu has been disabled, users will not see the image). The image should probably have "Press F12 for boot menu" embedded in it so users know they can enter the normal SeaBIOS boot menu. By default, the boot menu prompt (and thus graphical image) is shown for 2.5 seconds. This can be customized via a configuration parameter.

The JPEG viewer in SeaBIOS uses a simplified decoding algorithm. It supports most common JPEGs, but does not support all possible formats. Please see the Trouble reporting section if a valid image isn't displayed properly.

Adding payloads

Most payloads can also be launched from SeaBIOS. To add a payload, build the corresponding .elf file and then add it to the coreboot.rom file in the img/ directory. For example:

During boot, one can press the F12 key to get a boot menu. SeaBIOS will show all files in the img/ directory, and one can instruct SeaBIOS to run them.

SeaBIOS supports both uncompressed and LZMA compressed payloads.

Adding a floppy image

It is possible to embed an image of a floppy in flash. SeaBIOS can then boot from and redirect floppy BIOS calls to the flash image. This is mainly useful for legacy software (such as DOS utilities). To use this feature, place a floppy image into the CBFS directory floppyimg/. For example:

The floppy image will appear as writable to the system, however all writes are discarded on reboot.

When using this system, SeaBIOS reserves high-memory to store the floppy. The reserved memory is then no longer available for OS use, so this feature should only be used when needed.

Configuring boot order

Place a file in CBFS with the name bootorder to configure the boot up order. The file should be ASCII text and contain one line per boot method. The description of each boot method follows an Open Firmware device path format. SeaBIOS will attempt to boot from each item in the file — first line of the file first.

The easiest way to find the available boot methods is to look for "Searching bootorder for" in the SeaBIOS serial output. For example, one may see lines similar to:

The SeaBIOS tool tools/encodeint.py will create a litte-endian encoded binary integer which can be placed into a CBFS file.

Configuration variables

Filename

Description

boot-menu-wait

Amount of time (in milliseconds) to wait at the boot menu prompt before selecting the default boot.

extra-pci-roots

If the target machine has multiple independent root buses set this to a positive value. The SeaBIOS PCI probe will then search for the given number of extra root buses.

ps2-keyboard-spinup

Some PS2 keyboards don't respond to commands immediately after powering on. One may specify the amount of time (in milliseconds) here to allow as additional time for the keyboard to become responsive.

optionroms-checksum

Option ROMs are required to have correct checksums. However, some option ROMs in the wild don't correctly follow the specifications and have bad checksums. Set this to a zero value to allow SeaBIOS to execute them anyways.

s3-resume-vga-init

Set this to a non-zero value to instruct SeaBIOS to run the vga rom on an S3 resume.

screen-and-debug

Set this to a zero value to instruct SeaBIOS to not write characters it sends to the screen to the debug ports. This can be useful when using sgabios.

boot-fail-wait

If no boot devices are found SeaBIOS will reboot after 60 seconds. Set this to the amount of time (in milliseconds) to customize the reboot delay or set to -1 to disable rebooting when no boot devices are found. (This setting is only in git versions after 20120601.)

Trouble reporting

If you are experiencing problems with SeaBIOS, it's useful to increase the debugging level. This is done by running make menuconfig and setting CONFIG_DEBUG_LEVEL to a higher value. A debug level of 8 will show a lot of diagnostic information without flooding the serial port (levels above 8 will frequently cause too much data).

To report an issue, please collect the serial boot log with SeaBIOS set to a debug level of 8 and forward the full log along with a description of the problem to the coreboot mailing list.