Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
The article goes into some detail about different reasons you might want a minimal userland -- test harnesses, recovery environments, and pseudo-embedded environments. I do something similar in the test framework for https://github.com/jmillikin/rust-fuse -- to perform an integration test, I boot Linux in QEMU with a tiny custom /init.
More generally, the Linux kernel has a lot of code in it that is of generally reasonable quality and has received a lot of benchmarking/testing from well-resourced users. Sure, I could run some unikernel with a third-party network stack and SCSI drivers and ext4 implementation, but Linux already has all that stuff and it's ubiquitous. Why would I care about the extra ~30 MiB of RAM or whatever that it takes?
And that's before we even get to the topic of sharing code between environments. I can run the same unmodified binary on my desktop and on a minimal kernel-only Linux, which is not generally true of most alternative kernels.
It gives you access to 100% of Linux's system calls. It eliminates a lot of global state. It gets rid of a lot of legacy libc crap.
Years ago I wrote a fairly referenced rationale in my liblinux project:
https://github.com/matheusmoreira/liblinux/blob/master/READM...