genode/repos/base-fiasco/doc/fiasco.txt
Norman Feske c450ddcb3d Disambiguate kernel-specific file names
This patch removes possible ambiguities with respect to the naming of
kernel-dependent binaries and libraries. It also removes the use of
kernel-specific global side effects from the build system. The reach of
kernel-specific peculiarities has thereby become limited to the actual
users of the respective 'syscall-<kernel>' libraries.

Kernel-specific build artifacts are no longer generated at magic places
within the build directory (like okl4's includes, or the L4 build
directories of L4/Fiasco and Fiasco.OC, or the build directories of
various kernels). Instead, such artifacts have been largely moved to the
libcache. E.g., the former '<build-dir>/l4/' build directory for the L4
build system resides at '<build-dir>/var/libcache/syscall-foc/build/'.
This way, the location is unique to the kernel. Note that various tools
are still generated somewhat arbitrarily under '<build-dir>/tool/' as
there is no proper formalism for building host tools yet.

As the result of this work, it has become possible to use a joint Genode
build directory that is usable with all kernels of a given hardware
platform. E.g., on x86_32, one can now seamlessly switch between linux,
nova, sel4, okl4, fiasco, foc, and pistachio without rebuilding any
components except for core, the kernel, the dynamic linker, and the timer
driver. At the current stage, such a build directory must still be
created manually. A change of the 'create_builddir' tool will follow to
make this feature easily available.

This patch also simplifies various 'run/boot_dir' plugins by removing
the option for an externally hosted kernel. This option remained unused
for many years now.

Issue #2190
2016-12-23 16:51:32 +01:00

120 lines
3.7 KiB
Plaintext

=============================================
How to use Genode with the Fiasco microkernel
=============================================
Norman Feske, Christian Helmuth
Abstract
########
This documentation describes the process of building and booting the L4/Fiasco
version of Genode. It assumes that you are familiar with basic concepts
described in the introductory documentation of Genode, namely the "How to start
exploring Genode" document.
Preconditions
#############
The Fiasco version of Genode relies on the following components from
the source tree of the Fiasco microkernel and the L4 environment (which also
need additional tools).
Tools
=====
* Gawk
* Bison
* Byacc
* Python
The Fiasco microkernel
======================
Information about Fiasco are provided at its official website:
! http://os.inf.tu-dresden.de/fiasco/prev/
To download the kernel and integrate it with Genode, issue the following
command from within the toplevel directory:
! ./tool/ports/prepare_port fiasco
For the vesa driver on x86 the x86emu library is required and can be downloaded
and prepared by invoking the following command:
! ./tool/ports/prepare_port x86emu
This command will download a prepackaged version of the kernel tested
with Genode. The build process of the kernel is integrated with Genode's
build system. After creating a build directory using 'create_builddir'
with 'fiasco_x86' as argument:
! <genode-dir>/tool/create_builddir fiasco_x86 \
! BUILD_DIR=<build-dir>
From within the new <build-dir>, the kernel can be compiled via
! make kernel/fiasco
When using Genode's run mechanism, there is no need to explicitly build the
kernel. The run environment (see 'tool/run/boot_dir/fiasco') takes care of it.
So you can simple execute run scripts from within the build directory, for
example:
! make run/demo
Behind the scenes
=================
For using the L4/Fiasco kernel, some basic user-level components and libraries
are needed. These are subsumed under the name L4 environment an are organized
as a number of packages. These packages provide two types of components. There
are low-level components for booting up and interfacing to Fiasco and there are
higher-level components that compose a basic OS infrastructure. For Genode, we
only rely on the low-level packages.
Previous versions of Genode included all necessary sources from the L4
environment in the '3rd/fiasco/snapshot' subdirectory. From release 10.02, the
'3rd' directory is no longer part of the release archive and also removed from
the subversion repository. Please download the '3rd_fiasco.tar.bz2' archive.
The source are organized as follows
:'tool': contains the tools that are used by the build processes of
the L4 environment and Fiasco. For example, the build process of Fiasco
relies on the 'preprocess' tool.
:'kernel': contains the Fiasco microkernel.
:'l4': contains the L4-environment source tree. The single packages
are located at 'l4/pkg'.
From all the packages of the L4 environment, the following three are of
interest for using Genode:
:'pkg/l4sys': contains the Fiasco system-call bindings.
The system-call bindings are a set of C-header files that define the
application-programming interface for invoking the system calls of
Fiasco.
:'pkg/sigma0':
Sigma0 is the initial memory manager required to use Fiasco.
:'pkg/bootstrap':
Bootstrap is the program that is started by the boot loader.
After being started, Bootstrap prepares the bare machine to
accommodate Fiasco. On many embedded architectures, bootstrap
is used to create a single binary image containing all boot-time
OS components.
Those components are implicitly built by the Genode build system when
issuing 'make kernel/fiasco'.