GSoC/GCI Archive
Google Summer of Code 2009

coreboot

Web Page: http://www.coreboot.org/GSoC

Mailing List: coreboot@coreboot.org

What is coreboot?

coreboot (formerly known as LinuxBIOS) is a Free Software project aimed at replacing the proprietary BIOS (firmware) you can find in most of today's computers.

It performs just a little bit of hardware initialization and then executes a so-called payload. Some of the many possible payloads are: a Linux kernel, FILO, GRUB2, OpenBIOS, Open Firmware, SmartFirmware, GNUFI (UEFI), Etherboot, SeaBIOS (for booting Windows XP, Windows Vista, Windows 7, NetBSD and Linux), ADLO (for booting Windows 2000 and OpenBSD), Plan 9, or memtest86.

The initial motivation for the project was maintenance of large clusters, but unsurprisingly, interest and contributions have come from people with varying backgrounds.

The latest version of coreboot can be used in a wide variety of scenarios including clusters, embedded systems, desktop PCs, servers, and more.

Why do we need coreboot?

Why do we need coreboot for cluster maintainance? Current PCs used as cluster nodes depend on a vendor-supplied BIOS for booting. The BIOS in turn relies on inherently unreliable devices such as floppy disks and hard drives to boot the operating system.

In addition, current BIOS software is unable to accommodate non-standard hardware making it difficult to support experimental work.

The BIOS is slow and often erroneous and redundant and, most importantly, maintenance is a nightmare. Imagine walking around with a keyboard and monitor to every one of the 1024 nodes in a cluster to change one BIOS setting.

coreboot with Linux as a payload (other payloads are possible!) decompresses the Linux kernel straight out of Flash and essentially requires no moving parts (other than maybe a fan). It does a minimal amount of hardware initialization before jumping to the kernel start and lets Linux do the rest.

As a result, it is much faster (current record 3 seconds), which has sparked interest in the consumer electronics community as well.

Moreover, updates can be performed over the network. Using a real operating system to boot another operating system provides much greater flexibility than using a simple netboot program or the BIOS. Because Linux is the boot mechanism, it can boot over standard Ethernet or over other interconnects such as Myrinet, Quadrics, or SCI. It can use SSH connections to load the kernel, or it can use the InterMezzo caching file system or traditional NFS. Cluster nodes can be as simple as they need to be – perhaps as simple as a CPU and memory, no disk, no floppy, and no file system. The nodes will be much less autonomous thus making them easier to maintain.

Why do we need coreboot for other purposes?

Some aspects of DRM are not travelling well with the idea of a free computer system. As many computer magazines already pointed out, there may be future restrictions imposed by BIOSes, that a customer is little aware of before purchase and might not harmonize with the idea of freedom and/or security in some cases.

 

Projects

  • Add Support USB ROM for SeaBIOS SeaBIOS is the way to to boot all kinds of different operating systems.It support both PATA and SATA disk to boot various operating systems. It is also a coreboot payload that implements 16bit BIOS interrupts as they are needed by nearly all boot loaders today. One major feature that we're desperately lacking is USB stick/disk/cdrom booting from SeaBIOS. The main job may be add USB support for SeaBIOS which should be implemented as a PCI option rom.
  • All Virtual All The Time - Virtualization-aware BIOS, part 2 This is a follow-up of last year's GSoC project that built a coreboot BIOS payload consisting of a KVM-enabled Linux kernel. It could start OpenBSD's installer, but crashed soon after because Thread Local Storage support was missing from uClibc. This year's project intends to build upon last year's project and implement the things that didn't make it last year, namely fix the cause of the crashes and make some improvements to allow it to be used in mass production and deployed on real hardware.
  • Geode LX VGA Bios Currently on Geode LX hardware there is no video output until after an operating system has loaded. During this project I would create a VGA Bios to provide video hardware initialization and standard legacy video modes at boot time. This will allow simple payloads/programs and power on debugging data to be displayed on geode video hardware.