
The Fiasco microkernel - ingve
https://l4re.org/fiasco/features.html
======
als0
There are two notable projects here:

L4Re is a (reasonably) portable L4 userspace environment and has a large
collection of ported libraries (e.g. zlib etc).

Fiasco is the L4 microkernel they have developed for many years. It is
different to the others because it is written in C++ and heavily object
oriented. It also has concurrency in the kernel unlike simple systems like
seL4, although at a complexity cost.

As a side note, these guys also develop L4Linux: a paravirtualized mod of
Linux that runs on top of L4 as a task. This enables more realtime tasks to
run alongside Linux. Kudos to these guys and their projects.

~~~
microcolonel
I think there is a lot of promise in pulling mature components from Linux,
OpenBSD, and Solaris/Illumos (or whoever does SunOS these days) across that
paravirtual barrier, and progressively tailoring them toward the microkernel
environment; while testing them using the systems they originate from.

Over time, maybe a microkernel could become the basis of most of these former
monoliths.

~~~
nickpsecurity
The Dresden and Genode folks do it a bit different: just virtaulize the OS as
a user-mode application. Then, some add ability to reuse device drivers across
VM's to get the drivers specific OS's (esp Linux) support. From there, you can
slowly pull code out as standalone or native applications as you described.
There's usually middleware (eg Camkes) that lets the standalone code talk to
code inside the VM. I'll give Genode as an example of mixing native and VM
code.

[https://genode.org/documentation/general-
overview/index](https://genode.org/documentation/general-overview/index)

------
problame
For those interested in background of the microkernel (not the L4 runtime
environment): Jochen Liedtke, On microkernel construction.
[http://elf.cs.pub.ro/soa/res/lectures/papers/lietdke-1.pdf](http://elf.cs.pub.ro/soa/res/lectures/papers/lietdke-1.pdf)

------
presscast
I only have superficial knowledge of kernel-level systems, so a list of
features doesn't give me a sense of a project's reason for existing. What's
this project solving, exactly?

~~~
ahartmetz
It is an implementation of the L4 microkernel API. Microkernel systems can be
more reliable than monolithic kernels, but traditionally have the problem of
high communication overhead between the services constituting the kernel. The
Mach kernel (used by macOS and others) is an example of a known slow
microkernel. L4 implementations have been demonstrating since the mid 90s that
low overhead microkernels are possible.

I wonder why neither Minix 3 nor Fuchsia are using L4. (I guess they may have
learned the main lessons from L4 and chose to write those few thousand lines
of code themselves for flexibility and control. Strangely, nobody likes to
talk about it.)

~~~
presscast
Thanks for the overview. This is exactly the level of analysis I was looking
for!

>The Mach kernel (used by macOS and others)

Where/how does this typically manifest itself? Why isn't macOS slow/sluggish?

~~~
atombender
While Mach 3.0 was designed to be a microkernel, macOS doesn't actually use it
as one. The entire kernel, called XNU, runs in kernel mode, just like Linux.

The macOS kernel had a reputation for sluggishness back in its early days, due
(to the best of my understanding) due to the sluggishness of Mach messaging,
which is how Mach implements system calls to the kernel. macOS also supports
BSD syscalls, and Apple has apparently done enough optimization here that it's
now roughly on par with Linux.

Around 2006, Apple did have an internal, experimental version of macOS
("Darbat") which ran Mach on top of the L4 microkernel, but this project was
canceled, for whatever reason.

~~~
butterisgood
Darbat seems to be what's running in the Secure Enclave of the iPhone. Or at
least something like it.

[https://www.blackhat.com/docs/us-16/materials/us-16-Mandt-
De...](https://www.blackhat.com/docs/us-16/materials/us-16-Mandt-Demystifying-
The-Secure-Enclave-Processor.pdf)

Pretty darned awesome.

Fiasco is GREAT. You at least used to be able to run it with DROPS which had a
cool desktop/demo disk where you could just launch a bunch of Debian Linux
instances as L4 tasks. It was like VMWare on crack at the time when I tried
it.

I think FiascoUX might still exist... you can run Fiasco as a userspace
process on linux then run linux in ... oh I've gone cross-eyed..

~~~
nickpsecurity
DROPS is still available here:

[http://demo.tudos.org/eng_about.html](http://demo.tudos.org/eng_about.html)

It was one, cool-ass demo. I especially liked firing up VM's lightening-fast
given I was reading people say they use containers since VM's are too slow and
inefficient. Maybe the people building their favorite VM's just aren't good at
efficiency. Build on L4/L4Linux instead. ;)

------
pjmlp
As Portuguese and microkernel advocate, I would really like that they had
chosen a different name for the OS.

Fiasco means total failure without any kind of possible rescue in Portuguese.

~~~
billsmithaustin
It means that in English, too.

~~~
albuquerque
Also in French!

~~~
escherplex
Wondered why that name was chosen too. Etymology meaning _failure_ does show
it to come from Italian _far fiasco_ = _make a bottle_ = _dud theatrical
performance_. Reminds you of GM motors wondering why their Chevy Nova wasn't
selling well in Latin America. Why? In Spanish _Nova_ = No va = It doesn't go
(work).

~~~
nix0n
Snopes[0] disagrees with this story.

[0] [https://www.snopes.com/fact-check/chevrolet-nova-name-
spanis...](https://www.snopes.com/fact-check/chevrolet-nova-name-spanish/)

~~~
escherplex
It is still a marketing class cliché [1] however debunked

[1] [https://www.thoughtco.com/chevy-nova-that-wouldnt-
go-3078090](https://www.thoughtco.com/chevy-nova-that-wouldnt-go-3078090)

------
protomyth
License is GNU GENERAL PUBLIC LICENSE 2.0 according to
fiasco-18.09/src/kernel/fiasco/COPYING

------
pavlov
In Martin Amis's "Money" (1984), the protagonist drives a purple Italian
sports car whose make is Fiasco.

No relation to the microkernel, except maybe the modest suggestion that a
purple car would make a nice logo because it’s a great book.

------
glenrivard
Been following along with the development of Zircon.

[https://github.com/fuchsia-mirror/zircon](https://github.com/fuchsia-
mirror/zircon)

What is cool is Google does this in the open and you can follow along. See
which things have place holders and where the focus moves from day/week/month
to day/week/month.

Also developers on iirc and Travis super nice guy.

I am old an worked with internals for decades and this is the most excited I
have been about a kernel in a very long time.

Looks to me the layers of Fuchsia are going to also be ala cart.

So Flutter on multiple platforms. Zircon able to be used for a variety of
purposes and then in addition the kernel for Fuchsia.

