Hi, I wrote a bootloader, available here: http://te.to/~ts1/filo/ and here the README:
This is FILO, a bootloader which loads boot images from local filesystem, without help from legacy BIOS services.
Expected usage is to be burned into the BIOS ROM together with LinuxBIOS.
FEATURES
- Console on VGA + keyboard, serial port, or both - Line editing with ^H, ^W and ^U keys to type arbitrary filename to boot - Improved IDE driver derived from Etherboot 5.1 - Support for filesystems: ext2, fat, jfs, minix, reiserfs, and xfs - 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
REQUIREMENT
Only i386 PC architecture is currently supported.
Recent version of GNU toolchain is required to build. I have tested with Debian/woody (gcc 2.95.4, binutils 2.12.90.0.1, make 3.79.1) and Debian/sid (gcc 3.3.2, binutils 2.14.90.0.5, make 3.80).
INSTALL
First invokation of make creates the default Config file. $ make Edit this file as you like. It's fairly straightforward (I hope). $ vi Config Then running make again will build filo.elf, the ELF boot image of FILO. $ make
Use filo.elf as your payload of LinuxBIOS, or a boot image for Etherboot.
USING
At "boot:" prompt, type the name of your boot image in the form: devicename:filename (eg. hda1:/boot/kernel.elf).
FILO supports only IDE hard disk (or compatible) for now. The devicename for IDE disk is same as in Linux (eg. hda1 means the first partition of master device on primary controller).
FILO can boot any bootable ELF images, which include Linux converted by mkelfImage, Etherboot .elf and .zelf, Memtest86, FILO itself, etc.
If AUTOBOOT_FILE is set in Config, FILO tries to boot this file first, and falls back to boot: prompt if it fails. If AUTOBOOT_DELAY is also set, FILO waits specified time in seconds for a key hit before booting AUTOBOOT_FILE. Otherwise it tries to boot AUTOBOOT_FILE immediately unless a key stroke is waiting.
BUG REPORTING
If you have trouble, set DEBUG_ALL in Config and send its console output to me at ts1@tsn.or.jp.
ACKNOWLEDGEMENT
I have taken pieces of code and learned concepts from various standalone programs including GNU GRUB, Etherboot, polled IDE patch by Adam Agnew, Memtest86, LinuxBIOS, and Linux. I must say thanks to all the developers of these wonderful software, especially to Eric Biederman for his great development work in this area.
LICENSE
Copyright (C) 2003 by SONE Takeshi ts1@tsn.or.jp and others. This program is licensed under the terms of GNU General Public License. See the COPYING file for details.
SONE Takeshi wrote:
Hi, I wrote a bootloader, available here: http://te.to/~ts1/filo/ and here the README:
This is FILO, a bootloader which loads boot images from local filesystem, without help from legacy BIOS services.
Great work SONE, this is definitely something I need. Maybe I can give it a try this weekend with the Epia800.
-Steve
* SONE Takeshi ts1@cma.co.jp [030910 16:15]:
Hi, I wrote a bootloader, available here: http://te.to/~ts1/filo/ and here the README:
This is FILO, a bootloader which loads boot images from local filesystem, without help from legacy BIOS services.
Very nice!
When I compiled it, I had to change one line in "makerules" < GCCINCDIR = $(shell $(CC) -print-search-dirs | head -1 | cut -d' ' -f2)include
GCCINCDIR = $(shell $(CC) -print-search-dirs | head -n 1 | cut -d' ' -f2)include
This is required by newer coreutils, but it works fine with older versions.
Stefan
On Thu, Sep 18, 2003 at 04:51:53PM +0200, Stefan Reinauer wrote:
When I compiled it, I had to change one line in "makerules" < GCCINCDIR = $(shell $(CC) -print-search-dirs | head -1 | cut -d' ' -f2)include
GCCINCDIR = $(shell $(CC) -print-search-dirs | head -n 1 | cut -d' ' -f2)include
This is required by newer coreutils, but it works fine with older versions.
Thanks, I'll post a new version of FILO with this fix.
On Fri, Sep 19, 2003 at 04:06:15AM +0900, SONE Takeshi wrote:
On Thu, Sep 18, 2003 at 04:51:53PM +0200, Stefan Reinauer wrote:
When I compiled it, I had to change one line in "makerules" < GCCINCDIR = $(shell $(CC) -print-search-dirs | head -1 | cut -d' ' -f2)include
GCCINCDIR = $(shell $(CC) -print-search-dirs | head -n 1 | cut -d' ' -f2)include
This is required by newer coreutils, but it works fine with older versions.
Thanks, I'll post a new version of FILO with this fix.
Released version 0.2 here: http://te.to/~ts1/filo/
Version 0.2 ts1 2003-09-19 * Added code to pass kernel command line parameter from console. * Changed not to disable automatic boot by ANY key. Now you have to press <Esc> to cancel autoboot. This fixes the problem that FILO gets stuck at boot prompt when a phantom byte is read from a fickle serial or keyboard hardware. Additionaly, now <Enter> key does autoboot immediately. * Fixed build problem with new coreutils. Thanks to Stefan Reinauer stepan@suse.de. * Updated fsys_fat.c and fsys_reiserfs.c from GRUB CVS. * Lots of minor tweaks. * Beginning of PCI layer and a sound driver (what??). Don't worry, it doesn't even get compiled with default configuration.
-- Takeshi