MirageOS is a library operating system that constructs unikernels
CHANGES:
CHANGES:
CHANGES:
Be able to make a docteur image with a relative path (@dinosaure, #1324)
Update the project with ocamlformat.0.21.0
(@gpetiot, @dinosaure, #1286)
Upgrade the mirage
tool with opam-monorepo.0.3.0
and generate
a single OPAM file (@TheLortex, @hannesm, @dinosaure, #1327)
You should check the opam-monorepo.0.3.0
release to get more details about
updates and fixes.
chamelon
device, a filesystem with littlefs
(@dinosaure, @yomimono, #1300)pair
combinator for MirageOS key (@dinosaure, #1328)CHANGES:
--solo5-abi=xen
for qubes target (#1312, @hannesm)config.ml
with -f
(#1309, @dinosaure)--warn-errors
and --debug
flags (#1320, @samoht)--target=ukvm
(#1321, @hannesm)ocaml-freestanding
to ocaml-solo5
(#1314, @dinosaure, @samoht, @hannesm)CHANGES:
CHANGES:
mirage-runtime
as Opam considers 4.0.0~beta* < 4.0.0
(#1276, @dinosaure)CHANGES:
Refactor build process to use Dune build system. The
motivation is to drop ocamlbuild
-induced technical debt and to obtain
first-class support for cross-compilation. To learn more about how Dune is
able to perform cross-compilation, please refer to the
documentation.
Main changes:
Two opam files are generated when running mirage configure
:
<unikernel>-switch.opam
: for dependencies that are meant to be installed
in the user's opam switch. It comprises of build tools such as
ocaml-freestanding
for Solo5 targets.<unikernel>-monorepo.opam
: for unikernel dependencies, they are locally
fetched to compose a dune workspace.Unikernel dependencies are fetched in the source project using the
opam-monorepo
tool. This tool reads the <unikernel>-monorepo.opam
file and
make use of the opam solver to compute the transitive dependency set, saves
that as a lockfile, and fetch sources in the duniverse/
subfolder.
More info on the
Github repository.
The compilation scheme use dune
's concept of a workspace: it's a set of
libraries that are built together using the same context. For each
compilation target, the Mirage tool is able to generate a context definition
able to compile for that target. A context is defined by an OCaml compiler
(or cross-compiler) toolchain, as defined by findlib
, it can be tuned with
environment variables and custom flags for the OCaml or underlying C compiler.
The usual workflow mirage configure && make depends && mirage build
does
not change. However, files are now generated in the ./mirage
directory
(OPAM files, main.ml
, key_gen.ml
or manifest.json
), and
the final artefact is created in the ./dist
directory.
Breaking changes:
Unikernel dependencies need to use dune
as a build system. Other build
systems can be sandboxed, but the recommended way is to switch to dune
.
Many packages not compiling with dune yet have been ported and are available
as an additional
opam repository overlay.
In addition, a few packages not supporting cross-compilation have been fixed
and are available in another
opam repository
overlay. The mirage tool uses these two opam overlays by default. To only
use the default packages provided by Opam,
use mirage configure --no-extra-repo
.
Functoria_runtime.info
and Mirage_runtime.info
now list all the libraries
that are statically linked against the unikernel. The packages
field have
been removed and the libraries
field is now accurate and contains the
versions computed by dune-build-info
.
Update the DSL to describe devices into the config.ml
. We don't use
objects anymore, and we replace it with the usage of Mirage.impl
that
expects the same fields as before.
CHANGES: