DocsReleasesCommunityGuidesBlog

Build Process

Learn how Unikraft is generally organized and the steps that are performed by Unikraft's build system which generate a unikernel.

Unikraft is designed to build ultra-lightweight VM images. For that matter, the build system is designed to take only the absolute necessary pieces of code and bind them togheter.

Overview of Unikraft with respect to abstracting
cross-system-boundary elements, how they are represented as microlibraries as
part of a library Operating System and ultimately how they are used within
the build process to generate a unikernel image.
Figure 1Overview of Unikraft with respect to abstracting cross-system-boundary elements, how they are represented as microlibraries as part of a library Operating System and ultimately how they are used within the build process to generate a unikernel image.

The lifecycle of the construction of a Unikraft unikernel includes several distinct steps:

  1. Configuring the Unikraft unikernel application with compile-time options;
  2. Fetching and preparing the source code for external libraries;
  3. Compiling the libraries and the core Unikraft code;
  4. Linking the final unikernel image.

GNU Make-based build system#

Unikraft is a configurable operating system, where each component can be modified, configured, according to the user’s needs. This configuration is done using a version of Kconfig, through the Config.uk files. In these files, options are added to enable libraries, applications and different components of the Unikraft core. The user can then apply those configuration options, using make menuconfig, which generates an internal configuration file that can be understood by the build system, .config. Once configured, the Unikraft image can be built, using make, and run, using the appropriate method (Linux ELF loader, qemu-kvm, xen, others).

Overview of Unikraft's build process with respect to the
intermediate artfacts generated considered from the perspective of its GNU
Make-based build system.
Figure 1Overview of Unikraft's build process with respect to the intermediate artfacts generated considered from the perspective of its GNU Make-based build system.
Edit this page on GitHub

Connect with the community

Feel free to ask questions, report issues, and meet new people.

Join us on Discord!
®

Getting Started

What is a unikernel?Install CLI companion toolUnikraft InternalsRoadmap

© 2024  The Unikraft Authors. All rights reserved. Documentation distributed under CC BY-NC 4.0.