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