Solo5 Unikernel

Get the Code

Solo5 Unikernel implements a unikernel base, or the lowest layer of code inside a unikernel, which interacts with the hardware abstraction exposed by the hypervisor and forms a platform for building language runtime environments and applications. Solo5 currently interfaces with the MirageOS ecosystem, enabling Mirage unikernels to run on either Linux KVM/QEMU or a specialized unikernel monitor called “ukvm,” which is also available in the code repository.

You can watch the replay of the Solo5 Unikernel Tech Talk, recorded on August 3, 2016, and take a deeper dive into this emerging technology for packaging applications in the cloud.

Unikernels are an emerging technology for packaging applications for the cloud. They are small virtual machines that do not include a general purpose operating system (for example, Linux), but instead include a single application running with a small, special-purpose library operating system. (You can learn more at unikernel.org.)

Unikernels offer the following potential benefits:

  • Security (for example, a reduced attack surface)
  • Performance (for example, fast boot times and kernel bypass)
  • Management (for example, an embodiment of devops practices such as immutable infrastructure)

Unikernels are often written in a language with a strong static type system throughout that serves to further strengthen security arguments. (MirageOS, for example, uses OCaml.)

Why should I contribute?

Unikernels are notable in that you can contribute to exciting new cloud technology without getting too bogged down by large legacy code bases. You can contribute to Solo5 in almost any language. Solo5 is written in C, with some x86 assembly. It interfaces with hardware abstractions given by KVM/QEMU directly, so it’s perfect for low-level, close-to-the-hardware programming.

Because of Solo5’s interaction with the MirageOS ecosystem, there are many opportunities to learn OCaml (and also something about its internals). Alternatively, Solo5 is intended to be a base from which new runtimes can be implemented, so why not help Haskell unikernels move to Solo5? Or, if you love a particular language such as Swift, why not explore a Solo5/Swift unikernel by porting the Swift runtime to Solo5?

What technology problem will I help solve?

By exploring the unikernel base (Solo5), and the monitor underneath (ukvm), you have the opportunity to innovate or even completely redefine abstractions for tomorrow’s cloud, today.

The interface between unikernel and monitor influences the following areas:

  • Isolation and security
  • The ability or ease to introspect, debug, coordinate, or manage unikernels
  • The speed at which unikernels can boot

Read our HotCloud paper for more details.

How will Solo5 Unikernel help my business?

As application demands for cloud resources have increased, cloud architecture has evolved towards lighter-weight, more agile vehicles to run code on the cloud.

Unikernels can boot in as little as 10ms, which, in addition to their isolation and security properties, makes them extremely attractive for new on-demand cloud workloads. Three exciting emerging application domains, serverless computing, network function virtualization (NFV), and Internet of Things (IoT), require that kind of responsive technology. Solo5 can deliver speed, and in the interconnected marketplace, speed is a very big deal.