A few general questions about L4

Maciej Katafiasz 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 
particular drivers.

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.

Maciej Katafiasz

More information about the l4-hackers mailing list