The MirageOS Blogon building functional operating systems


MirageOS 1.2 released and the 2.0 runup begins

By Anil Madhavapeddy

Summer is in full swing here in MirageOS HQ with torrential rainstorms, searing sunshine, and our OSCON 2014 talk rapidly approaching in just a few weeks. We've been steadily releasing point releases since the first release back in December, and today's MirageOS 1.2.0 is the last of the 1.x series. The main improvements are usability-oriented:

  • The Mirage frontend tool now generates a Makefile with a make depend target, instead of directly invoking OPAM as part of mirage configure. This greatly improves usability on slow platforms such as ARM, since the output of OPAM as it builds can be inspected more easily. Users will now need to run make depend to ensure they have the latest package set before building their unikernel.

  • Improve formatting of the mirage output, including pretty colours! This makes it easier to distinguish complex unikernel configurations that have lots of deployment options. The generated files are built more verbosely by default to facilitate debugging, and with debug symbols and backtraces enabled by default.

  • Added several device module types, including ENTROPY for random noise, FLOW for stream-oriented connections, and exposed the IPV4 device in the STACKV4 TCP/IP stack type.

  • Significant bugfixes in supporting libraries such as the TCP/IP stack (primarily thanks to Mindy Preston fuzz testing and finding some good zingers). There are too many library releases to list individually here, but you can browse the changelog for more details.

 Towards MirageOS 2.0

We've also been working hard on the MirageOS 2.x series, which introduces a number of new features and usability improvements that emerged from actually using the tools in practical projects. Since there have been so many new contributors recently, Amir Chaudhry is coordinating a series of blog posts in the runup to OSCON that explains the new work in depth. Once the release rush has subsided, we'll be working on integrating these posts into our documentation properly.

The new 2.0 features include the Irmin branch-consistent distributed storage library, the pure OCaml TLS stack, Xen/ARM support and the Conduit I/O subsystem for mapping names to connections. Also included in the blog series are some sample usecases on how these tie together for real applications (as a teaser, here's a video of Xen VMs booting using Irmin thanks to Dave Scott and Thomas Gazagnaire!)

Upcoming talks and tutorials

Richard Mortier and myself will be gallivanting around the world to deliver a few talks this summer:

  • The week of OSCON on July 20th-24th. Please get in touch via the conference website or a direct e-mail, or attend our talk on Thursday morning. There's a Real World OCaml book signing on Tuesday morning for the super keen as well.
  • The ECOOP summer school in beautiful Uppsala in Sweden on Weds 30th July.
  • I'll be presenting the Irmin and Xen integration at Xen Project Developer Summit in Chicago on Aug 18th (as part of LinuxCon North America). Mort and Mindy (no jokes please) will be joining the community panel about GSoC/OPW participation.

As always, if there are any particular topics you would like to see more on, then please comment on the tracking issue or get in touch directly. There will be a lot of releases coming out in the next few weeks (including a beta of the new version of OPAM, so bug reports are very much appreciated for those things that slip past Travis CI!