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. The hw platform is also used as the basis for executing Genode on top of the Muen separation kernel. More information about the hw platform can be found in Section Execution on bare hardware (base-hw).
- sel4
-
The seL4 microkernel developed by NICTA in Sydney. The support for this kernel is highly 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 Qt5, libSDL, freetype, Python, ncurses, Mesa, and libav.
- dde_linux/
-
Device-driver environment for executing Linux kernel subsystems as user-level components. Among the subsystems are the USB stack, the Intel wireless stack, and the TCP/IP stack.
- 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.
- 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/.