mirage-skeleton

Examples of simple MirageOS apps

Github星跟蹤圖

Build Status

mirage-skeleton

This repository is a collection of tutorial code referred to from the Mirage
website
, example code for using specific devices like
filesystems and networks, and higher-level applications like
DHCP, DNS, and Web servers.

  • tutorial/ contains the tutorial content.
  • device-usage/ contains examples showing specific devices.
  • applications/ contains the higher-level examples, which may use several
    different devices.

Prerequisites

  • Install latest OPAM (at least 2.0.0), following instructions at
    https://opam.ocaml.org/

  • Install the mirage package with OPAM, updating your package first if
    necessary:

    $ opam update -u
    $ opam install mirage
    $ eval `opam config env`
  • Please ensure that your Mirage command-line version is at least 3.7.0 before
    proceeding:
    $ mirage --version
    3.7.0

Trivial example

You can check that your build environment is working and get a feel for
the normal workflow by trying to compile the noop application.

    $ cd tutorials/noop
    $ mirage configure -t unix # initial setup for UNIX backend
    $ make depend # install dependencies
    $ make # build the program
    $ ./noop # run the program

Note that in the general case, you may need to specify more options at
the mirage configure stage. You can find out about them with
mirage configure --help. For example, you may need to specify what networking
method should be used, with, e.g., --net socket or --net direct at
the mirage configure stage.

Configure, Build, Run

Each unikernel lives in its own directory, and can be configured, built, and run
from that location. For example:

    $ cd applications/static_website_tls
    $ mirage configure -t unix # initial setup for UNIX backend
    $ make depend # install dependencies
    $ make # build the program
    $ ./https # run the program

If you want to clean up mirage's artifacts after building, mirage clean
will do the trick:

    $ cd applications/static_website_tls
    $ mirage clean

There is also a top-level Makefile at the root of this repository with
convenience functions for configuring, building, and running all of the examples
in one step.

    $ make all                   ## equivalent to ...
    $ make configure build
    $ make clean

Details

The Makefile simply invokes sample-specific sample/Makefile. Each of those
invokes the mirage command-line tool to configure, build and run the sample,
passing flags and environment as directed. The mirage command-line tool
assumes that the OPAM package manager is present and
is used to manage installation of an OCaml dependencies.

The mirage command-line tool supports four commands, each of which either
uses config.ml in the current directory or supports passing a config.ml
directly.

To configure a unikernel before building:

    $ mirage configure -t [hvt, virtio, qubes, macosx, unix, xen, genode, muen, spt]

The boot target is selected via the -t flag. The default target is unix.
Depending on what devices are present in config.ml, there may be additional
configuration options for the unikernel. To list the options,

Note: the option hvt needs mirage ≥ 3.2.0 - which you can get via
opam 2

    $ mirage help configure

and see the section labeled UNIKERNEL PARAMETERS.

To install dependencies

After running mirage configure:

    $ make depend

to install the list of dependencies discovered in the mirage configure phase.

To build a unikernel:

    $ make

The output will be created next to the config.ml file used.

To run a unikernel:

The mechanics of running the generated artifact will be dependent on the backend
used. For details, see
solo5's readme for hvt, virtio, etc.,
the qubes-test-mirage repository's readme for Qubes, or
the MirageOS website instructions on booting Xen unikernels.

For the Macosx and Unix backends, running as a normal process should suffice.

For summaries by backend that assume the hello example, see below:

Unix:

    $ cd hello
    $ mirage configure -t unix
    $ make depend
    $ make
    $ ./hello

Xen:

    $ cd hello
    $ mirage configure -t xen
    $ make depend
    $ make
    $ sudo xl create xen.xl -c

Hvt:

    $ cd hello
    $ mirage configure -t hvt
    $ make depend
    $ make
    $ solo5-hvt hello.hvt

Virtio:

    $ cd hello
    $ mirage configure -t virtio
    $ make depend
    $ make
    $ solo5-virtio-run ./https.virtio

Macosx:

    $ cd hello
    $ mirage configure -t macosx
    $ make depend
    $ make
    $ ./hello

Qubes:

Some specific setup in the QubesOS manager is necessary to be able to easily run
MirageOS unikernels -- please see the qubes-test-mirage readme for details.

    $ cd hello
    $ mirage configure -t qubes
    $ make depend
    $ make
    $ ~/test-unikernel hello.xen unikernel-test-vm

To clean up after building a unikernel:

    $ make clean

主要指標

概覽
名稱與所有者mirage/mirage-skeleton
主編程語言OCaml
編程語言OCaml (語言數: 5)
平台
許可證The Unlicense
所有者活动
創建於2012-12-15 15:46:48
推送於2025-05-21 09:08:32
最后一次提交
發布數1
最新版本名稱mirage-v2.6.1 (發布於 )
第一版名稱mirage-v2.6.1 (發布於 )
用户参与
星數231
關注者數27
派生數97
提交數1k
已啟用問題?
問題數65
打開的問題數4
拉請求數296
打開的拉請求數2
關閉的拉請求數45
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?