MirageOS is a library operating system that constructs unikernels
OCaml Shell Other
Latest commit 784ca9f Feb 13, 2017 @yomimono yomimono committed on GitHub Merge pull request #788 from dave-tucker/min-4.03.0
readme: Bump minimum OCaml version to 4.03.0
Permalink
Failed to load latest commit information.
doc types/V1 -> types/mirage_types, types/V1_LWT -> types/mirage_types_lwt Jan 6, 2017
lib explain why we make an empty myocamlbuild.ml Jan 30, 2017
lib_runtime split out stacks/protocols from mirage-types, remove now-unused mirag… Jan 5, 2017
pkg no need to depend on mirage-types from mirage-runtime anymore Jan 11, 2017
scripts Remove `nat-script.sh` from the scripts directory, to be available Jan 12, 2016
types no need for result anymore (not referenced in Mirage_types) Jan 10, 2017
.gitignore Switch to topkg Jul 13, 2016
.merlin minor fixes Jan 10, 2017
.opam-config-exec update Dockerfile to work with current mirage-dev Nov 11, 2014
.travis-ci.sh restore opam depext to travis-ci.sh Nov 15, 2016
.travis.yml Always pin the local version of mirage, mirage-types and mirage-runtime Dec 28, 2016
CHANGES.md include types change in CHANGELOG, update year for 3.0.0 Jan 11, 2017
Dockerfile Dockerfile: add sudo and vim Mar 7, 2016
Dockerfile.doc doc: pin odoc to a known working version Feb 9, 2017
LICENSE.md remove @samoht @avsm from LICENSE as individual files have owners Oct 3, 2016
Makefile Split V1 into pieces Dec 22, 2016
README.md readme: Bump minimum OCaml version to 4.03.0 Feb 10, 2017
_tags no need to depend on mirage-types from mirage-runtime anymore Jan 11, 2017
build adapt the topkg to restore the mirage-types.lwt subpackage Sep 30, 2016
mirage-runtime.opam require recent functoria+runtime Jan 12, 2017
mirage-types-lwt.opam pull newer opams from mirage-dev Jan 18, 2017
mirage-types.opam pull newer opams from mirage-dev Jan 18, 2017
mirage.opam require recent functoria+runtime Jan 12, 2017

README.md

MirageOS

MirageOS is a library operating system that constructs unikernels for secure, high-performance network applications across a variety of cloud computing and mobile platforms. Code can be developed on a traditional OS such as Linux or MacOS X, and then compiled into a fully-standalone, specialised unikernel that runs under the Xen or KVM hypervisors as well as lightweight hypervisors like BSD's bhyve. Xen and KVM power many public clouds; MirageOS unikernels are currently running on Amazon's Elastic Compute Cloud and Google Compute Engine, and maybe others!

The most up-to-date documentation can be found at the homepage. The site is self-hosted, and is itself a useful example. Simpler skeleton applications are also available online.

Build Status docs

This repository

This repository includes:

  • a command-line tool to create and deploy applications with MirageOS; and
  • in types/, a library of type signatures that compliant applications use.

There are several diverse backends in MirageOS that require rather specialised build steps (from Xen to KVM unikernels), and this complexity is wrapped up in the tool.

To work with mirage, you'll need to either install prerequisites locally or use the Docker image.

Local install

You will need the following:

  • a working OCaml compiler (4.03.0 or higher).
  • the OPAM source package manager (1.2.2 or higher).
  • an x86_64 or armel Linux host to compile Xen kernels, or FreeBSD, OpenBSD or MacOS X for the userlevel version.

Docker image

There is a maintained Docker image at unikernel/mirage. You can also use the Dockerfile in this repository:

docker build -t mirage .
docker run -v <your-source>:/src opam config exec -- mirage

Using mirage

There are two stages to using mirage:

  • a configure phase where necessary code is generated and dependencies are determined.
  • an optional depends phase where OPAM package dependencies are satisfied.
  • a build phase where the compiler and any support scripts are run.

You can find documentation, walkthroughs and tutorials over on the MirageOS website. The install instructions are a good place to begin!