marionnet.org — a virtual network laboratory

Development

Marionnet is free software, distributed under the GNU GPL, version 2 or later. It is developed on Launchpad, where the source repository and the bug tracker live.

The sources

The sources are in a public git repository, which you can clone with:

git clone https://git.launchpad.net/marionnet

The key that signs Marionnet’s apt and dnf repositories also comes from this repository. The installation guide asks you to check its fingerprint against a source other than this site: whoever controlled this server could replace both the packages and the fingerprint.

Building Marionnet

Marionnet is built with OCaml 5.4.1, installed through opam, and the camlp4 preprocessor. On a fresh clone, three commands are enough:

make dependencies
dune build
make install-final-as-root

The first one installs the distribution packages, then the opam switch (the project’s own OCaml environment) and the opam packages. The last one calls sudo itself, for the only step that needs it. Section 1.D of the full installation guide details these steps, as well as installing inside the opam switch for testing.

Reporting a bug

Defects are reported on Launchpad’s bug tracker (a Launchpad account is needed). Say which distribution you use, how you installed Marionnet, and what you did just before the problem.

Under the hood: what changed in 2026

The six changes
  • dune: the project moved from bzr and ocamlbuild to git and dune. A dune build is enough on a fresh clone: it also builds the camlp4 preprocessors, the C code and the UML tools.
  • OCaml 5: Marionnet is compiled with OCaml 5.4.1. It had long stayed on a version 4, the last one camlp4 was believed to support.
  • A text project format: a .mar project saved today describes the network in JSON, no longer as OCaml binary data. It can be read, compared (diff) and kept under version control; projects in the older formats still open (the v3 format).
  • The User Mode Linux tools are in the repository: the mconsole client, the consoles' port-helper and the tool that merges copy-on-write disks come from uml-utilities, frozen since 2007. They are now compiled with Marionnet, and fixed where they no longer passed today’s compilers or systems; Marionnet no longer depends on that package. To talk to its virtual machines it does not even call the client any more: it speaks the mconsole protocol itself, in OCaml.
  • Bundled libraries: ocamlbricks, the OCaml library written for Marionnet, and bashbricks, its counterpart for Bash scripts, are in the repository. The graphical interface is GTK 3, through lablgtk3.
  • Replayable proofs: nearly thirty driven-session benches each check one fixed defect (a bench must fail on the code from before), on any workstation, with no guest system and no privilege. More than half of them drive Marionnet by script, through its control channel (--control-socket).