• Stars
    star
    1,785
  • Rank 25,096 (Top 0.6 %)
  • Language
    C
  • License
    Other
  • Created about 5 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Unikraft is an automated system for building specialized OSes known as unikernels. Unikraft can be configured to be POSIX-compliant. (Core repository)

Unikraft

Unleash the Power of Unikernels!

How Unikraft works

Unikraft is an automated system for building specialized POSIX-compliant OSes known as unikernels; these images are tailored to the needs of specific applications. Unikraft is based around the concept of small, modular libraries, each providing a part of the functionality commonly found in an operating system (e.g., memory allocation, scheduling, filesystem support, network stack, etc.).

Unikraft supports multiple target platforms (e.g., Xen, KVM, and Linux userspace) so that it is possible to build multiple images, one for each platform, for a single application without requiring the application developer to do any additional, platform-specific work. In all, Unikraft is able to build specialized OSes and unikernels targeted at specific applications without requiring the time-consuming, expert work that is required today to build such images.

Typical Use Cases

Unikraft is a new system for ultra-light virtualization of your services in the cloud or at the edge, as well as extremely efficient software stacks to run bare metal on embedded devices. Smaller, quicker, and way more efficient than conventional systems:

โšก Cold boot virtual machines in a fraction of a second While Linux-based systems might take tens of seconds to boot, Unikraft will be up in a blink.

๐Ÿ“ˆ Deploy significantly more instances per physical machine Donโ€™t waste CPU cycles on unneeded functionality โ€“ focus on your users' needs.

๐Ÿ“‰ Drastic reductions in memory consumption With all your applications and data strongly separated into ultra light-weight virtual machines, scaling becomes a breeze.

๐Ÿ›ก๏ธ Ready for mission critical deployments Focus your trust on a minimal set of required components, significantly reduce your service's attack surface, and minimize certification costs.

๐ŸŽ Outstanding performance Specializing the OS to meet your application's needs is the key to achieving superior performance, making you ready to drive your infrastructure to the peak.

Supported Architectures and Platforms

Unikraft supports the construction of multiple architectures, platforms, and images. The following tables give an overview of the current support.

๐Ÿ’ก Architecture Support

Architecture Status
x86 x86_64
Arm armv7, aarch64
RISC-V โš™๏ธ Issue #60

๐Ÿ’ป Platform Support

Platform x86_64 arm32 arm64
Linux Userspace โœ…
Linux KVM -
Xen Hypervisor โš™๏ธ Issue #34 โš™๏ธ Issue #62
Solo5 โœ… - โš™๏ธ Issue #63
VMWare โš™๏ธ Issue #3 - -
Hyper-V โš™๏ธ Issue #61 - -

โ˜๏ธ IaaS Providers

Cloud Provider Images
Amazon Web Services AMI, Firecracker
Google Compute Platform GCP Image
Digital Ocean Droplet

Getting Started

The fastest way to get started configuring, building and deploying Unikraft unikernels is to use our companion tool, kraft.

With kraft installed, you can download Unikraft components, configure your unikernel to your needs, build it and run it -- there's no need to be an expert!

Contributing

Contributions are welcome! Please see our Contributing Guide for more details. A good starting point is the list of open projects. If one of these interests you or you are interested in finding out more information, please drop us a line via the mailing list or directly at [email protected].

Additional resources

License

Unikraft is licensed under a BSD-3-Clause. For more information, please refer to COPYING.md.

More Repositories

1

kraftkit

Build and use highly customized and ultra-lightweight unikernel VMs.
Go
182
star
2

pykraft

Python library for configuring and building unikernels
Python
176
star
3

docs

The front page and documentation for the Unikraft Open-Source Project.
MDX
32
star
4

eurosys21-artifacts

Artifacts, including experiments and graphs, for the paper: "Unikraft: Fast, Specialized Unikernels the Easy Way" (EuroSys'21 - Best Paper Award).
Assembly
25
star
5

app-elfloader

Load and execute Linux ELF binaries
C
18
star
6

app-helloworld

A simple "Hello World" application written in C
C
18
star
7

catalog

Unikraft Applications & Examples Catalog
Dockerfile
18
star
8

loupe

Loupe: Syscall Usage Analysis Tool
Python
16
star
9

app-helloworld-go

kraft-ready repo for building Go applications with Unikraft
Go
16
star
10

gsoc

Unikraft Google Summer of Code
14
star
11

app-python3

Unikraft Python3 app repo
Shell
12
star
12

lib-lwip

Unikraft port of the lwip network stack
C
10
star
13

app-nginx

Nginx on Unikraft
Shell
10
star
14

run-app-elfloader

Run Unikraft ELF Loader app on Linux executables
Shell
10
star
15

plat-aws

Run Unikraft Xen images on Amazon Web Services
Shell
9
star
16

app-wamr

Web Assembly (WAMR) on Unikraft
Shell
9
star
17

lib-musl

musl: A C standard library
C
8
star
18

lib-wamr

Unikraft port of WAMR, Intel's WebAssembly Micro Runtime
C
7
star
19

plat-solo5

Unikraft port of solo5, a sandboxed execution environment for unikernels
C
7
star
20

dynamic-apps

Pre-built Dynamic Linux ELFs
C++
6
star
21

summer-of-code-2021

Unikraft Summer of Code (2021) Website & Projects Documentation
C
6
star
22

governance

Documentation and automation for the Unikraft project governance model.
Go
6
star
23

static-pie-apps

Built Linux applications (static-pie) for Unikraft binary compatibility mode
C
6
star
24

plat-raspi

Unikraft on Raspberry Pi 3 B+
6
star
25

plat-digitalocean

Run Unikraft KVM images on Digital Ocean
Shell
6
star
26

app-sqlite

SQLite on Unikraft
Shell
5
star
27

app-redis

Redis on Unikraft
Shell
5
star
28

ide-vscode

Unikraft Visual Studio Code Extension
TypeScript
5
star
29

lib-newlib

Unikraft port of newlib, a C standard library
C
5
star
30

app-httpreply

A simple HTTP echo server example for Unikraft.
C
5
star
31

lib-rust

Rust Language Runtime on Unikraft
4
star
32

lib-python3

Unikraft port of Python 3
C
4
star
33

app-helloworld-rust

Rust-based application on Unikraft
Rust
4
star
34

packer-plugin-unikraft

Unikraft Packer Plugin
Go
4
star
35

meeting-notes

Archive of Unikraft Technical Meetings.
4
star
36

loupedb

Shell
4
star
37

app-click

Click Modular Router on Unikraft
Shell
3
star
38

app-helloworld-cpp

kraft-ready repo for building c++ applications with Unikraft
Shell
3
star
39

lib-click

Unikraft port of the Click modular router
C++
3
star
40

app-ruby

Ruby on Unikraft
3
star
41

driver-shim

Driver shim library
C
3
star
42

lib-redis

Unikraft port of Redis in-memory data structure store
C
3
star
43

plat-gcp

Run Unikraft KVM images on Google Cloud Platform
Shell
3
star
44

lib-lua

Unikraft port of the Lua language
C
2
star
45

lib-tflite

Unikraft port of TensorFlow Lite
C++
2
star
46

app-micropython

Micropython on Unikraft
Python
2
star
47

lib-duktape

Unikraft port of duktape/JavaScript
C
2
star
48

lib-pthread-embedded

Unikraft port of pthread-embedded, an embedded pthread library
C
2
star
49

liftoff

Tool to retrieve and print process statistics
C
2
star
50

lib-libhogweed

Port of libhogweed to Unikraft
C
2
star
51

app-duktape

kraft-ready repo for building JavaScript/duktape applications with Unikraft
Shell
2
star
52

lib-geos

Geometry Engine, Open Source
C++
1
star
53

lib-embedded-gcov

Unikraft port of Embedded Coverage
1
star
54

lib-boost

Unikraft port of the boost library
C
1
star
55

.github

1
star
56

lib-mimalloc

Port of mimalloc
C
1
star
57

lib-tlsf

Port of TLSF for Unikraft, a general-purpose memory allocator
C
1
star
58

lib-openssl

Unikraft port of the OpenSSL libraries
1
star
59

lib-dafny

Unikraft library for Dafny programming language.
C++
1
star
60

lib-nginx

Unikraft port of NGINX
C
1
star
61

lib-libelf

Unikraft port of libelf from the ELF toolchain
C
1
star
62

lib-libtiff

Unikraft port of libtiff, a library for managing TIFF files
C
1
star
63

lib-ocaml

OCaml runtime library
1
star
64

lib-libgo

Unikraft port of the Go language
Go
1
star