Difference between revisions of "FILO"

From coreboot
Jump to: navigation, search
(Additional Information)
Line 74: Line 74:
* It uses libpayload from Uwe Hermann and Jordan Crouse
* It uses libpayload from Uwe Hermann and Jordan Crouse
== Additional Information ==
== Troubleshooting ==
=== FILO on the ARIMA HDAMA ===
If you experience trouble compiling or using FILO, please report with a build log or detailed error description to the [[Mailinglist|coreboot mailing list]].
This is a quick guide for getting coreboot up and running on the Arima HDAMA dual Opteron mainboard. If there are blanks to be filled in, go ahead and either ask on the [[Mailinglist|coreboot mailing list]] or you can reach me at cro_marmot_at_comcast.net. -- David Hendricks
Quick coreboot install guide for HDAMA,
David W. Hendricks, May 13 2004
Requirement: Kernel with framebuffering either in an initrd or compiled
statically in. Do not enable the "no BIOS init" option for ATi Mach64
framebuffering. An example .config can be found here:
==== Building coreboot ====
1. Grab the latest CVS code from https://sourceforge.net/cvs/?group_id=3206
2. Add the following lines to src/mainboard/arima/hdama/Config.lb for VGA
  ## ATI Rage XL framebuffering graphics driver
  dir /drivers/ati/ragexl
3. Edit the targets/arima/hdama/Config.lb file and add this for VGA:
4. Select a payload. Example:
  payload /usr/src/filo-0.4.1_btext/filo.elf
I'll elaborate on this a little later.
5. Run "buildtarget arima/hdama" from the targets/ directory. cd to the
arima/hdama/hdama directory and run "make"
6. If all went well during the build process, you should have a coreboot.rom
image in targets/arima/hdama/hdama/ .
Back to #4 -- FILO is a file loader for ELF images. It provides
minimal bootloader functionality. To build a FILO payload:
1. Download FILO with BText for optional VGA:
2. Decompress, edit Config. If you're booting off a disk, you can use a
LILO-like line to boot a kernel image. Example:
AUTOBOOT_FILE = "hda1:/boot/x86_64 root=/dev/hda2 console=ttyS0,115200 console=tty0 vga=792 video=atyfb:mode:1024x768"
Booting a kernel off of the flash your BIOS is on requires that you know exactly
it's located. If you do know this information, you can use AUTOBOOT_FILE =
"mem@0x00000000" where 0x00000000 is the actual location in hexadecimal.
Also, make sure you have proper filesystem
support for whichever partition has your kernel image. Example: FSYS_EXT2FS = 1
An example FILO config file can be found here:
3. Run "make" and you should now have a filo.elf ELF image. Use this as your
payload in step #4 for building coreboot.
==== Troubleshooting ====
Q: coreboot.strip is too big, image is greater than 64KB
A: A good way to reduce image size is simply to reduce the log level. Change
these lines in your targets/arima/hdama/Config.lb file:
You can bring them down gradually. I've found that "7" works well with the
freebios source I downloaded before writing this.
==== Installation ====
Installing SuSE 9.0 AMD64 on a Solo-System:
FILO version 0.4.1 (stepan@prokofjieff) Thu Oct 30 13:29:16 CET 2003
Press <Enter> for default boot, or <Esc> for boot prompt... 
boot: hdc:/boot/loader/linux initrd=/boot/loader/initrd console=ttyS0,115200n8
== Notes ==
== Notes ==

Revision as of 15:49, 31 August 2008

FILO trying to load menu.lst.
FILO prompt.

FILO is a bootloader which loads boot images from a local filesystem, without help from legacy BIOS services.

Expected usage is to flash it into the BIOS ROM together with coreboot.

Download FILO

Download the latest version of FILO from Subversion with

$ svn co svn://coreboot.org/filo/trunk/filo

You can also browse the source code online at http://openbios.org/viewvc/trunk/?root=FILO


  • Supported boot devices: IDE hard disk, SATA hard disk, CD-ROM, and system memory (ROM)
  • Supported filesystems: ext2, fat, jfs, minix, reiserfs, xfs, and iso9660
  • Supported image formats: ELF and [b]zImage (a.k.a. /vmlinuz)
  • Supports boot disk image of El Torito bootable CD-ROM. "hdc1" means the boot disk image of the CD-ROM at hdc.
  • Supports loading image from raw device with user-specified offset
  • Console on VGA + keyboard, serial port, or both
  • Line editing with ^H, ^W and ^U keys to type arbitrary filename to boot
  • Full support for the ELF Boot Proposal (where is it btw, Eric)
  • Auxiliary tool to compute checksum of ELF boot images
  • Full 32-bit code, no BIOS calls
  • uses libpayload


Only the x86 (x64) architecture is currently supported. Some efforts have been made to get FILO running on PPC. Contact the coreboot mailinglist for more information.

x64/AMD 64 machines work fine when compiling FILO in 32-bit mode. (coreboot uses 32-bit mode and Linux kernel does the transition to 64-bit mode)

Recent version of GNU toolchain is required to build.

We have tested with Debian/woody (gcc 2.95.4, binutils, make 3.79.1), Debian/sid (gcc 3.3.2, binutils, make 3.80) and different versions of SUSE Linux from 9.0 to 10.3.

On AMD64 for Debian install the gcc-multilib package.


You need to compile libpayload (included via svn:externals in FILO)

 $ cd libpayload
 $ make defconfig
 $ make


Configure FILO using the Kconfig interface:

 $ make menuconfig


Then running make again will build filo.elf, the ELF boot image of FILO.

 $ make

Use build/filo.elf as your payload of coreboot, or a boot image for Etherboot.


  • This software was originally developed by SONE Takeshi <ts1@tsn.or.jp>
  • It has been significantly enhanced is now maintained by Stefan Reinauer.
  • It uses libpayload from Uwe Hermann and Jordan Crouse


If you experience trouble compiling or using FILO, please report with a build log or detailed error description to the coreboot mailing list.


To boot a CD-ROM or DVD you only need to specify the drive without a partition number. For example to boot to the primary drive on the secondary IDE channel you would use hdc and not hdc1 in FILO.

If you are using FILO with CONFIG_USE_GRUB, and want to boot to your Linux install disk you have to do a mixture of GRUB and FILO commands.

Like GRUB you have to append a kernel (and parameters), then an initrd, and give a boot command. Like FILO you have to give absolute paths.

Example to boot to a GeeXboX install CD-ROM:

filo> kernel hdc:/GEEXBOX/boot/vmlinuz root=/dev/ram0 rw init=linuxrc boot=cdrom installator

Press <ENTER>

filo> initrd hdc:/GEEXBOX/boot/initrd.gz

Press <ENTER>

filo> boot

Press <ENTER>

Your system will now boot right into the Linux install.