Unikernels are specialised, single address space machine images constructed by using library operating systems -- Wikipedia
Unikernels are library operating systems that provide the ability to run applications within a protected, single-address space environment. Such operating systems delegate the management of physical resources to an underlying hypervisor, which is treated as a trusted platform. Due to the absence of a large number of software components that commonly exist in monolithic operating systems, Unikernels can provide a more stable, small and secure environment in comparison. Currently, there are two main approaches:
Unlike monolithic operating systems such as Linux that permit libraries to be modified, recompiled, shared and dynamically linked, Unikernels typically rely on static linking to combine the application code and associated libraries with the kernel into an immutable, single-purpose virtual appliance and may therefore be seen to be more trustworthy. Other Unikernel approaches implement the ability to use shared libraries at run-time, which could in some circumstances be seen to present a security risk, but provide more portability for running Linux-based applications.
Oct 2023 (is this out of date? Send a PR)
Despite a lot of hype around 2015-2016, Unikernels did not gain much popularity, and have not been adopted by practitioners as software containers and related orchestration frameworks such as Docker and Kubernetes respectively.
The main blockers for a wider adoption of unikernels appear to be:
A few thoughts (correct me):
Currently, the only two with commercial support I could find are Unikraft and NanoOS. If you're looking to learn to make your own, check out the StardustOS project which is used to support the teaching and research activities at the University of St Andrews. This project actively maintains several Unikernel implementations including stardust which is written completely in C and stardust-oxide which is written in Rust, along with a minimal kernel for Xen that's easy to browse through.
| Project | language | src | started | last commit | status |
|---|---|---|---|---|---|
| Unik | Go | https://github.com/solo-io/unik | 2016 | 2019 | dead? |
| Project | description | status |
|---|---|---|
| Qubes OS | everything is a VM | active |
| gVisor | userspace Kernel | active |
| Firecracker | micro VMs (using KVM) | active |
Unikernels are specialised, single address space machine images constructed by using library operating systems -- Wikipedia
Unikernels are library operating systems that provide the ability to run applications within a protected, single-address space environment. Such operating systems delegate the management of physical resources to an underlying hypervisor, which is treated as a trusted platform. Due to the absence of a large number of software components that commonly exist in monolithic operating systems, Unikernels can provide a more stable, small and secure environment in comparison. Currently, there are two main approaches:
Unlike monolithic operating systems such as Linux that permit libraries to be modified, recompiled, shared and dynamically linked, Unikernels typically rely on static linking to combine the application code and associated libraries with the kernel into an immutable, single-purpose virtual appliance and may therefore be seen to be more trustworthy. Other Unikernel approaches implement the ability to use shared libraries at run-time, which could in some circumstances be seen to present a security risk, but provide more portability for running Linux-based applications.
Oct 2023 (is this out of date? Send a PR)
Despite a lot of hype around 2015-2016, Unikernels did not gain much popularity, and have not been adopted by practitioners as software containers and related orchestration frameworks such as Docker and Kubernetes respectively.
The main blockers for a wider adoption of unikernels appear to be:
A few thoughts (correct me):
Currently, the only two with commercial support I could find are Unikraft and NanoOS. If you're looking to learn to make your own, check out the StardustOS project which is used to support the teaching and research activities at the University of St Andrews. This project actively maintains several Unikernel implementations including stardust which is written completely in C and stardust-oxide which is written in Rust, along with a minimal kernel for Xen that's easy to browse through.
| Project | language | src | started | last commit | status |
|---|---|---|---|---|---|
| Unik | Go | https://github.com/solo-io/unik | 2016 | 2019 | dead? |
| Project | description | status |
|---|---|---|
| Qubes OS | everything is a VM | active |
| gVisor | userspace Kernel | active |
| Firecracker | micro VMs (using KVM) | active |