12.2. BIOS

Before setting up any hardware you should have a look into the BIOS. Often you may find a solution already there, e.g. options to set up the display, APM or ACPI, DMA, IrDA, PCMCIA, sound, SpeedStep, and more.

If you run into unresolvable trouble when configuring the hardware, try a BIOS upgrade from the manufacturer. For this task you usually need one of the Microsoft so-called operating systems. Or at least a DOS disk or CD.

Flashing BIOSes has become often quite complex as both DOS and floppies are fading away. Things aren't any easier when running exclusively GNU/Linux. Luckily, it is possible to create a bootable CD-ROM with GNU/Linux, which enables one to actually flash a BIOS using a DOS utility without requiring Windows, MS-DOS or a floppy drive.

Some newer laptops e.g. ASUS M5200A are equipped with a BIOS, which is able to update itself.

The Motherboard Flash Boot CD from Linux Mini HOWTO gives a short summary of how to create a boot disk to flash a BIOS on a PC, from Linux (or another Unix) when one has no floppy drive and no access to a DOS/Windows machine.

LinuxBIOS aims to replace the normal BIOS found on PCs, Alphas, and other machines with a Linux kernel that can boot Linux from a cold start. LinuxBIOS is primarily Linux - about 10 lines of patches to the current Linux kernel. Additionally, the startup code - about 500 lines of assembly and 5000 lines of C - executes 16 instructions to get into 32-bit mode and then performs DRAM and other hardware initialization required before Linux can take over. There are even two reports about LinuxBIOS on laptops.

Alternative approaches are OpenBIOS and FreeBIOS.

12.2.1. SMBios

Desktop Management Interface (DMI) Standards generate a standard framework for managing and tracking components in a desktop pc, notebook or server. DMI was the first desktop management standard. The DMI Home Page is a repository of all DMI-related information from the specification to tools to support to the Product Registry of DMI-certified products.

Dmidecode reports information about your system's hardware as described in your system BIOS according to the SMBIOS/DMI standard (see a sample output). This information typically includes system manufacturer, model name, serial number, BIOS version, asset tag as well as a lot of other details of varying level of interest and reliability depending on the manufacturer. This will often include usage status for the CPU sockets, expansion slots (e.g. AGP, PCI, ISA) and memory module slots, and the list of I/O ports (e.g. serial, parallel, USB).

There is also an alternative implementation of a DMI table decoder. Libsmbios is a cross-platform library intended to be used to obtain common information available in a BIOS using a unified API. Currently, it can programmatically access any information in the SMBIOS tables. It also has the ability to obtain Dell system-specific information such as the Dell System ID number, service tag, and asset tag. Future plans include APIs for $PIR and mptable mapping. There is a C API for some of the more commonly used functions, and example binaries to show off most of the facilities.