Fiasco -- L4-compatible real-time µ-kernel
1 Synopsis
main
[ -nowait ]
[ -nokdb ]
[ -comspeed n ]
[ -comport n ]
[ -hercules ]
[ -serial ] [ -VT[+] ]
[ -serial_esc ]
[ -tbuf_entries n ]
[ -out_buf n ]
[ -esc ]
[ -nofancy ]
[ -no_serial_fifo ]
[ -profile ]
[ -profstart ]
[ -irq0 ]
[ -irqcom | -I- ]
proto=physical_address
2 Description
Fiasco is a new µ-kernel (microkernel) running on x86 PCs intended to
be compatible with the L4/x86 µ-kernel for x86. It implements the L4 ABI
as defined in the L4/x86 Reference Manual. The Fiasco kernel can be
used to construct flexible systems. We at TU Dresden will use it as a
base for our DROPS system which supports a running real-time and
time-sharing application concurrently on one computer. However, Fiasco
is not only suitable for big and complex systems, but also for small,
embedded applications.
3 Options
- -nowait
- Removes the initial ``KDB: init'' breakpoint. The
installation instructions on the Fiasco web site recommend this
option; if you plan to do some serious debugging, you shouldn't use
it.
- -nokdb
- Disables the kernel debugger. Should Fiasco raise an
exception, it will just call the builtin jdb.
- -comspeed n
- Will set the rate of the serial interface to n
bytes/second. 115200 bytes/second is the default.
- -comport n
- Will use COMn for serial
communication. COM2 is the default. Possible values for n are 1
and 2.
- -hercules
- Redirect kernel messages to the Hercules (or
other MGA-compatible) console.
- -nofancy
- Disable serial ``fancy home´´ mode. Very useful when
debugging with jdb and the minicom window has more than 25 lines.
- -no_serial_fifo
- Disable seriel fifo buffer. Might be
required by some older (buggy) UARTs to work properly.
- -serial or -VT[+]
- Will additionally output
kernel messages to the serial interface; this can save you copying
kernel messages by hand. If -nokdb is also enabled, you can
use a terminal program on the host to control Fiasco. If you are
connected to a remote GDB, messages are copied to GDB's console.
- -esc
- Enable esc hack. On every timer interrupt, ask the
keyboard if the Escape key was pressed. If so, do enter into kernel
debugger. Applications (e.g. L4Linux) may be confused by dropped
key events so better use -serial_esc.
- -serial_esc
- Enter jdb on serial receive interrupts. This
is only necessary if kdb was disabled by -nokdb.
- -tbuf_entries n
- Set number of lines to store in the
debugging trace buffer. Default is 200.
- -out_buf n
- Set output buffer for kd_display functions
to n bytes. Default is 4096.
- -profile
- Enable kernel profiling support; you need to
compile it with -DPROFILE for this to work. Profiling needs to
be started with either the -profstart option or using the
kernel-debugger interface. When you terminate Fiasco (e.g., using the
remote debugger), the profiling information is printed in uuencoded
4.4BSD gmon.out format to the serial interface; you can capture it
using a terminal program.
Unfortunately, current versions of GNU `gprof' don't understand the
4.4BSD gmon.out format; the next version hopefully does. I've sent a
patch to the `gprof' maintainer (the patch is also available on
request from me).
- -profstart
- Immediately start profiling after boot. This
option requires the -profile option.
- -irq0
- Enable IRQ0 for user tasks. Normally, IRQ0 is
reserved for kernel use.
- -irqcom or -I-
- Disable for user tasks the IRQ
associated with the serial port used for I/O or the kernel debugger.
- proto=physical_address
- This argument is automatically
added by RMGR when starting Fiasco. It communicates the address of a
template for the kernel's info page which contains configuration
information for Fiasco. For details on the kernel info page, please
see the L4 Reference Manual.
4 Booting
Fiasco should be booted using RMGR. Please see the RMGR manual page
for details.
It is important to load a Sigma0 server along with Fiasco, because
unlike L4/x86, Fiasco doesn't contain its own Sigma0 implementation. Here
is a sample GRUB configuration file (menu.lst) which accomplishes
this:
# RMGR is the boot kernel
kernel= (fd0)/rmgr -configfile -sigma0
# The Fiasco kernel must be the first boot module
module= (fd0)/main -nowait
# Sigma0
module= (fd0)/sigma0
# The RMGR config file (if any) must come just before the boot servers
module= (fd0)/rmgr.cfg
# boot server tasks follow
module= (fd0)/glinux.gz root=/dev/sda5
module= (fd0)/hello
5 Bugs
Many.
Please report bugs to <l4-hackers@os.inf.tu-dresden.de>.
6 See Also
rmgr
L4 Reference Manual
GRUB, the Grand Unified Bootloader
Multiboot
standard proposal
Michael Hohmuth