[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: pre-1.0 progress

Meanwhile, Thomas and I've been fixing up the Unix execution environment to use the Release framework, so that the binaries running have a similar execution model, with a well-specified lifecycle.

The model (that Thomas is hacking on) is that mirari spawns a child process that drops as much privilege as possible, and establishes an IPC interface with the privileged master process, from which it gets all of its resources.  There is a per-user ~/.mirage directory which stores sockets of all the active instances, so that `mirari list` will work in Unix as well as Xen.

One important module type that needs to be added that of a JOB, which represents the lifecycle of a single unikernel process (such as a single webserver).  Since a job will need to satisfy some device dependencies, this is likely how we can wrap the register step in 2) below.  I'll make sure these both align up tomorrow...

PS: lots more slides available on http://decks.openmirage.org too -- I'm teaching using some of these tomorrow, so we can adapt them for tutorial purposes with a little more detail too.


On 2 Dec 2013, at 22:49, David Scott <scott.dj@xxxxxxxxx> wrote:


I thought I'd give a quick update on where I've got to with my current block hacking. I've experimentally added a "mirage-block" virtual package to my opam fork:

It's a bit like the "mirage" package; it comes in two flavours: "mirage-block-unix" and "mirage-block-xen".

Higher-level libraries like "fat-filesystem" (also in my fork) depend on "mirage-block" and the correct version should be installed depending on whether you're working on "mirage-unix" or "mirage-xen".

Inside mirage-platform itself, I've added an experimental block driver registration facility common to both unix and xen:

My plan is to modify the mirage-skeleton webserver example to read its resources from a fat-filesystem on a block device. Stuff left to do includes:

1. adjust mirage-block-xen to use the new BLOCK_DEVICE signature
2. figure out if there's any way of hiding the "register" step (otherwise all clients have to remember to register their block devices)
3. fix mirage-block-unix on OSX (currently broken due to use of Linux ioctls)
4. make the unix examples in fat-filesystem conditionally compile (they won't work on xen)

Separately I've been working on Jon Ludlam's LVM library, refactoring it to use the same BLOCK_DEVICE signature as everything else. Part of this involves creating a simple on-disk persistent queue (like the existing shared-memory-ring). Perhaps this will be useful for something else in future.

Dave Scott



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.