Unikraft ASPLOS'22 Tutorial

To be held on Tuesday, March 1st 2022 along with International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS'22).

With the advance of virtualization technology and the constant demand for specialization, security and performance, unikernels are no longer a fringe idea. In this tutorial we present Unikraft, a unikernel SDK aiming for extreme specialization.

Unikraft consists of core software components (i.e. internal libraries) and outside optional components (i.e. external libraries), most of which are existing software components (standard C libraries, runtime libraries, frameworks, applications) integrated with the core parts. By allowing extreme configurability and using common APIs backed by multiple implementations, Unikraft makes it easy to tailor custom software solutions for your use case: be it performance, reduced resource utilization, security and safety or functionality, Unikraft makes it happen.

Unikraft is an open source project with a growing and vibrant community available on GitHub and Discord. The community consists of highly skilled industry contributors, academics and students, motivated in creating next-generation software products, pursuing novel research objectives and developing open and challenging technology in operating systems. Recent works realized on the basis of Unikraft include CubicleOS (ASPLOS'21) and FlexOS (to be separately presented at ASPLOS'22).

In this tutorial, we aim to get attendees accustomed to Unikraft and unikernel technology. We present Unikraft internals, highlight research prospects and showcase performance and specialization use cases. We start with an introduction in unikernels and Unikraft, details the build and configuration process of Unikraft, the porting / integration of libraries and applications (both in source code and in binary form) and performance-oriented scenarios.

The tutorial will be highly practical. We will provide remote access to pre-configured machines where attendees will build, configure, run and measure Unikraft-based software components. Attendees are required to have a laptop and an SSH client to access the remote system. Attendees are expected to have good Linux/CLI/shell scripting skills, experience with C programming and build automation and general knowledge of virtualization technology.

Each section in the tutorial will consist of a short presentation / demo (10-15 minutes) followed by practical work to be done by each attendee on their allocated remote machine.


The tutorial will take place in Room 2A from 10:00 to 18:00 (CET).

Time (CET)SessionHost
10:00 - 10:15High-level presentation of unikernels and UnikraftPierre Olivier (UoM)Alexander Jung (LU)
10:15 - 11:00Getting started with Unikraft (I)Alexander Jung (LU)
11:00 - 11:30Coffee Break 1 (Foyer Garden 4 & 5)
11:30 - 12:00Getting started with Unikraft (II)Alexander Jung (LU)
12:00 - 13:00A look inside the build and configuration systemRazvan Deaconescu (UPB)
13:00 - 14:00Lunch Break (on your own)
14:00 - 15:00Running complex applicationsCristian Vijelie (UPB)
15:00 - 16:00Running applications in binary compatibilityRazvan Deaconescu (UPB)
16:00 - 16:30Coffee Break 2 (Foyer Garden 4 & 5)
16:30 - 17:30Using Unikraft for performance-oriented use casesVlad-Andrei Bădoiu (UPB)
17:30 - 17:45Unikernels: Paths to Production & Current Research TrendsHugo Lefeuvre (UoM)


This initial introduction provides a birds-eye view of unikernels through a short-presentation. In this presentation, we go over the basics of unikernels, their purpose and the motivation behind building unikernels with the library Operating System model. Expected time 15mn.

Getting started with Unikraft

Basic working (configure, build, run) with Unikraft and kraft. Expected time 60mn.

Inside the Config and Build System

We take a look inside Unikraft internals - its build system and runtime infrastructure. Expected time 60mn.

Running complex applications

We will run full-fledged applications on top of Unikraft (nginx, redis, sqlite). Expected time 60mn.

Syscall Shim and Binary Compatibility Layer

We use the syscall shim layer to run unmodified (binary) applications. Expected time 60mn.

High performance applications

We explore how we can create high performance application over Unikraft. Expected time 60mn.

Unikernels: Paths to Production & Current Research Trends

We go through current research and development tracks in the Unikraft project. Expected time 30mn.


This tutorial is co-organized by Hugo Lefeuvre (The University of Manchester), Felipe Huici (NEC Laboratories Europe GmbH), Răzvan Deaconescu (University POLITEHNICA of Bucharest), Pierre Olivier (The University of Manchester), Alexander Jung (Lancaster University), Vlad-Andrei Bădoiu (University POLITEHNICA of Bucharest), and Cristian Vijelie (University POLITEHNICA of Bucharest). Over the last decade we co-authored numerous libOS/unikernel papers: ClickOS (NSDI’14), LightVM (SOSP’17), Hermitux (VEE’19, IEEE TC'21), Unikraft (EuroSys’21), among others.