< Back to index
LinuxBIOS is a free software project, endorsed by the Free Software Foundation , aimed at replacing the proprietary BIOS firmware found in most computers with a lightweight BIOS designed to perform only the minimum of tasks necessary to load and run a modern 32-bit operating system. The LinuxBIOS project was started in the winter of 1999 in the Advanced Computing Laboratory at Los Alamos National Laboratory.(LinuxBIOS FAQ: [http://www.linuxbios.org/index.php?title=FAQ&oldid=1236#Who_is_working_on_LinuxBIOS.3F Who is working on LinuxBIOS? --> It is licensed under the GNU General Public License. Main contributors have been LANL, AMD, coresystems GmbH and Linux Networx, Inc.
Google sponsors the LinuxBIOS project.
General information
LinuxBIOS usually loads a Linux kernel, but it can load any other stand-alone ELF executable, such as etherboot which can boot Linux from a boot server or ADLO which loads Microsoft Windows 2000/XP. LinuxBIOS can also load almost any operating system from any supported device, such as Myrinet, Quadrics, or SCI cluster interconnects.
LinuxBIOS does whatever hardware initialization Linux doesn't do and lets Linux finish the hardware initialization.
A unique feature of LinuxBIOS is that the x86 version runs in 32-bit mode after executing only sixteen instructions (almost all other x86 BIOSes run exclusively in 16-bit mode). Running in 32-bit mode makes it run very fast, its current cold boot record is 3 seconds.
Although "Linux" is in the name, LinuxBIOS can boot other kernels. It can also boot a Plan 9 from Bell Labs kernel directly.
Developing and debugging LinuxBIOS
Since LinuxBIOS must initialize the bare hardware, it must be ported to every chipset and motherboard that it supports. Before initializing RAM, LinuxBIOS initializes the serial port, so it can send out debug text to a connected terminal emulator. It can also send byte codes to port 0x80 that are displayed on a two-hex-digit display of a connected POST card. Another aid is the BIOS Savior, which is a combination of two BIOS devices that plugs into the BIOS socket and has a manual switch to select between them. A more expensive alternative is an EPROM/flash programmer. There are also CPU emulators that either replace the CPU or connect via a JTAG port. Code can be built on, or downloaded to, BIOS emulators rather than flashing the BIOS device.
Initializing DRAM
The most difficult hardware that LinuxBIOS initializes is the DRAM controllers and DRAM. This is particularly difficult because until the RAM is initialized, there is no RAM available for use. The way to initialize DRAM controllers and DRAM without using RAM is to use the CPU's general purpose registers. To make this hard task easy, a C compiler that uses registers instead of RAM, called romcc, was built. Using romcc, it is relatively easy to make SMBus accesses to the SPD ROMs of the DRAM DIMMs, et cetera that allows the RAM to be used.
This entry uses material from from Wikipedia, the leading user-contributed encyclopedia. It is licensed under the GNU Free Documentation License. Disclaimer.