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

Re: no meeting today; but in two weeks



Hi, this is what we said at the meeting (2022-06-22) and we scheduled another meeting in 2 weeks (2022-07-06 14:00 - 15:00 (CEST)). Thanks for your participation.
Sorry for my english and if I missed something, please tell us through this email :) ! Enjoy.

PS: I will let Hannes send another email to schedule the next meeting.

# Mirage 2022-06-22

## Presentation round

reynir: I'm in robur :)

pierre: I'm Pierre, CS teacher (in France, Bretagne), I recently joined MirageOS. I want to use it and teach new things to my students.

thomas: continue to work on eio and OCaml 5 stuff. I plugged eio into lwt and async. It should be possible to plug into MirageOS

timada: from Japan, working on Solo5 and microcontrollers, I finished implementing 40% percent of tenders. I look into details.

## What is going on about mirage

romain: Hannes did a PR about reproducible builds and added few meta-informations into the generated OPAM files to let `orb` to build unikernels: https://github.com/mirage/mirage/pull/1335
Some works was done about `ocaml-solo5` (thx to Pierre and Hannes) to provides some metrics about allocations on the C heap (with `dlmalloc`): https://github.com/mirage/ocaml-solo5/pull/120
A release of `ocaml-solo5` was done and a pending PR exists about `mirage-xen` to be able to get these informations: https://github.com/mirage/mirage-xen/pull/48
All of that is related to some issues found about `qubes-firewall` and Solo5, you can see the CHANGES.md of Solo5 here: https://github.com/Solo5/solo5/pull/518
Waiting to merge the reproducible build PR on MirageOS 4 and be able to:
1) do a release of `mirage-xen` (which includes allocation metrics)
2) do a release of `mirage` with right bounds about `mirage-xen`/`ocaml-solo5` (because the API was updated)

This release will be done probably in a few weeks.

## Job rounds

### Pierre round

pierre: question about memory consumption and mirage-xen PR (https://github.com/mirage/mirage-xen/pull/48) should we merge what we did on `mirage-xen` into `mirage-solo5` (because they use the same things, eg. solo5)
romain: for me it's good to do
pierre:I did an unikernel which implements a NAT router into the Tor network, https://github.com/palainp/torrefacteur
thomas: it's like an unix gateway?
pierre: I would like to replace the unix gateway by a VM, so yes be able to route some traffic on default gateway and route some traffic on tor
thomas: will be a useful unikernel
reynir: Hannes made a PR (https://github.com/mirage/ocaml-conduit/pull/414) into conduit which should fix the issue about the Tor unikernel
pierre: I saw the fix but I'm not sure how to use this fix. I think I need to work on something on what Hannes wrote on this PR
pierre: I also have a question. I wrote a code to work with ESP32 to be able to use it as a wifi card with the PPP protocol. Then, I can use this controller to process the wifi. I have a question about Gilbraltar (RPi4) which does not yet have a network. PPP interesting?
timada: if you want to use TCP/IP with MirageOS on a micro-controller, you need to have both a TCP/IP handling layer on MirageOS and also basically a packet transmitting/receiving layer which is provided on the C layer. For instance, the packet transmitting/receiving layer is implemented by the Linux operating system for unix, seccomp. For a microcontroller, you must have something which handles that.
romain: for RPi4, the difficulty is about the Ethernet driver which is missing from Gilbraltar. But if someone wants to implement the Ethernet driver, it's just a matter of plugging `mirage-tcpip` then and you have a full network stack. More concretely, you need to deal with *mbox* and interrupts to be able to implement the ethernet driver, a PR exists on Gilbraltar which handles interrupts from the CPU to the OCaml side (https://github.com/dinosaure/gilbraltar/pull/19). From it, you should be able to implement an Ethernet driver in OCaml may be (with few C codes)
timada: https://mcuxpresso.nxp.com/api_doc/dev/329/group__lpc__enet.html this is an ethernet driver target to bare-metal and it does not depends to highly complexe Linux things, it can be interesting. I think it's difficult to port the ethernet driver from Linux to bare-metal.
romain: Yeah. the ethernet driver for RPi4 provided by Linux is too complex for us and require too many things but I found a bare-metal ethernet driver too in C++ (https://github.com/rsta2/circle/blob/master/lib/bcm54213.cpp) (BCM54213PE PHY). From a quick look, it should not be super difficult to implement it.
timada: if we use a small microcontroller, in many cases the microcontroller provides something for ethernet/wifi. And you probably can use them. Like ESP32 provides that.

### Romain

romain: try to implement a peer-to-peer file-transfer with a simple tool and a unikernel as a relay. Implement the protocol with SPAKE2+EE (https://github.com/dinosaure/spoke) and the tool (https://github.com/dinosaure/bob)

# Thomas

thomas: Look into the eio supports on MirageOS 4, I would like to upgrade mirage-skeleton with eio. Be able to use the direct-style on some of them.

# Reynir

reynir: Caldav code, otherwise I work on builder/reproducible build
romain: maybe you can talk about caldav
reynir: It's an unikernel which implements a CalDAV server with the CalDAV protocol. Git is used as the store. You can create users and multiple calendars.
romain: we currently use it (4 peoples) to find some bugs by usage and improve it.

# Timada

timada: Solo5 on microcontrollers, I also need to understand the muen Solo5. Especially the muen framework. The new building framework is different from the previous one. Look into `ocaml-solo5`, `solo5`
romain: yeah the new layout of Solo5 is about _toolchains_. Solo5 provides a new toolchain (like `cc`, `ld` and `objcopy`) which is a wrapper with a compiler (like `gcc` or `clang`) or a cross-compiler (like `aarch64-gcc`). Then, `ocaml-solo5` uses this C toolchain to compile the _caml runtime_ and provide a new OCaml _toolchain_. At the end, for the mirage tool and depending on what the user wants, we choose the right OCaml _toolchain_.
timada: What about `opam monorepo`?
romain: Yeah, it's mostly about (transitive?) dependencies which include C stubs. We must compile them with certain flags (like `-ffreestanding` or `-nostdlib`). These flags will be provided by the OCaml toolchain which use the correct C toolchain (the `cc`/`ld`/`objcopy` provided by Solo5 first). By this way, we compile everything needed by the unikernel into a coherent `dune`'s context.
timada: I'm currently testing my test compilation with a very simple Makefile. It does not care about `opam-monorepo`. I will look into that.

Le mer. 8 juin 2022 à 08:05, Hannes Mehnert <hannes@xxxxxxxxxxx> a écrit :
Hi,

sorry I'm not able to make it today. So the next meeting will be in two
weeks, June 22nd 14:00 CEST (ics attached). I'll write a reminder before
that takes place.


Best,

Hannes


On 27/05/2022 12:08, Hannes Mehnert wrote:
> The next meeting will be on June 8th at 14:00 CEST (again on
> https://whereby.com/ocamllabs). The agenda and minutes at
> https://pad.data.coop/jgZ3NnyETWaaIT-5FM8ceA# (ics attached)


--
Romain Calascibetta - http://din.osau.re/

 


Rackspace

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