Mirage OS Logo

The MirageOS Documentation

and developer guides

Weekly Meeting: 2014-03-04
By Amir Chaudhry - 2014-03-04


  • tcp arp bug -- race in network setup?
  • homepage progress (dns deployment and homepages)
  • pick a date for a mirage tutorial day

Attendees: Amir Chaudhry (chair), Julian Chesterfield, Jonathan Ludlam, Anil Madhavapeddy, Mike McClurg, Richard Mortier, David Scott


tcp arp bug -- race in network setup?

There may be a possible race condition where an ARP request is sent before TCP. This is related to Julian's problem of getting an IP address into the VM (see mirage/issues/228). We need somewhere to put IP address retrieval mechanisms. Lots of options so where should all this logic go?

Has to be somewhere in Xenstore for guest to read it. Xenstore VIF backend/frontend - but doesn't let you send gateway. Is this a bit hacky?

Julian points out that a lot people don't manage IP via DHCP. Answer may be to have multiple bootstrap mechanisms as behaviour on KVM, Amazon etc will all be different. Dave also points out that in the future, Clouds might become multi-hypervisor.

For the time-being Anil can give Julian a custom unikernel that only compiles on Xen. Will have to revisit this problem later on and maybe come back to Cloud init later. It's still not clear what the longer-term answer is.

Homepage progress


  • dns deployment
  • end-to-end deployment of jekyll-based site

DNS deployment works -- An example has been committed to mirage-skeleton (see commit 5e29b793d3 and PR #34) but should be pulled out into a library at some point. Mort mentioned two needs for the DNS right now. One is the re-director and the other is one on punk that he can manage himself. Anil also needs one for anil.recoil.org.

End-to-end unikernels from Jekyll sites -- Amir got his website working end-to-end from a Jekyll-based site, using Travis for the build and then committing the Xen unikernel to a GitHub repo (see his Travis log). This is essentially the same workflow Anil and Mort have used and Amir is writing a post to explain the process (as well as why certain things are done).

Build times - The build time on Travis seems to be around 14-19 minutes with (roughly) about 3-5 minutes due to opam installation, 5-7 minutes during mirage build and another few minutes for the deployment steps. It would be great if this could be speeded up somehow. The obvious bottleneck seems to be the opam installation, as it's the same every time. This would speed up build by almost a third.

Anil pointed Amir to the Frenetic team's repo. They had a similar issue with Jane Street libraries (which take a while to install) and came up with a tarballed .opam directory. They install this in place during travis builds and you can see how it's used in the frenetic travis script and also how it's created (also using Travis). Amir will examine this at some point and Anil mentioned that we could use irminsule (in time), to solve this particular problem.

A side issue came up of the question of stable packages and ensuring that there's a 'known-good' set of packages for use with examples. The option of a repo of pinned pacakges was floated but general sentiment was that the opam repo itself should be stable and work with the examples in the repos. We should catch breakages.

Mirage tutorial day

Some discussion around picking a day for a Mirage tutorial. Anil has a number of people who've requested one so we should look for a day in late April or early May. Amir will send a doodle poll and we can take it from there.

Other things

SSL - This was mentioned as they were blocked on something, maybe related to sockets. Possibly also related to the TCP item above.

Google Summer of Code - Mentors should be encouraging students to apply. Requirements are that they're student (of any kind) at an accredited institution.