Hello,
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.
Cheers, Maciej Katafiasz
Hi,
On Mon Feb 21, 2011 at 14:17:50 +0000, Maciej Katafiasz wrote:
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).
I think you observed the situation as it is.
- 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?
The whys are mainly described in papers, starting with the original ones from Jochen Liedtke. Based on those thoughts many others have been written, mainly from groups in Karlsruhe, Dresden and UNSW/NICTA. Check their publication lists. For Fiasco a starting points might be http://os.inf.tu-dresden.de/L4Re/doc/ which has a description on the front page. For descriptions we usually point to our lecture slides (e.g. http://www.inf.tu-dresden.de/index.php?node_id=1314).
- 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?
Basically all L4 variants share the same spirit but have (very) different APIs, thus taking a component from one system to another involves porting work.
- 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.
Sawmill and The Hurd come to mind. Speaking for L4Re there's a fair bit of POSIX available to get some available software running.
- 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.
There was/is #elf|ka on slashnet as you already noticed. I just joined #l4-hackers on oftc, let's see...
Adam
l4-hackers@os.inf.tu-dresden.de