Day 2: Reading up on unikernels

Posted on 2025-07-14 by [rctcwyvrn]

First things first, https://github.com/rctcwyvrn/terrarium is set up, yippee!

Secondly, lets do some reading.

On the reading list today are

The unikernel wikipedia article

https://en.wikipedia.org/wiki/Unikernel

Mostly some more background on what exactly a unikernel is, and it's benefits and disadvantages

Mostly duplicated with notes from...

Unikernels: Rise of the Virtual Library Operating System

https://queue.acm.org/detail.cfm?id=2566628

A much more in-depth exploration into unikernels.

Talks about the wins that a unikernel brings

And the drawbacks

Hillarious quote:

The fast-moving world of commodity PC hardware meant that, no matter how many graduate students were tasked to write drivers, any research libOS prototype was doomed to become obsolete in a few short years

But VMs solve the second problem pretty handily, by providing a stable virtual device that you can write drivers for and never need to worry about!

In MirageOS, rather than treating the database, web server, etc. as independent applications that must be connected by configuration files, they are treated as libraries within a single application, allowing the application developer to configure them using either simple library calls for dynamic parameters or metaprogramming tools for static parameters. This has the useful effect of making configuration decisions explicit and programmable in a host language rather than manipulating many ad-hoc text files and thus benefiting from static-analysis tools and the compiler's type checker. The result is a big reduction in the effort needed to configure complex multiservice application VMs.

Explains exactly why I find the unikernel concept so facinating

Other stuff I skimmed through

https://www.youtube.com/watch?v=tR46qctHrCY https://www.youtube.com/watch?v=uj6pO8zXGNg

https://os.phil-opp.com/ looks very interesting https://github.com/StardustOS/stardust-oxide and https://github.com/hermit-os/hermit-rs as other rust unikernels