Mirage OS
About us
Our architecture
The MirageOS architecture can be divided into operating system libraries, typed signatures, and a metaprogramming compiler. The operating system libraries implement various functionalities, ranging from low-level network card drivers to full reimplementations of the TLS protocol, as well as the Git protocol to store versioned data. A set of typed signatures ensures that the OS libraries are consistent and work well in conjunction with each other. Most importantly, MirageOS is also a metaprogramming compiler that can input OCaml source code along with its dependencies, and a deployment target description to generate an executable unikernel, i.e., a specialised binary artefact containing only the code needed to run on the target platform. Overall, MirageOS focuses on providing a small, well-defined, typed interface with the system components of the target architecture.
Fast Start
MirageOS applications take a few milliseconds to start-up instead of the few minutes that traditional OS takes.
Small Binaries
MirageOS binaries are self-contained: they do not need an additional OS to execute. Despite this, the size of MirageOS binary is usually a few megabytes.
Small Footprint
MirageOS applications use a few megabytes of memory, while traditional applications and their associated OS waste gigabytes for simple applications.
Safe Logic
MirageOS applications are written in OCaml, an industrial strength programming language supporting functional, imperative, and object-oriented styles.
Development process
License
The Mirage codebase is released under the ISC license, with some portions of code released under LGPLv2.
Sub-Projects hosted by the Xen Project team typically use GPLv2. In the case of Mirage, it is necessary to use a permissive open source license such as “ISC” because Mirage based microkernels need to be statically linked with applications to form a stand-alone appliance.