Source-tree structure

Top-level directory

At the root of the directory tree, there is the following content:


Documentation in plain text format, including the release notes of all versions. Practical hint: The comprehensive release notes conserve most of the hands-on documentation aggregated over the lifetime of the project. When curious about a certain topic, it is often worthwhile to "grep" for the topic within the release notes to get a starting point for investigation.


Tools and scripts to support the build system, various boot loaders, the tool chain, and the management of 3rd-party source code. Please find more information in the README file contained in the subdirectory.


The so-called source-code repositories, which contain the actual source code of the framework components. The source code is not organized within a single source tree but multiple trees. Each tree is called a source-code repository and has the same principle structure. At build time, a set of source-code repositories can be selected to be incorporated into the build process. Thereby, the source-code repositories provide a coarse-grained modularization of the framework.

Repositories overview

The <genode-dir>/repos/ directory contains the following source-code repositories.


The fundamental framework interfaces as well as the platform-agnostic parts of the core component (Section Core - the root of the component tree).


Platform-specific supplements of the base/ repository where <platform> corresponds to one of the following:


Linux kernel (both x86_32 and x86_64).


NOVA microhypervisor. More information about the NOVA platform is provided by Section Execution on the NOVA microhypervisor (base-nova).


The hw platform allows the execution of Genode on bare hardware without the need for a third-party kernel. The kernel functionality is included in the core component. It supports the 32-bit ARM, 64-bit ARM, 64-bit x86, and 64-bit RISC-V CPU architectures. More information about the hw platform can be found in Section Execution on bare hardware (base-hw).


The seL4 microkernel combines the L4-kernel philosophy with formal verification. The support for this kernel is experimental.


Fiasco.OC is a modernized version of the L4/Fiasco microkernel with a completely revised kernel interface fostering capability-based security.


OKL4 kernel originally developed at Open-Kernel-Labs.


L4ka::Pistachio kernel developed at University of Karlsruhe.


L4/Fiasco kernel originally developed at Technische Universit├Ąt Dresden.


OS components such as the init component, device drivers, and basic system services.


Various services and applications used for demonstration purposes, for example the graphical application launcher and the tutorial browser described in Section A simple system scenario can be found here.


Tutorial for creating a simple client-server scenario. This repository includes documentation and the complete source code.


Ports of popular open-source libraries, most importantly the C library. Among the 3rd-party libraries are the standard C++ library, Qt5, FreeType, ncurses, libUSB, curl, lwip, and Mesa.


Device-driver environment for executing Linux kernel subsystems as user-level components. Besides hosting ports of generic Linux kernel subsystems such as the TCP/IP stack, it is the basis for many board-specific drivers hosted in other repositories.


Device-driver environment for executing network drivers of the iPXE project.


Device-driver environment for audio drivers ported from OpenBSD.


Port of rump kernels, which are used to execute subsystems of the NetBSD kernel as user-level components. The repository contains a server that uses a rump kernel to provide various NetBSD file systems.


Device drivers for x86 PC hardware. The pc repository depends on the _dde_linux repository because drivers such as the USB stack, the Intel wireless stack, or the Intel graphics driver are based on the framework infrastructure of dde_linux/.


Ports of 3rd-party applications.


Components that use both native Genode interfaces as well as features of other high-level repositories, in particular shared libraries provided by libports/.

In addition to the repositories hosted in Genode's main source tree, there exist a number of external repositories that extend the framework with optional features such as additional components and board support for various hardware platforms.

Additional repositories maintained by Genode Labs