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
- Fast boots
- Predictable performance (low latency use cases)
- Small binaries
- Everything in one language means you don't need to learn both the language and the OS
And the drawbacks
- Running multiple applications is hard/impossible
- Device drivers have to be rewritten
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