First, I want to say that I'm a huge fan of the emerging unikernel and
"Cloud OS" (i.e. OSv) approaches to operating systems. I also am a huge fan
of static type systems and have used OCaml in a production environment at a
previous job. I've been casually tracking Mirage OS from a distance for a
few years now and I just recently came across what I think might be an
ideal use case for it or one of the alternative unikernels at work so I
decided to build an development Linux VM for testing the waters with Mirage
OS 2.4 and I have run into several issues.
First, I actually tried installing Mirage on a Fedora 21 VM but quickly ran
into package version conflicts between various dependencies of the
OCaml/Opam/Mirage toolchain. OCaml 4.02 breaks things I guess. I think the
instructions for installing on Fedora are out of date for this scenario.
So after ditching Fedora, I went with what appeared to be the more common
path Ubuntu, specifically Ubuntu 15 and everything was going fine until I
got to working through the tutorial and got to the network examples in
mirage-skeleton and I started getting build errors with confusing somewhat
cryptic error messages. So I think I've hit my final brick wall with this
and I'm curious if anyone else is seeing similar issues?
What I have set out with as my POC goal was to create a simple web service
that accepts a HTTP POST for registering routes for forwarding traffic on
specific UDP ports for an ingress address to a specific destination address
and UDP port. I didn't think it would be too hard to piece together, from
the examples I've seen. But I have yet to get any networking samples built
or running yet.
The first problem I encountered isn't really a blocker, more an annoyance,
but every time I run "mirage configure --unix", opam can't seem to find the
dependency "m4" and prompts me to reinstall it with apt-get. I don't know
if this is specifically a problem with Mirage OS, could be opam I suppose.
Second, when I built the stackv4 example from mirage-skeleton I get this
error:
File "main.ml", line 1: Error: The files
/home/robert/.opam/system/lib/mirage-console/console_unix.cmi and
unikernel.cmi make inconsistent assumptions over interface Cstruct
Which isn't as bad as your average C++ meta-template error but it is still
fairly cryptic.
Third, when I managed to get one of the network samples building, for
example "ping", I couldn't get the unikernel running locally with a tun/tap
device I created. Even though I use tapctl to create a tap0 device owned by
my user account, just like the tutorial advises, when I go to execute the
unikernel I still get this error:
Fatal error: exception Failure("net_tap0")
Raised at file "src/core/lwt.ml", line 788, characters 22-23
Called from file "src/unix/lwt_main.ml", line 34, characters 8-18
Called from file "main.ml", line 47, characters 2-28
With the latest iteration of by Mirage development VM I'm running Ubuntu
15.04, OCaml 4.01.0a, Opam 1.2, and Mirage 2.4.0. Am I doing something
wrong or maybe am I just running too close to the bleeding edge versions of
everything?
-Robert
_______________________________________________
MirageOS-devel mailing list
[email protected]
http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel