- speaking now: @mindypreston (@yomimono on github)
- we released version 3.0 in February
- tl;dr: supports KVM via the solo5 project
- better errors
- better logs
| I figured out some of the wiring for this script to clear out and add firewall rules. Change `ocamldev` to the dev VM you'll launch, and `fetchmotron` to the VM which is a client of the firewall under test if necessary (you should only need to do this in update-firewall). | |
| In dom0: | |
| make a file in /etc/qubes-rpc called yomimono.updateFirewall: | |
| ``` | |
| sudo bash |
| Hello all, | |
| We are happy to announce the release of version 3.1.0 of MirageOS. Full release notes are available at https://github.com/mirage/mirage/releases/tag/3.1.0. Thanks to hannes for handling this release, and to mato for documentation updates! | |
| 3.1.0 is compatible with the recently-released version 0.3.0 of the solo5 execution environment. solo5 (and, in 3.1.0, therefore MirageOS) now includes experimental support for several new environments: | |
| * the Muen Separation Kernel[1] (with `mirage configure -t muen`) | |
| * FreeBSD vmm (with `mirage configure -t ukvm`) | |
| * OpenBSD vmm (with `mirage configure -t ukvm`) | |
| * ARM64 hosts[2] (with `mirage configure -t ukvm`) |
| user@whale:~/minim$ cat Dockerfile | |
| FROM ocaml/opam:alpine-3.5_ocaml-4.04.0 as ocaml | |
| FROM scratch | |
| COPY --from=ocaml /bin/sh / | |
| CMD ["/sh"] | |
| user@whale:~/minim$ docker build -t minim . | |
| Sending build context to Docker daemon 53.76kB | |
| Step 1/4 : FROM ocaml/opam:alpine-3.5_ocaml-4.04.0 as ocaml |
| Less Code, Less Magic, More Results | |
| ## Major Changes | |
| * The solo5 targets `ukvm` and `virtio` (see [https://mirage.io/blog/introducing-solo5]), which allow unikernels to run on KVM hypervisors and on FreeBSD via bhyve, are now available in the mainline `mirage` package. These targets use a newly refactored freestanding OCaml runtime (see [https://github.com/mirage/ocaml-freestanding]). | |
| * The `V1` and `V1_LWT` modules, which contained module type definitions agreed upon by implementations used in `mirage`, have been renamed to `Mirage_types` and `Mirage_types_lwt`. The module type definitions themselves are no longer contained in this repository, but have been moved to their own independently-versioned repositories and are merely referenced from `Mirage_types` and `Mirage_types_lwt`. | |
| * Across the universe of module type definitions, errors in computation are now signalled by a `result` type and a set of polymorphic variants representing common errors that might occur. Individual implementations may extend |
| 337 (* Compose the overall thread from the various tx/rx threads | |
| 338 and the main listener function *) | |
| 339 let tx_thread = (Tx.thread t pcb ~send_ack ~rx_ack) in | |
| 340 let rx_thread = (Rx.thread pcb ~rx_data) in | |
| 341 let wnd_thread = (Wnd.thread ~utx ~urx ~wnd ~state ~tx_wnd_update) in | |
| 342 let threads = [ tx_thread; rx_thread; wnd_thread ] in | |
| 343 let catch_and_cancel = function | |
| 344 | Lwt.Canceled -> () | |
| 345 | ex -> | |
| 346 (* cancel the other threads *) |
| open Lwt | |
| open V1_LWT | |
| module Main (C: V1_LWT.CONSOLE) (CLIENT_STACK: V1_LWT.STACKV4) = struct | |
| let local_webserver="8.8.8.8" | |
| let port = 5162 | |
| let start c client_stack = | |
| let construct_request () = | |
| let buf = Io_page.(to_cstruct (get 1)) in |
| open Lwt | |
| open Printf | |
| open V1_LWT | |
| open Re_str | |
| module Main (C:CONSOLE) (FS:KV_RO) (S:Cohttp_lwt.Server) = struct | |
| let start c fs http = | |
| let read_fs name = |
| open Mirage | |
| (* If the Unix `MODE` is set, the choice of configuration changes: | |
| MODE=crunch (or nothing): use static filesystem via crunch | |
| MODE=fat: use FAT and block device (run ./make-fat-images.sh) | |
| *) | |
| let mode = | |
| try match String.lowercase (Unix.getenv "FS") with | |
| | "fat" -> `Fat | |
| | _ -> `Crunch |
| #include <Adafruit_NeoPixel.h> | |
| #define PIN 6 | |
| #define PIXELS 7 | |
| #define MAX_PERTURBATION 3 | |
| #define RANDOM_SOURCE 10 | |
| Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXELS, PIN, NEO_GRB + NEO_KHZ800); | |
| void setup() { |