Thanks for attending the meeting yesterday, notes below -- I'll send a
reminder for May 11th (14:00 CEST) on Friday May 6th (ICS attached), pad
https://pad.data.coop/UYg4LbYLSNySD50QiQrPYg#
Best,
Hannes
# MirageOS meeting 2022-04-27
attendees: Taka (@timada), Romain (@dinosaure), magnus (@magnuss),
pierre (@palainp), gwen (@clecat), Thomas Leonard (@talex5), Mindy
(@yomimono) https://somerandomidiot.com, hannes (@hannesm), thomas
(@samoht), Lucas (@thelortex)
## Brief introductions
- H: getting MirageOS unikernels deployed
- Y: Web App & File system
- M: Motivation is everything compiled to a single binary, interesting
network applications w/composable stack
- TL: last main thing was mirage-qubes-firewall, now OCaml 5 and effects
- P: teaching at university, bringing computing to students
- G: surrounding libraries like decompress etc.
- Taka: joined OCamlLabs in 2016 for 1 year, working on real-time OS
vendor, MirageOS talking to embedded microcontrollers
- TG: leading Tarides team including (Multicore) OCaml compiler,
tooling, goal is making MirageOS a sustainable OS community, getting
shared funding
- L: since 2018 working with MirageOS & OCaml, now at Tarides, did the
MirageOS 4.0 release (cross-compiling, interested in multicore)
- D: deploying MirageOS unikernels, worked on various libraries
## MirageOS for microcontrollers:
- Taka has a board with one SOC (ARM cortex 53/64) - similar to
raspberry Pi3 (32 bit)
- also some more cores (ARM & texas instruments)
- TI AM64X
- goal is: real-time video streaming (with MirageOS)
- https://www.ti.com/product/AM6442?keyMatch=AM64X
- Taka opened various PRs for OCaml-solo5 & solo5 & ... 32 bit support
- Bare-metal MirageOS on ARM64 by dinosaure (including device drivers,
how to handle interrupts, ...) -- see
https://github.com/dinosaure/gilbraltar
- Plan: use a hardware abstraction layer for device drivers, see
https://www.st.com/resource/en/user_manual/dm00105879-description-of-stm32f4-hal-and-ll-drivers-stmicroelectronics.pdf
- TG: we looked into riot os for device drivers (and reuse their
drivers), M: there will be a presentation in a few weeks (Tarides had
two internships about that; target was to run on a SoC from nordic
semiconductors)
## Unikraft
- TG joined their discourse instance
- Lots of activity there, including deployment stories
- Unikraft is a set of libraries to run your unikernel on
- Basically a split of mini-os into different libraries
- They have open weekly meetings Thursday 10:00 CEST
- Lively community, let's collaborate (and have a Mirage-unikraft story)
- Comparison between unikraft and solo5: unikraft tries to support a lot
of syscalls (is there a way to exclude some, and minimize the binary?)
- Do they support SMP? Not yet, they're working on it.
- Effect system of OCaml 5 with unikraft
- L: Build system is much more complex, we need to figure out a way to
have the build systems of unikraft and mirage collaborate
- Y: there may be others building on top of unikraft
- L: root build system is unikraft, mirageos is only one module
- TG: we want mirage to drive the build, let's discuss this with
unikraft people
## OCaml 5
- L: first let's get effects in MirageOS and a single domain
- L: as a second step, get multi domain support in MirageOS
- H: let's also investigate the performance of MirageOS unikernels on
single core
- TL: we'd have to rewrite the drivers (to use multiple cpus)
- let's get a performance harness (firewall, video streaming, web
server) in place to measure and improve
- Taka: something like the perf command in Linux
- TG: we have memtrace (of the OCaml runtime), OCaml 5 has a new API and
better event tracing system (of low level tracing)
- Taka: there is mirage-tracing which does not support solo5
- TL: hannes has a memtrace with MirageOS, mirage-tracing needs a shared
memory buffer (and works when the unikernel crashes)
- Taka: wants performance tracing for solo5
## magic-trace
- TG: anyone used magic-trace? would be nice to get it working with VMs
- L: works only on Linux
- TG: could be used with spt unikernels?
## multiboot and MirageOS
- P: doesn't work anymore, worked with earlier versions of xen & qubes &
solo5
- Y: this is a really good question for qubes-devel
- H: try use a binary from https://builds.robur.coop/job/qubes-firewall/
(mirage3 + solo5 0.6)
## next meeting May 11th 14:00 CEST https://whereby.com/ocamllabs
BEGIN:VCALENDAR
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Europe/Paris
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
UID:019dbaec-edd2-41cb-9435-cd1cd120680f
DTSTAMP:20220428T131513Z
DTSTART;TZID=Europe/Paris:20220511T140000
DTEND;TZID=Europe/Paris:20220511T150000
CREATED:20220428T131447Z
LAST-MODIFIED:20220428T131513Z
SUMMARY:mirage meeting
TRANSP:OPAQUE
LOCATION:https://whereby.com/ocamllabs
DESCRIPTION;ALTREP="data:text/html,%3Cbody%3Ehttps:%2F%2Fpad.data.coop%2FUYg4LbYLSNySD50QiQrPYg%23%3C%2Fbody%3E":https://pad.data.coop/UYg4LbYLSNySD50QiQrPYg#
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER;VALUE=DURATION:-PT5M
DESCRIPTION:Default Mozilla Description
END:VALARM
END:VEVENT
END:VCALENDAR