coreboot

coreboot
coreboot
Graphic of a running hare in black and white above text "coreboot" in lowercase sans-serif font.
Original author(s) Ronald G. Minnich, Eric Biederman, Olli Lo, Stefan Reinauer, the coreboot community
Initial release 1999
Stable release 4.0 / February 8, 2010; 21 months ago (2010-02-08)
Platform x86 x86-64 (WiP:[1] ARM)
Type Firmware
License GNU General Public License
Website coreboot.org

Coreboot (formerly known as LinuxBIOS[2]) is a free software project, endorsed by the Free Software Foundation,[3] aimed at replacing the proprietary BIOS firmware found in most computers with a lightweight system designed to perform only the minimum of tasks necessary to load and run a modern 32-bit or 64-bit operating system.

Contents

History

The coreboot project was started in the winter of 1999 in the Advanced Computing Laboratory at Los Alamos National Laboratory (LANL).[4] The goal was a BIOS that would start fast and handle errors smartly.[5] It is licensed under the terms of the GNU General Public License (GPL). Main contributors have been LANL, AMD, coresystems GmbH and Linux Networx, Inc, as well as motherboard vendors MSI, Gigabyte and Tyan, by offering coreboot next to their standard BIOS or providing specifications of the hardware interfaces for some of their recent motherboards. However, Tyan seems to have dropped support of coreboot.[citation needed] Google partly sponsors the coreboot project.[6] CME Group, a cluster of futures exchanges, began supporting the coreboot project in 2009.[7]

Code from Das U-Boot was assimilated to enable support for the ARM architecture[8].

Supported platforms

Besides x86 and x86-64 architectures, coreboot support also exists for the AMD Geode solutions. Support started with the Geode GX processor developed by AMD for the OLPC, Artec Group then added Geode LX support for its model DBE61 ThinCan. Recently, that code was adopted by AMD and further polished for the OLPC after they upgraded to the Geode LX platform. That code is now being further developed by the coreboot community to support other AMD Geode solutions. Coreboot can be flashed onto an AMD Geode platform using Flashrom.

From that initial development on AMD Geode based platforms, coreboot support has been extended onto many AMD processors and chipsets. The processor list includes Family 0Fh and 10h (K8 core), and recently Family 14h (Bobcat core, Fusion APU). Coreboot support also extends to AMD chipsets: RS690, RS7xx, SB600, and SB8xx. It is expected that as new processors and chipsets are introduced, coreboot will quickly support them as well.

Design

Coreboot usually loads a Linux kernel, but it can load any other stand-alone ELF executable, such as Etherboot, which can boot Linux over a network, or SeaBIOS[9], which can load Linux, Microsoft Windows 2000 and later, and *BSD (previously, Windows 2000/XP and OpenBSD support was provided by ADLO[10][11]). Coreboot can also load almost any operating system from any supported device, such as Myrinet, Quadrics, or SCI cluster interconnects. Some OSes (such as Windows 2000/XP/Vista/7 and *BSD) require legacy BIOS functions which are provided by SeaBIOS.

A unique feature of coreboot is that the x86 version runs in 32-bit mode after executing only ten instructions[12] (almost all other x86 BIOSes run exclusively in 16-bit mode). This is similar to the modern UEFI firmware, which is used on Intel-based Macintosh computers and other newer PC hardware.

Coreboot can boot other kernels, or pass control to a boot loader to boot a kernel/image instead. It can also boot a Plan 9 from Bell Labs kernel directly[clarification needed]. A coreboot-capable version of GNU GRUB 2 exists.

By default, coreboot does not provide BIOS call services. A payload called SeaBIOS can be used to provide BIOS calls and thus allow coreboot to load operating systems that require those services, however most modern operating systems access hardware in another manner and only use BIOS calls during early initialization and as a fallback mechanism.

Developing and debugging coreboot

Since coreboot must initialize the bare hardware, it must be ported to every chipset and motherboard that it supports. Before initializing RAM, coreboot initializes the serial port (addressing cache and registers only), so it can send out debug text to a connected terminal. It can also send byte codes to port 0x80 that are displayed on a two-hex-digit display of a connected POST card. Another porting aid is the commercial "RD1 BIOS Savior" product from IOSS,[13] which is a combination of two boot memory devices that plugs into the boot memory socket and has a manual switch to select between the two devices. The computer can boot from one device, and then the switch can be toggled to allow the computer to reprogram or "flash" the second device. A more expensive alternative is an external EPROM/flash programmer. There are also CPU emulators that either replace the CPU or connect via a JTAG port, with the Sage SmartProbe[14] being an example. Code can be built on, or downloaded to, BIOS emulators rather than flashing the BIOS device.

Payloads

Coreboot can load a payload. Payloads can be written using the libpayload helper-library, but it is not required. Existing payloads include:

  • SeaBIOS, a tiny implementation of x86 BIOS, written mostly in 16-bit C using the GNU C compiler. It is able to boot traditional PC operating systems.
  • FILO, a GRUB-like bootloader with USB boot support.
  • Etherboot, it can boot an operating system over the network
  • gPXE, the successor to Etherboot, works when run under SeaBIOS.
  • TianoCore
  • A branch of Das U-Boot used by Google for Chromium OS[15]

Initializing DRAM

The most difficult hardware that coreboot initializes is the DRAM controllers and DRAM. In some cases, technical documentation on this subject is NDA restricted or unavailable. RAM initialization is particularly difficult because before the RAM is initialized it cannot be used. Therefore, to initialize DRAM controllers and DRAM, the initialization code may have only the CPU's general purpose registers or Cache-as-RAM as temporary storage.

romcc, a C compiler that uses registers instead of RAM, eases the task. Using romcc, it is relatively easy to make SMBus accesses to the SPD ROMs of the DRAM DIMMs, that allows the RAM to be used.

With newer x86 processors, the processor cache can be used as RAM until DRAM is initialized. The processor cache has to be initialized into Cache-as-RAM[16] mode as well, but this needs fewer instructions than initializing DRAM. Also, the Cache-as-RAM mode initialization is specific to CPU architectures, thus more generic than DRAM initialization, which is specific to each chipset and mainboard.

See also

References

Further reading

External links


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Look at other dictionaries:

  • Coreboot — Entwickler: coreboot Team Betriebssystem: unterstützt diverse Betriebssysteme Kategorie: hardwarenahe Software Lizenz: GNU GPL …   Deutsch Wikipedia

  • coreboot — Entwickler coreboot Team Betriebssystem unterstützt diverse Betriebssysteme Kategorie …   Deutsch Wikipedia

  • coreboot — Autor Ronald G. Minnich, Eric Biederman, Olli Lo, Stefan Reinauer, comunidad coreboot coreboot.org Información general Lanzamiento 1999 …   Wikipedia Español

  • Coreboot — Тип Микропрограмма (BIOS) Разработчик Ronald G. Minnich Версия v2 Тестовая версия v3 Лицензия GNU General Public License …   Википедия

  • coreboot — Тип Микропрограмма (BIOS) Разработчик Ronald G. Minnich Последняя версия v4 Лицензия GNU General Public License Сайт www.coreboot.org …   Википедия

  • Coreboot — Plus d un million de dis …   Wikipédia en Français

  • coreboot — Plus d un million de dispositifs utilisent coreboot …   Wikipédia en Français

  • Coreboot — Saltar a navegación, búsqueda Crecimiento de LinuxBios desde 2002 a 2007. CoreBoot es un proyecto que se conocía con el nombre de LinuxBIOS, siendo de software libre, respaldado por la Free Software Foundation (FSF) …   Wikipedia Español

  • Coreboot — Infobox Software name = Coreboot caption = Coreboot author = Ronald G. Minnich, Eric Biederman, Olli Lo, Stefan Reinauer, the coreboot community developer = released = 1999 latest release version = latest release date = latest preview version =… …   Wikipedia

  • LinuxBIOS — coreboot Entwickler: coreboot Team Betriebssystem: unterstützt diverse Betriebssysteme Kategorie: hardwarenahe Software Lizenz: GNU GPL …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”