Getting Started with freebios2!
jmiller at actuality-systems.com
Tue May 18 07:03:00 CEST 2004
Disclaimer: I too am a N00B and these are my observations thus far.
They may not be 100% correct, but these things have worked for me. I
hope that they'll help other N00Bz get started.
WHAT IS FREEBIOS2?
Well I stumbled upon freebios2 when I couldn't find support in the
freebios tree for my Tyan s2885. Then I noticed under the CVSWeb
browser for the project the freebios2 directory.
Apparently, this is what will be LinuxBIOS V2. They've done away with
kernel patches, so you don't need to worry about patching the kernel
like in V1. Instead there is an intermediary payload that can be
Etherboot, FILO, or some other loader to get your Linux kernel into
WHY CAN'T I GET THE SOURCES FROM SOURCEFORGE (ANYMORE)?
If you're like me, all of a sudden CVS access stopped working. Well,
they changed the BIND implementation, so the documentation is out of
date. You need to use, "cvs
-d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/freebios login".
There is still no password for anonymous login.
WHERE DO I START?
Build the documentation under freebios2/documentation. It will give you
a solid overview of how the project works, including how to download the
source you just downloaded. ;-)
Freebios2 supports a number of newer boards. Tyan are particularly
well-supported and the EPIA boards are actively being worked on. Look
under, "freebios2/targets..." for the collection.
HOW DO I BUILD FREEBIOS2?
Once you've selected a vendor and mainboard you should execute,
"./buildtarget <vendor>/<board>". This will generate all sources
specific to your mainboard. To make a rom image, start your make in the
freebios2/targets/<vendor>/<board>/<board> directory. If all goes
smoothly you should get a linuxbios.rom image.
HOW DO I FLASH A ROM?
There are a number of methods and I'm not versed enough to cover them
all. But I have successfully used the BIOS flash utility from AMI, and
I currently use a professional Data I/O burner. I spent a lot of time
trying to figure out the proper format to use on my burner. There is no
format; it's just a straight binary image, so use binary mode (on the
Data I/O it's "absolute binary (16)").
There is also a flash-n-burn utility in the source tree. Perhaps
someone on the list can add the specifics of how to get that going on
HOW DO I CHANGE CONFIGURATION OF MY IMAGE?
First take a look at freebios2/targets/<vendor>/<board>/Config.lb. This
is the main configuration file for your ROM image. This is where you
specify what payload to use, and most of the settings that anyone would
care about. Make sure to do a "./buildtarget <vendor>/<board>" whenever
you modify this file.
However, in my case I was running into issues running my dual-processor
board with only one processor. As it turns out there is another
Config.lb located in freebios2/src/mainboard/<vendor>/<board>. This
file controls the contents of some of the generated sources for your
board. To date, this is the only way I was able to prevent my ROM image
from trying to initialize a CPU that wasn't there.
WHY DON'T I SEE ANYTHING HAPPENING?
In most cases the VGA support just isn't there yet. So go find yourself
a null modem cable and hook up your console at 15200-8-N-1, and sit back
and watch the fireworks!
WHAT ABOUT PAYLOADS?
I'm currently exploring this area. The first payload I used
successfully was FILO. No you don't make pastry with it. It is a
bootloader that acts much like LILO. You can get the source here:
If you have an IDE disk with a Linux kernel on it, this is the way to
If you're diskless then you may want to try Etherboot:
http://etherboot.sourceforge.net. This payload gives you the ability to
load over the network, but requires you to configure a DHCP server and
TFTP server at a minimum.
Like LinuxBIOS, Etherboot expects an ELF formatted image, so if you're
loading a kernel across the network you need to run it through
mkelfImage. As of now the correct version to use is 2.5. You can get
the latest sources here:
WHAT ABOUT ZELF?
This is my latest N00B stumbling block, and unfortunately I haven't
found an answer. I know that it's a compressed elf format, but I can't
figure out what I need to do to get elfboot (part of LinuxBIOS) to load
payloads with the ZELF extension. So for now I would recommend N00Bz
stick with ELF format, until we get a definitive answer.
Hope this is helpful, good luck!
Actuality Systems, Inc.
jmiller at acutality-systems.com
More information about the coreboot