A few general questions about L4
mathrick at gmail.com
Mon Feb 21 15:17:50 CET 2011
I'm currently investigating L4 as the platform on which to base an OS I'm
considering writing, and for this reason I have several more or less specific
questions to help me get oriented in the whole L4 ecosystem.
As a matter of introduction, the OS I have in mind is a modern incarnation of a
Lisp Machine (http://en.wikipedia.org/wiki/Lisp_machine), attempting to marry
the good parts of LispM's such as hackability and the ability to inspect and
touch the OS on any level, without their problems (such as the great ease of
_crashing_ the OS by mistake, and their inherent lack of security and
compartmentalisation). The OS is intended to be practical, and I'm greatly
interested in preserving compatibility with existing software, and the ability
to mix Lisp apps with C libraries and vice-versa. The practicality requirement
also means that I want to avoid writing everything I can avoid writing, in
With this being said, here are my initial questions:
* Which implementations are currently considered active and sufficient for
basing new efforts on? I know Fiasco.OC, seL4, OKL4 and L4Ka. Out of these, seL4
and OKL4 are closed-source and proprietary, thus not really suitable for my
needs. Fiasco.OC seems active, L4Ka somewhat less so, with last full release
from 2004 (although the last commit to Hg seems to be from 2 months ago).
* Furthermore, Fiasco.OC includes, from what I understand, a capability security
model, which'd probably be handy for my purposes. However, I can find no
documentation on this model. Are there any docs I'm missing? That actually holds
for L4 in general as well as Fiasco, the only thing I could find is the X.2 API
reference manual, and the very incomplete user manual. Are there any more
complete versions of the user manual or other documents explaining the whys of
L4, not just hows?
* On the other hand, L4Ka has existing projects such as driver virtualisation,
which are of great interest to me, as mentioned in the introduction. Thus I'd
like to know how compatible in practice the different L4 implementations are. If
I took the code from L4Ka's Afterburner, is it at all possible to run it on top
of Fiasco, or would I have to rewrite it? Similarly, would it be possible to
port NICTA's L4/Darwin IOKit compatibility layer to another L4, or is it tied to
the specific implementation of L4 from NICTA?
* Since I want to preserve the compatibility with existing environments such as
POSIX and/or Win32, I'd like to know if anybody has done any practical research
into running multiple OS personalities on top of a microkernel such as L4. I'd
be extremely grateful for any links and/or advice regarding running
personalities, as well as mixing code operating within the different subsystems.
* Lastly, I'd like to know if there's any reasonably-populated IRC channel
dedicated to L4. Since I'm still very much exploring the problem space more than
the solution space, I appreciate the interactive nature of IRC, which helps me
formulate questions I might not even know I have yet. I've found one old mail
asking about IRC previously, with Adam's reply pointing to his personal
homepage, but I still wasn't able to find any L4 channels that way.
More information about the l4-hackers