Source-tree structure

Top-level directory

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

doc/

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.

tool/

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.

repos/

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.

base/

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

base-<platform>/

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

linux

Linux kernel (both x86_32 and x86_64).

nova

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

hw

The hw platform allows the execution of Genode on bare hardware without the need for a separate 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).

sel4

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

foc

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

okl4

OKL4 kernel originally developed at Open-Kernel-Labs.

pistachio

L4ka::Pistachio kernel developed at University of Karlsruhe.

fiasco

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

os/

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

demo/

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.

hello_tutorial/

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

libports/

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.

dde_linux/

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.

dde_ipxe/

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

dde_bsd/

Device-driver environment for audio drivers ported from OpenBSD.

dde_rump/

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.

pc/

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/

Ports of 3rd-party applications.

gems/

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

https://github.com/orgs/genodelabs/repositories