mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-22 15:02:25 +00:00
129 lines
4.3 KiB
Plaintext
129 lines
4.3 KiB
Plaintext
|
|
==============================
|
|
Genode on the OKL4 microkernel
|
|
==============================
|
|
|
|
|
|
Stefan Kalkowski
|
|
|
|
|
|
OKl4 is a microkernel developed and distributed by Open Kernel Labs. It is
|
|
focused on embedded devices. Genode support the OKL4 kernel version 2.1
|
|
on the x86_32 platform.
|
|
|
|
This document provides brief instructions about downloading, building and
|
|
booting the OKL4 version of Genode.
|
|
|
|
|
|
Prerequisites
|
|
#############
|
|
|
|
You need Python 2.4 to use the OKL4 build system. On Debian/Ubuntu systems
|
|
simply type:
|
|
|
|
! apt-get install python2.4
|
|
|
|
Since Ubuntu 10.04, the python2.4 package is no longer part of the official
|
|
repositories. However, you can manually add the repository via:
|
|
|
|
! add-apt-repository ppa:python24-team/python24
|
|
! apt-get update
|
|
|
|
Moreover, you need to download and install the tool-chain used by Genode. Have
|
|
a look at this page:
|
|
|
|
:[http://genode.org/download/tool-chain]:
|
|
Genode tool-chain
|
|
|
|
|
|
Downloading and building the OKL4 kernel
|
|
########################################
|
|
|
|
To download the OKL4 source code, issue the following command:
|
|
|
|
! <genode-dir>/tool/ports/prepare_port okl4
|
|
|
|
It will take care of downloading the kernel's source code and applying the
|
|
patches found at 'base-okl4/patches'.
|
|
|
|
For the VESA driver on x86, the x86emu library is required and can be downloaded
|
|
and prepared by invoking the following command:
|
|
|
|
! <genode-dir>/tool/ports/prepare_port x86emu
|
|
|
|
To create a build directory for Genode running on OKL4, use the 'create_builddir'
|
|
tool:
|
|
|
|
! <genode-dir>/tool/create_builddir okl4_x86
|
|
|
|
Once you have created the build directory at '<genode-dir>/build/okl4_x86',
|
|
the OKL4 kernel can be built from within the build directory via
|
|
|
|
! make kernel
|
|
|
|
|
|
Running the Genode demonstration scenario
|
|
#########################################
|
|
|
|
For a quick test drive of the OKL4 kernel, issue 'make run/demo' from the
|
|
build directory.
|
|
|
|
|
|
Manually building a boot image
|
|
##############################
|
|
|
|
This section is not needed when using Genode's run-script mechanism. The manual
|
|
steps described below are automatically executed via the OKL4 run environment
|
|
as found at 'tool/run/boot_dir/okl4'.
|
|
|
|
To practically use the OKL4 kernel and applications running on top of it, Open
|
|
Kernel Labs provide a tool called 'elfweaver', that is used to merge different
|
|
application binaries and the kernel itself into one single elf binary that can
|
|
be executed by your bootloader, e.g. Grub.
|
|
|
|
To configure 'elfweaver' to merge the appropriated elf binaries you have to
|
|
provide an XML file. A good starting point is the 'weaver_x86.xml' file that
|
|
includes the Genode demo example. Simply copy that file to your Genode build
|
|
directory and adapt the 'file' attribute of the 'kernel' tag to the absolute
|
|
path of the OKL4 kernel we build previously.
|
|
|
|
! cp <path_to_genode_src>/base-okl4/tool/weaver_x86.xml weaver.xml
|
|
|
|
The corresponding line in your weaver.xml should look like this:
|
|
|
|
! <kernel file="<path_to_okl4_src>/build/pistachio/bin/kernel" xip="false" >
|
|
|
|
Before creating the image, we need to supply a Genode config file as well.
|
|
For a quick start, you can copy and rename the template provided 'os/config/demo'
|
|
to '<buil-ddir>/bin/config'. Alternatively, you can assign another file to the
|
|
'filename' of the 'memsection' declaration for the config file in 'weaver.xml'.
|
|
Now, we can use 'elfweaver' to create the image. Go to the 'bin' directory in
|
|
the Genode build directory that contains all the binaries and invoke the
|
|
script.
|
|
|
|
! cd bin
|
|
! <path_to_okl4_src>/tools/pyelf/elfweaver merge --output=weaver.elf ../weaver.xml
|
|
! strip weaver.elf
|
|
|
|
Note: the given paths to the resulting elf file and the input xml file have to
|
|
be relative.
|
|
|
|
*Bug alert:* Elfweaver triggers an assertion when too many memsections are
|
|
declared in the 'weaver.xml' file and just outputs the following message
|
|
! An error occurred:
|
|
Apparently, elfweaver has a problem with calculating the size of the boot info
|
|
section. As a quick fix, you can increase the value of 'BOOTINFO_GUESS_OPS' in
|
|
'<okl4-dir>/tools/pyelf/weaver/bootinfo.py'.
|
|
|
|
The resulting elf image can be loaded by GRUB now.
|
|
|
|
|
|
Further Information
|
|
###################
|
|
|
|
:[http://genode.org/documentation/articles/genode-on-okl4]:
|
|
Article about the porting work of Genode to OKL4, featuring many technical
|
|
insights that are useful to understand the peculiarities of this base
|
|
platform.
|
|
|