Unikraft
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
      • Invitee
    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Sharing URL Help
Menu
Options
Versions and GitHub Sync Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Write
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
Invitee
Publish Note

Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

Your note will be visible on your profile and discoverable by anyone.
Your note is now live.
This note is visible on your profile and discoverable online.
Everyone on the web can find and read all notes of this public team.
See published notes
Unpublish note
Please check the box to agree to the Community Guidelines.
View profile
Engagement control
Commenting
Permission
Disabled Forbidden Owners Signed-in users Everyone
Enable
Permission
  • Forbidden
  • Owners
  • Signed-in users
  • Everyone
Suggest edit
Permission
Disabled Forbidden Owners Signed-in users Everyone
Enable
Permission
  • Forbidden
  • Owners
  • Signed-in users
Emoji Reply
Enable
Import from Dropbox Google Drive Gist Clipboard
   owned this note    owned this note      
Published Linked with GitHub
Subscribed
  • Any changes
    Be notified of any changes
  • Mention me
    Be notified of mention me
  • Unsubscribe
Subscribe
<!-- Important, do not remove the line below before article has been created. --> {{subst:AfC submission/draftnew}} {{Infobox OS | name = Unikraft | logo = Unikraft Logo.svg | developer = [[NEC|NEC Laboratories Europe GmbH]] | working state = Current | source model = [[Open-source software|Open source]] | released = {{Start date and age|2017|10|29}} | latest release version = 0.19.1 | latest release date = {{Start date and age|2025|07|17}} | repo = {{URL|https://github.com/unikraft/unikraft}} | marketing target = [[Cloud computing]], [[embedded device]]s, [[server (computing)|servers]] | supported platforms = [[x86]], [[ARM architecture|ARM]] | programmed in = [[C (programming language)|C]], [[Assembly language|Assembly]] | kernel type = [[Unikernel]] | userland = POSIX subset, custom | license = [[BSD_licenses#3-clause license ("BSD License 2.0", "Revised BSD License", "New BSD License", or "Modified BSD License")|BSD 3-Clause]]<ref name="github-license">{{cite web|url=https://github.com/unikraft/unikraft/blob/stable/COPYING.md|title=COPYING.md file|via=[[GitHub]]}}</ref> | website = {{URL|https://www.unikraft.org}} }} '''Unikraft''' is an [[open-source software]] project that offers a [[software development kit]] (SDK) for building specialized [[Unikernel|unikernels]]. It is designed for [[Cloud computing|Cloud computing platforms]] and [[Internet of things|and IoT devices]]. The SDK provides a [[Command-line interface|command line]] tool called kraft<ref name=kraft_tool>{{cite web|title=The kraft tool|url=https://unikraft.org/docs/cli/reference/kraft}}</ref> for creating and managing unikernel applications, and for selecting the necessary components for a desired [[Computer architecture|architecture]] and [[Computing platform|platform]]. == History == Unikraft began as a [[Research|research project]] at [[NEC|NEC Laboratories Europe GmbH]] (NLE) in [[Heidelberg]], [[Germany]].<ref name=unikraft_NECLabs>{{cite web|title=Unikraft Project, NEC Laboratories|url=https://web.archive.org/web/20221127042825/http://sysml.neclab.eu/projects/unikraft/|accessdate=27 November 2022}}</ref> The project was officially introduced on December 5, 2017, as an incubation project under the [[Xen|Xen Project]], which is hosted by [[The Linux Foundation]].<ref name=unikraft_XenProject>{{cite web|title=Unikraft - Xen Project|url=https://xenproject.org/projects/unikraft/}}</ref><ref name=unikraft_intro_XenProject>{{cite web|title=Xen Project Introduces the Unikraft Unikernel Project|url=https://www.linuxfoundation.org/press/press-release/xen-project-introduces-unikraft-unikernel-project}}</ref> The project aimed to address the growing need for lightweight, specialized operating systems that could run efficiently on modern cloud infrastructure. The motivation behind Unikraft was to make unikernel technology more accessible by enabling the construction of highly customized OS and kernel images. This approach is designed to provide significant benefits in performance, security, and efficiency for cloud-native and containerless applications. The first stable release of Unikraft was made available in 2020, marking a significant milestone in its development. Over the years, the project has evolved through contributions from a diverse global community of developers and researchers. During its development, it has received significant contributions from both core maintainers at NLE and research students at [[Politehnica University of Bucharest]], [[Lancaster University]], [[Manchester University]] and [[University of Liège]]. == Usecases == Unikraft is designed for a variety of use cases where high performance, security, and efficiency are critical. These include: * '''Cloud and Edge Computing''': Unikraft's small footprint and fast boot times make it suitable for deploying applications in cloud and edge environments.<ref name=unikraft_repo>{{cite web|title=Unikraft on GitHub|url=https://github.com/unikraft/unikraft|via = [[GitHub]]}}</ref> * '''Microservices''': The lightweight nature of unikernels is well-suited for building and deploying microservices.<ref name=unikraft_XenProject /> * '''Embedded and IoT Devices''': Unikraft can be used to create highly specialized and efficient operating systems for resource-constrained embedded and IoT devices.<ref name=unikraft_XenProject /> * '''Automotive''': The project has also seen interest from the automotive industry.<ref name=unikraft_XenProject /> == Design == === Binary Compatibilty === One of Unikraft's key features is its ability to run unmodified Linux applications in a "binary compatibility" mode.<ref name=uk_binary_compatibility>{{cite web|title=Binary Compatibility|url=https://unikraft.org/guides/bincompat}}</ref> This capability is significant because it lowers the barrier to adopting unikernel technology by removing the often-difficult requirement of porting applications to a new environment.<ref name=uk_binary_compatibility /> This is achieved through a specialized elfloader application, which loads and executes standard [[Executable and Linkable Format|ELF]] binaries compiled for Linux.<ref name=uk_binary_compatibility /> To use this feature, a developer packages the application binary and its required libraries into a filesystem, such as a cpio archive, which is then provided to the Unikraft unikernel at runtime.<ref name=uk_binary_compatibility /> This allows even [[Proprietary software|closed-source]] applications to be run on Unikraft, as no source code modifications are necessary. In contrast to the binary compatibility mode, the native approach involves compiling an application's source code directly with the Unikraft libOS components. In this mode, the application and the necessary operating system libraries are linked together at compile time to create a single, highly specialized machine image. This method provides the greatest benefits in terms of performance, security, and resource efficiency, as the resulting unikernel contains only the code essential for the application to run, resulting in a minimal attack surface and the smallest possible image size. === Kraft Toolkit === The <code>kraft</code> command-line tool simplifies the process of building, running, and managing Unikraft unikernels. It provides an intuitive interface for selecting libraries, configuring the kernel, and generating images for various platforms. <code>kraft</code> can be installed via an interactive installer and is designed to be familiar to developers who have experience with container tools like [[Docker_(software)|Docker]].<ref name=unikraft_repo /><ref name=kraft_tool /> === Modularity and Libraries === At the core of Unikraft is a [[Library (computing)|library]]-based operating system (libOS) architecture. This means that operating system components are provided as a collection of libraries that can be selected and configured at build time. This allows for a high degree of customization, as developers can include only the components that are necessary for their application. This results in smaller image sizes, reduced attack surfaces, and improved performance.<ref name=unikraft_concepts>{{cite web|title=Concepts of Unikraft|url=https://unikraft.org/docs/concepts}}</ref> === Main Libraries of Unikraft === <!-- TODO: anything else to add here? --> {| class="wikitable" |- ! Library !! Description |- | '''vfscore'''<ref name=uk_vfscore_on_github>{{cite web|title=vfscore library on GitHub|url=https://github.com/unikraft/unikraft/tree/staging/lib/vfscore|via=[[GitHub]]}}</ref> || Provides a virtual file system layer, allowing for the use of various file systems. |- | '''uknetdev'''<ref name=uk_uknetdev_on_github>{{cite web|title=uknetdev library on GitHub|url=https://github.com/unikraft/unikraft/tree/staging/lib/uknetdev|via=[[GitHub]]}}</ref> || A network device API that provides a unified interface to network devices. |- | '''ukbus'''<ref name=uk_ukbus_on_github>{{cite web|title=ukbus library on GitHub|url=https://github.com/unikraft/unikraft/tree/staging/lib/ukbus|via=[[GitHub]]}}</ref> || A bus API that allows for the registration and management of devices. |- | '''syscall-shim'''<ref name=uk_syscall-shim_on_github>{{cite web|title=syscall-shim library on GitHub|url=https://github.com/unikraft/unikraft/tree/staging/lib/syscall_shim|via=[[GitHub]]}}</ref> || A library that provides a POSIX-compatible system call interface. |} == Community == As of August 2025, the project has over 3200 stars on [[GitHub]] and over 100 contributors.<ref name=unikraft_repo /> The community of Unikraft is organized on a [[Discord]] server, where there are channels for the main subsystems of the project. Furthermore, on the Discord server, there are multiple meetings (general ones - called "community meetings" and thematic ones, specific per each track of the roadmap <ref name=roadmap>{{cite web|title=Unikraft Core Roadmap|url=https://github.com/orgs/unikraft/projects/24/views/1|via=[[GitHub]]}}</ref>), where any participant could attend.<ref name=unikraft_discord>{{cite web|title=Unikraft Discord Server|url=https://unikraft.org/discord}}</ref> The project organizes regular hackathons, which are hybrid events with the physical component often hosted at the [[Politehnica University of Bucharest]]. These hackathons provide an opportunity for new and existing community members to collaborate and contribute to the project.<ref name=hackathons_and_workshops>{{cite web|title=Unikraft Hackathos and Workshops|url=https://unikraft.org/hackathons}}</ref> === Google Summer of Code === Unikraft has been a participating organization in the [[Google Summer of Code]] (GSoC) since 2022. The project has hosted a number of students working on various aspects of the Unikraft ecosystem.<ref name=unikraft@GSoC22>{{cite web|title=Unikraft - Google Summer of Code 2022|url=https://summerofcode.withgoogle.com/archive/2022/organizations/unikraft}}</ref><ref name=unikraft@GSoC23>{{cite web|title=Unikraft - Google Summer of Code 2023|url=https://summerofcode.withgoogle.com/archive/2023/organizations/unikraft}}</ref><ref name=unikraft@GSoC24>{{cite web|title=Unikraft - Google Summer of Code 2024|url=https://summerofcode.withgoogle.com/archive/2024/organizations/unikraft}}</ref><ref name=unikraft@GSoC25>{{cite web|title=Unikraft - Google Summer of Code 2025|url=https://summerofcode.withgoogle.com/programs/2025/organizations/unikraft}}</ref> === Summer Workshops === During the summer, Unikraft also organizes multi-week virtual hackathons. These online events are led by members of the community and are designed to facilitate collaboration on specific projects over a period of three weeks.<ref name=hackathons_and_workshops /> == Apps, Frameworks and Languages support == Unikraft provides extensive support for a wide range of popular programming languages, allowing developers to build unikernels for new or existing applications without needing to change their preferred language. This is made possible by porting common language runtimes and libraries to the Unikraft ecosystem.<ref name=official_website>{{cite web|title=Official Unikraft website|url=https://unikraft.org/}}</ref><ref name=catalog>{{cite web|title=Unikraft Applications & Examples Catalog|url=https://github.com/unikraft/catalog|via=[[GitHub]]}}</ref> The official Unikraft application catalog provides pre-built, ready-to-run images for many languages and frameworks.<ref name=catalog /> == Hypervisor support == Unikraft unikernels can be run on a variety of [[Hypervisor|hypervisors]], including: * [[Xen]] * [[Kernel-based Virtual Machine|KVM]] * [[Firecracker (software)|Firecracker]] == Hardware support == <!-- TODO: RISC-V status? --> The current version of Unikraft SDK may build unikernels that are capable of running on [[x86]] and [[ARM architecture family|ARM]] architectures. The support for [[RISC-V]] is currently under development. == Tools == The main tools for working with Unikraft are: * '''kraft''': A command-line tool for building, running, and managing Unikraft unikernels. <ref name="kraft_tool>{{cite web|title=The kraft tool|url=https://unikraft.org/docs/cli/reference/kraft}}</ref> * '''menuconfig''': A configuration tool based on the Linux kernel's kconfig system, which allows for detailed configuration of the unikernel.<ref name="uk_build_system>{{cite web|title=Build System of Unikraft|url=https://unikraft.org/docs/internals/build-system}}</ref> == Categories == {{FOSS}} {{Operating system}} <!-- [[Category:Computing platforms]] [[Category:Cloud platforms]] [[Category:Free software programmed in C]] [[Category:Operating systems]] --> == References == {{reflist}} == External links == * [https://www.unikraft.org Official website] * [https://unikraft.org/community/papers Peer-reviewed Papers & Publications] * [https://www.github.com/unikraft/unikraft Unikraft] on [[GitHub]] * [https://www.youtube.com/@unikraft Unikraft] on [[YouTube]] * [https://www.twitter.com/UnikiraftSDK Unikraft] on [[Twitter]]

Import from clipboard

Paste your markdown or webpage here...

Advanced permission required

Your current role can only read. Ask the system administrator to acquire write and comment permission.

This team is disabled

Sorry, this team is disabled. You can't edit this note.

This note is locked

Sorry, only owner can edit this note.

Reach the limit

Sorry, you've reached the max length this note can be.
Please reduce the content or divide it to more notes, thank you!

Import from Gist

Import from Snippet

or

Export to Snippet

Are you sure?

Do you really want to delete this note?
All users will lose their connection.

Create a note from template

Create a note from template

Oops...
This template has been removed or transferred.
Upgrade
All
  • All
  • Team
No template.

Create a template

Upgrade

Delete template

Do you really want to delete this template?
Turn this template into a regular note and keep its content, versions, and comments.

This page need refresh

You have an incompatible client version.
Refresh to update.
New version available!
See releases notes here
Refresh to enjoy new features.
Your user state has changed.
Refresh to load new user state.

Sign in

Forgot password

or

By clicking below, you agree to our terms of service.

Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
Wallet ( )
Connect another wallet

New to HackMD? Sign up

Help

  • English
  • 中文
  • Français
  • Deutsch
  • 日本語
  • Español
  • Català
  • Ελληνικά
  • Português
  • italiano
  • Türkçe
  • Русский
  • Nederlands
  • hrvatski jezik
  • język polski
  • Українська
  • हिन्दी
  • svenska
  • Esperanto
  • dansk

Documents

Help & Tutorial

How to use Book mode

Slide Example

API Docs

Edit in VSCode

Install browser extension

Contacts

Feedback

Discord

Send us email

Resources

Releases

Pricing

Blog

Policy

Terms

Privacy

Cheatsheet

Syntax Example Reference
# Header Header 基本排版
- Unordered List
  • Unordered List
1. Ordered List
  1. Ordered List
- [ ] Todo List
  • Todo List
> Blockquote
Blockquote
**Bold font** Bold font
*Italics font* Italics font
~~Strikethrough~~ Strikethrough
19^th^ 19th
H~2~O H2O
++Inserted text++ Inserted text
==Marked text== Marked text
[link text](https:// "title") Link
![image alt](https:// "title") Image
`Code` Code 在筆記中貼入程式碼
```javascript
var i = 0;
```
var i = 0;
:smile: :smile: Emoji list
{%youtube youtube_id %} Externals
$L^aT_eX$ LaTeX
:::info
This is a alert area.
:::

This is a alert area.

Versions and GitHub Sync
Get Full History Access

  • Edit version name
  • Delete

revision author avatar     named on  

More Less

Note content is identical to the latest version.
Compare
    Choose a version
    No search result
    Version not found
Sign in to link this note to GitHub
Learn more
This note is not linked with GitHub
 

Feedback

Submission failed, please try again

Thanks for your support.

On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

Please give us some advice and help us improve HackMD.

 

Thanks for your feedback

Remove version name

Do you want to remove this version name and description?

Transfer ownership

Transfer to
    Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

      Link with GitHub

      Please authorize HackMD on GitHub
      • Please sign in to GitHub and install the HackMD app on your GitHub repo.
      • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
      Learn more  Sign in to GitHub

      Push the note to GitHub Push to GitHub Pull a file from GitHub

        Authorize again
       

      Choose which file to push to

      Select repo
      Refresh Authorize more repos
      Select branch
      Select file
      Select branch
      Choose version(s) to push
      • Save a new version and push
      • Choose from existing versions
      Include title and tags
      Available push count

      Pull from GitHub

       
      File from GitHub
      File from HackMD

      GitHub Link Settings

      File linked

      Linked by
      File path
      Last synced branch
      Available push count

      Danger Zone

      Unlink
      You will no longer receive notification when GitHub file changes after unlink.

      Syncing

      Push failed

      Push successfully