mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-30 10:38:55 +00:00
5085ad36c3
Fix #1897
137 lines
4.2 KiB
Plaintext
137 lines
4.2 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
|
|
|
|
When using Genode's run mechanism, there is no need to explicitly
|
|
build the kernel. The run environment (see 'base-fiasco/run/env')
|
|
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.
|
|
|
|
To build all components under '3rd/fiasco' after extracting the
|
|
archive, issue the following commands:
|
|
|
|
! mkdir <build-dir>
|
|
! make -C 3rd/fiasco BUILD_DIR=<build-dir>/3rd build
|
|
|
|
The specified '<build-dir>' must be the absolute path to the
|
|
directory, which will contain the build directories for the third party
|
|
software and the Genode build directory. After the build, your compound
|
|
build directory contains the following subdirectories:
|
|
|
|
:'fiasco_x86':
|
|
|
|
All generated files and the final binary of Fiasco reside here.
|
|
|
|
:'l4env':
|
|
|
|
L4 environment binaries and header files.
|
|
|