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

Re: [MirageOS-devel] [RFC/PULL]: Rumprun configuration specification and rototill


  • To: martin@xxxxxxxxxx
  • From: Anil Madhavapeddy <anil@xxxxxxxxxx>
  • Date: Mon, 4 Jan 2016 12:27:20 +0000
  • Cc: rumpkernel-users <rumpkernel-users@xxxxxxxxxxxxx>, mirageos-devel <mirageos-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Mon, 04 Jan 2016 12:27:36 +0000
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=recoil.org; h=content-type :mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; q=dns; s= selector1; b=EsUB7Tb7Mm+OxX8QBpreG6BnAzFx67pc+Ez4JS6mr9isLPvidT6 GstGU2ZDfkHyLD7iERWAFXFfYyL5p+bGnjr7rQ/s/wDf7qlUdTUPdtMGHNunqurt /LKGmAE0T/Gtdf4bvZNZQvLUplpNfs3DhnkpF3Xs0MQ+SCH456rsb2Sk=
  • List-id: Developer list for MirageOS <mirageos-devel.lists.xenproject.org>

On 4 Jan 2016, at 12:15, Martin Lucina <martin@xxxxxxxxxx> wrote:
> 
> If I have a Mirage/Rumprun hybrid unikernel (whether using -k or not,
> irrelevant) and I would like Rumprun to mount some block devices, but
> Mirage to handle the network stack, can I express this using a single
> JSON configuration?
> 
> I've not thought about this enough, but it would seem to imply that Rumprun
> config would handle "fs", but not "net", which would be passed to Mirage
> somehow. A strawman of how this could work:
> 
> 1) We would need to specify the method that rumprun uses to pass the
> configuration on to the application. This could be as simple as writing it
> out to "/config.json".
> 
> 2) In a hybrid unikernel as described above, presumably -lrumpnet_netinet
> and -lrumpnet_netinet6 would not be linked in. This would have to be
> exposed to config.c somehow (through a data structure with a list of
> baked-in components at rumprun-bake time?), and on this basis (no netinet),
> config.c would not handle those parts of the configuration.
> 
> I may be completely off on the wrong track here -- would appreciate input
> from the Mirage (and other?) unikernel folks on this list. This would also
> be a good discussion to have on the "cross-project" unikernel.org once the
> discourse.org setup there is complete.

It sounds to me like this is a map function over the configuration: you
want to pass the JSON tree to a function that descends over the various
nodes that convert the configuration into a concrete (device_tree,linker)
tuple.

The output of this could then grabbed by the linker or domain builder in
order to satisfy their particular jobs.  Bear in mind that Mirage or
HalVM may also want their own linking flags that are OCaml- or Haskell-
specific as well.

So if Mirage provided a set of command-line binaries that accepted
a JSON configuration fragment for just the network and storage setup,
and rumprun have the ability to shell out to them to delegate a portion
of the configuration, that might be a nice way to glue different toolchains
together...?

(Assuming I've understood rumprun's role in this correctly as the main
entrypoint command).

-anil

_______________________________________________
MirageOS-devel mailing list
MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel


 


Rackspace

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