[[GRUB2]] is the standard bootloader for Linux and other Unix-like operating systems.

+

[[SeaBIOS]] is an open-source implementation of the standard bootstrap callback layer implemented by an x86 BIOS. It enables booting from unmodified CDROMs and hard drives.

−

You can use GRUB2 as a coreboot payload, too, in order to boot and operating system from a hard drive, for instance.

+

SeaBIOS has been tested with Linux, NetBSD, OpenBSD, FreeDOS, and Windows XP/Vista/7. Classic GRUB, lilo, and isolinux work well with SeaBIOS. Other x86 bootloaders and operating systems will likely also work.

−

==== FILO ====

+

==== GRUB 2 ====

−

[[FILO]] is a simple bootloader with filesystem support.

+

You can use [[GRUB2]] as a coreboot payload, in order to boot an operating system from a hard drive, for instance. You can also boot via an existing GRUB2 on your hard drive by using [[SeaBIOS]] as your coreboot payload.

−

It will be deprecated in favor of [[GRUB2]] soon.

+

[[Payloads#GRUB_legacy|GRUB legacy]] is not suitable as coreboot payload, though.

−

==== Etherboot ====

+

==== GRUB legacy ====

+

+

The old GRUB 1 (a.k.a. "GRUB legacy") cannot be directly used as a coreboot payload.

+

+

However, you can use [[SeaBIOS]] as payload which allows you to boot any OS via a GRUB legacy you might still have installed on your harddrive.

+

+

==== FILO ====

+

+

[[FILO]] is a simple bootloader with filesystem support. It can boot from hard drives (among others), and does not require any legacy BIOS callbacks (unlike [[Payloads#GRUB_legacy|GRUB legacy]], for example).

+

+

==== Etherboot / GPXE / iPXE ====

[[Etherboot]] is a network bootloader. It provides a direct replacement for proprietary PXE ROMs, with many extra features such as DNS, HTTP, iSCSI, etc.

[[Etherboot]] is a network bootloader. It provides a direct replacement for proprietary PXE ROMs, with many extra features such as DNS, HTTP, iSCSI, etc.

Line 23:

Line 33:

Older versions of Etherboot included parts of [[FILO]], and thus supported SATA and USB booting.

Older versions of Etherboot included parts of [[FILO]], and thus supported SATA and USB booting.

−

The new [[GPXE]] is not yet supported, various code changes are required before it can work with coreboot.

+

The new [[GPXE]] is not yet supported directly, various code changes are required before it can work as a coreboot payload. However, GPXE works well when run with [[SeaBIOS]].

+

+

[[iPXE]] is a fork of [[GPXE]] with some of the original developers. iPXE is more active nowadays.

==== Open Firmware ====

==== Open Firmware ====

Line 31:

Line 43:

==== OpenBIOS ====

==== OpenBIOS ====

−

[[OpenBIOS]] &mdash; IEEE1275-1994 Open Firmware.

+

[[OpenBIOS]], an open-source IEEE1275-1994 Open Firmware implementation, is also usable as a coreboot payload.

+

+

==== Tiano Core ====

+

+

[[Image:Tianocoreboot.png|160px|right]]

+

+

[[TianoCore]] is a bootloader providing the UEFI interface.

+

+

<br clear="all" />

=== Operating systems ===

=== Operating systems ===

Line 37:

Line 57:

==== Linux ====

==== Linux ====

−

Coreboot can use a [http://www.kernel.org Linux] kernel as payload directly. That is, the kernel is included in the ROM chip where coreboot resides.

+

coreboot can use a [http://www.kernel.org Linux] kernel as payload directly. That is, the kernel is included in the ROM chip where coreboot resides.

−

Alternatively, you can also boot a Linux kernel from your hard drive using either the [[FILO]] or [[GRUB2]] payloads, of course.

+

Alternatively, you can also boot a Linux kernel from your hard drive using either the [[FILO]], [[GRUB2]], or [[SeaBIOS]] payloads.

==== FreeBSD ====

==== FreeBSD ====

−

[[Booting FreeBSD using coreboot|FreeBSD]] can be booted via coreboot with the help of [[ADLO]].

+

[[FreeBSD]] can be booted via coreboot using [[SeaBIOS]].

==== OpenBSD ====

==== OpenBSD ====

−

[http://openbsd.org/ OpenBSD] can also be booted via coreboot with the help of [[ADLO]].

+

[http://openbsd.org/ OpenBSD] can also be booted via coreboot using [[SeaBIOS]].

This use-case is not well-tested yet, though.

This use-case is not well-tested yet, though.

+

+

==== NetBSD ====

+

+

[http://www.netbsd.org/ NetBSD]/x86 boot code is known to work with [[SeaBIOS]].

+

+

[[User:Jakllsch|jakllsch]] has worked on a partially-complete port of the x86 boot code to the role of native payload. However, with the advent of [[SeaBIOS]], this is likely to become less of a priority. Consult the [[NetBSD]] wiki page for further information.

+

+

==== FreeDOS ====

+

+

[[FreeDOS]] can be booted via coreboot using [[SeaBIOS]].

==== Windows ====

==== Windows ====

−

[[Booting Windows using coreboot|Windows]] can be booted with the help of [[ADLO]].

+

[[Booting Windows using coreboot|Windows]] can be booted with the help of [[SeaBIOS]].

[[OpenSolaris]] has multiboot compliant kernels, and so it is possible to boot it with GRUB2 (pending some bug fixes).

+

[[OpenSolaris]] has multiboot compliant kernels, and so it is possible to boot it with [[GRUB2]] (pending some bug fixes).

−

Some Sun engineers even worked on it, see http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6475349 for information.

+

Some Sun engineers even worked on it, see [http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6475349 this article] for more information.

−

Currently, GRUB2 refuses to load the kernel due to a small bug in the multiboot header of the kernel, but the kernel still refuses to

+

Currently, GRUB2 refuses to load the kernel due to a small bug in the multiboot header of the kernel, but the kernel still refuses to work if that is worked around. Maybe they reintroduced some BIOS calls again?

−

work if that is worked around. Maybe they reintroduced some BIOS calls again?

+

See also [http://blogs.sun.com/szhou/entry/booting_solaris_from_linuxbios this blog entry].

See also [http://blogs.sun.com/szhou/entry/booting_solaris_from_linuxbios this blog entry].

Line 77:

Line 106:

It can be run from within GRUB, but also as a coreboot payload (i.e. included in your ROM chip).

It can be run from within GRUB, but also as a coreboot payload (i.e. included in your ROM chip).

+

'''Note:''' Current versions of memtest86 may not work anymore due to changes in coreboot. A patch is being worked on.

+

+

+

[[Memtest86+]] is based on memtest86, but provide more up-to-date version of this useful tool.

+

+

Current version Memtest86+ v4.20 can be run from within GRUB or as a coreboot payload.

'''Note:''' ADLO has been superseded by [[SeaBIOS]]. Do not use it anymore.

+

</div>

==== Libpayload ====

==== Libpayload ====

Line 91:

Line 130:

[[Image:Coreinfo_pci.png|160px|right]]

[[Image:Coreinfo_pci.png|160px|right]]

[[coreinfo]] is a coreboot payload which can display various system information.

[[coreinfo]] is a coreboot payload which can display various system information.

+

<br clear="all" />

+

+

==== Bayou ====

+

+

[[Image:Bayou-screenshot-menu.jpg|160px|right]]

+

[[Bayou]] is the working name for a coreboot payload that can choose, load and run other payloads from a LAR archive on the ROM.

+

+

'''Note:''' Bayou may no longer be in a working state right now, it may or may not be fixed and worked on again. In the meantime, [[SeaBIOS]] also provides a mechanism to include multiple payloads in a ROM image and select either of them at boot-time.

+

<br clear="all" />

+

+

==== nvramcui ====

+

+

Nvramcui is a coreboot payload which can modify the nvram contents.

+

It lives at payloads/nvramcui in the coreboot repository.

<br clear="all" />

<br clear="all" />

Line 99:

Line 152:

[[Image:Coreboot invaders.png|160px|right]]

[[Image:Coreboot invaders.png|160px|right]]

−

[[GRUB invaders]] multi-boot compliant ''space invaders'' game.

+

[[GRUB invaders]] is a multi-boot compliant ''space invaders'' game.

It can either be started from within GRUB (as a "kernel"), or it can be used as a coreboot payload.

It can either be started from within GRUB (as a "kernel"), or it can be used as a coreboot payload.

The '''payload''' was originally intended to be a Linux kernel stored in flash. Flash ROM growth rate was anticipated optimistically however, and today there are not many mainboards that actually have enough flash ROM room for a kernel. 512KB can be seen here-and-there and a few boards come with 1MB or 2MB. Recent kernels really want at least 1MB, and then you'll only have room for 300-400 KB of initial ramdisk, which could be too small too, depending on the application.

−

flash. Flash ROM growth rate was anticipated optimistically however,

+

−

today there are not many mainboards that actually have enough flash

+

−

ROM room for a kernel. 512KB can be seen here-and-there and a few

+

−

boards come with 1MB. Recent kernels really want that MB, and then

+

−

you'll only have room for 300-400 KB of initial ramdisk, which could

+

−

be too small too, depending on the application. During testing, a payload may also be downloaded via X-Modem from the serial debug console, saving flashing time.

+

−

+

−

So, other payloads are used; the two major ones are [[FILO]] and

+

−

[[Etherboot]]. FILO loads a kernel from a filesystem on an IDE device and

+

−

Etherboot loads a kernel from the network or from a filesystem on an

+

−

IDE device.

+

−

If you're using FILO there is no Linux kernel until FILO loads it,

+

So, other payloads are used; the two major ones are [[FILO]] and [[SeaBIOS]]. Also have a look at [[GRUB2]] and [[Etherboot]] (soon to be deprecated in favor of [[GPXE]]).

−

and the kernel loaded by FILO (or Etherboot) can absolutely be the

+

−

one you want to run in your system. Just set it up with the correct

+

−

root and init commandline so that it can start init.

+

Revision as of 19:59, 10 January 2013

coreboot in itself is "only" minimal code for initializing a mainboard with peripherals. After the initialization, it jumps to a payload.

Payloads

Bootloaders

SeaBIOS

SeaBIOS is an open-source implementation of the standard bootstrap callback layer implemented by an x86 BIOS. It enables booting from unmodified CDROMs and hard drives.

SeaBIOS has been tested with Linux, NetBSD, OpenBSD, FreeDOS, and Windows XP/Vista/7. Classic GRUB, lilo, and isolinux work well with SeaBIOS. Other x86 bootloaders and operating systems will likely also work.

GRUB 2

You can use GRUB2 as a coreboot payload, in order to boot an operating system from a hard drive, for instance. You can also boot via an existing GRUB2 on your hard drive by using SeaBIOS as your coreboot payload.

OpenBSD

NetBSD

jakllsch has worked on a partially-complete port of the x86 boot code to the role of native payload. However, with the advent of SeaBIOS, this is likely to become less of a priority. Consult the NetBSD wiki page for further information.

FreeDOS

Windows

OpenSolaris

OpenSolaris has multiboot compliant kernels, and so it is possible to boot it with GRUB2 (pending some bug fixes).
Some Sun engineers even worked on it, see this article for more information.

Currently, GRUB2 refuses to load the kernel due to a small bug in the multiboot header of the kernel, but the kernel still refuses to work if that is worked around. Maybe they reintroduced some BIOS calls again?

Libpayload

Coreinfo

coreinfo is a coreboot payload which can display various system information.

Bayou

Bayou is the working name for a coreboot payload that can choose, load and run other payloads from a LAR archive on the ROM.

Note: Bayou may no longer be in a working state right now, it may or may not be fixed and worked on again. In the meantime, SeaBIOS also provides a mechanism to include multiple payloads in a ROM image and select either of them at boot-time.

nvramcui

Nvramcui is a coreboot payload which can modify the nvram contents.
It lives at payloads/nvramcui in the coreboot repository.

History

The payload was originally intended to be a Linux kernel stored in flash. Flash ROM growth rate was anticipated optimistically however, and today there are not many mainboards that actually have enough flash ROM room for a kernel. 512KB can be seen here-and-there and a few boards come with 1MB or 2MB. Recent kernels really want at least 1MB, and then you'll only have room for 300-400 KB of initial ramdisk, which could be too small too, depending on the application.

So, other payloads are used; the two major ones are FILO and SeaBIOS. Also have a look at GRUB2 and Etherboot (soon to be deprecated in favor of GPXE).