DocsReleasesCommunityGuidesBlog

Unikraft releases v0.18.0 (Helene)

This release contains features and improvements to Unikraft.

We are proud to announce a new version of Unikraft: v0.18.0.

This release comes packed with features related to security, virtual filesystem and general application support. It contains plenty of fixes that improve the stability and application support of Unikraft.

In this blog post, we present the new features available in Unikraft. For a full breakdown, please check out the changelog.

Integrated Debug Support with GDB Stub#

_This feature was championed by Thassilo Schulze with great support from Michalis Pappas and Simon Kuenzer.

Unikraft v0.18 introduces native support for GDB, allowing developers to debug applications and system-level code seamlessly, even on Virtual Machine Monitors (VMMs) and hypervisors that don't offer built-in debug facilities. Debugger support is provided by an implementation of a GDB stub within libukdebug, which enables direct communication with a GDB client over a serial connection. For more information on enabling and confguring the GDB stub see libukdebug's README.md.

Abstraction for Console Devices#

_This feature was championed by Thassilo Schulze with great support from Michalis Pappas and Simon Kuenzer.

The newly introduced libukconsole provides an abstraction layer for consoles. The implementation of COM for x86_64 has been merged with the ns16550 driver, and all console drivers have been updated to implement the ukconsole driver API. This is a long anticipated feature that allows efficient management of console devices, and enables the addition of new features, with the GDB stub being the first one to utilize this subsystem.

Further improvements of libukrandom#

This feature was championed by Michalis Pappas with great support from Alex Apostolescu, Maria Pana, Simon Kuenzer, and Stefan Jumarea.

This release continues on the improvents introduced in Unikraft v0.17 for cryptographically secure randomness. libukrandom now includes a driver API, and the implementation of CPU-generated randomness has been reworked into conforming drivers. For more flexibility, the driver API introduces fallback operations: On x86_64, RDSEED can now fall back to RDRAND, addressing common issues faced by users running on legacy machines without RDSEED support, or those using TCG emulation on older versions of QEMU.

In addition to the above, it is now possible to seed the CSPRNG via Unikraft's command-line, or through the device tree blob.

Finally, the CSPRNG has been updated to now use 20 rounds (ChaCha20), and an implementation of the test vectors of RFC8439 is available to execute via libuktest.

For more info see the new documentation at drivers/ukrandom/lcpu and lib/ukrandom.

Early Initialization Framework#

_This feature was championed by Michalis Pappas with great support from Andrei Stan, Oleksii Moisieiev, Sergiu Moga, and Simon Kuenzer.

libukboot introduces earlytab, a lightweight framework for early initialization. This complements the existing inittab, with specific focus on the initialization of early devices and their dependencies.

libuklibparam has been refactored to allow command-line parsing during early initialization. This additionally fixes a limitation of the previous registration mechanism where all parameters had to be registered from a single file. libuklibparam is assigned the highest (earliest) priority, to ensure that drivers and libraries in subsequent stages have access to Unikraft's command-line parameters. Notice that for the time being this has the side-effect of information printed by libuklibparam to be lost, as earlycon is registered to a later priority. This will be resolved once libukprint is introduced, as that library will provide a console buffer.

Initialization of early devices have been migrated to earlytab. Serial console drivers are updated to register with earlytab when early console support is enabled. Similarly, drivers that provide secure randomness initialize libukrandom at early init, to fulfil the requirement of security-critical mechanisms for early randomness.

Overall, the introduction of earlytab marks a significant step towards a unified and coordinated initialization process, which is a requirement for upcoming features. Most notably, earlytab will eventually replace the intermediate jump from boot code to platform-specific initialization, with platforms being able to register initialization calls directly with earlytab. Early adopters of this mechanism in this release are the UART and VGA console devices of KVM, and the hypervisor console of Xen.

Statistics for libuksched and libukfalloc#

This feature was championed by Michalis Pappas with great support from Cezar Craciunoiu, Florin Postolache, and Simon Kuenzer.

Following previous work on libuknetdev, this release comes with updates onlibusched and libukfalloc to export statistics that provide insight on the performance and overall behavior of the system.

libuksched defines the set of statistics that a given scheduler implementation should provide. Metrics include the number of schedules, yields, context switches to processes and the idle thread. The cooperative scheduler implementation, libukschedcoop, has been updated to export these metrics.

Similarly, libukfalloc has been updated to define a set of per-instance as well as system-wide statistics. The buddy implementation, libukfallocbuddy, is updated to export these statistics where needed.

In both cases, statistics are provided via the libukstore. For For a general descriptions on how to access the exported stats, see the documentation of libukstore at lib/ukstore/README.md.

Known issues#

For a full list of issues see: https://github.com/unikraft/unikraft/issues

Catalog Update#

We updated the application catalog with multiple application runtimes, including MariaDB, MongoDB, Java, Grafana, Zig. The application catalog hosts application runtimes and examples running with Unikraft. Generally, we use KraftKit as the tool to build and run unikernel images for these applications.

catalog-core - A Catalog for Core Developers, Reviewers, Testers and Maintainers#

catalog-core is a catalog of Unikraft applications that are set up, configured, built and run using first principles tools: Make, GCC, Clang, KConfig, QEMU, Firecracker, Xen; that is, not using KraftKit. Each directory belongs to a given application and it typically consists of source code, Makefile, Makefile.uk, filesystem and a README.md file with instructions.

catalog-core is targeted towards Unikraft core developers (i.e. developers of the unikraft core repository or library repositories), maintainers, testers and those who want to learn about the internals of Unikraft. Application and tooling developers and general users should use the official catalog repository.

catalog-core current consists of an initial set of applications to be built and run using first principles tools. It also contains scripts to automate the building, running and testing of applications, Unikraft core and libraries.

Community Activities#

OmniOpenCon 2024#

As part of OmniOpenCon 2024, we organised a workshop, where the participants took some first steps into building and running an application using Unikraft.

We also had a talk beforehand, Efficient, Effective and Fun Computing with Unikernels, demonstrating how easy it is to build, package, run and deploy common applications with Unikraft, focusing on two primary areas: cloud computing and embedded development.

OmniOpenCon 2024 also hosted an open source hackathon, with about 20 participants, with some working on Unikraft.

Unikraft Summer Workshop 2024#

Unikraft Summer Workshop 2024 (USW'24 is a free and virtual workshop held by members of the Unikraft community. It focuses on cloud-native applications and on the unikernel technology that powers efficient and high performance cloud deployments.

The three-week event holds a number of starter tutorials and workshops on how to configure, build, run, deploy and debug cloud applications using Unikraft.

This year, we had 11 students that took part in the Unikraft Summer Workshop. At the end of the three-week event, we organised a hackathon, were the students were able to contribute to the project.

Vienna Unikraft Workshop#

On December 708, 2024, we organised the Vienna Unikraft Workshop, together with SBA Research. The workshop took place as an in-person event, at SBA Research. Members of the Unikraft community were there, as well as our hosts from SBA Research.

We spent the first day getting people accustomed to the Unikraft project, following some guides in order to build, run and deploy cloud applications.

The second day was focused on participants contributing to the projects, porting new applications, finding and fixing issues, etc. During this, Tor and Zero MQ were ported, and several other issues were found and fixed.

GSoC 2024#

As part of Google Summer of Code 2024, Unikraft had 5 projects approved. We've had 16 application, out of which 5 were selected.

The 5 projects are:

  • "Linux x86 Boot Protocol Support", by Mihnea Firoiu
  • "Synchronization Support in Internal Libraries", by Yang Hu
  • "Supporting User-provided, Long-lived Environmental Variables for Unikraft Builds", by Ujjwal Mahar
  • "Multiboot2 Support in Unikraft", by Maria Pană
  • "UEFI Graphics Output Protocol Support in Unikraft", by Sriprad Potukuchi.

All the participants described their work in detail in multiple blog posts that you can find on the Unikraft blog page.

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

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