Hi
I've just learned about the Genode OS framework, and I'd like to understand how it compares with L4 Runtime Environment (L4Re). I was reading the overview and I got the impression that Genode and L4Re provide very similar functionality. I'm sure I'm missing something.
Thank you very much.
Best regards, --Nuno Santos
Hello Nuno,
thanks for your interest in Genode. Indeed, your question about the relationship of L4re and Genode pops up every now and then. With the following answer, I quote one of my personal emails from just a few weeks ago.
When comparing both projects, it is important to understand both, their technical differences and the history of how both projects evolved.
Before Christian Helmuth and myself started working on Genode (back than codenamed Bastei) in 2006, the TU Dresden OS Group was using a userland called L4env (often also referred to as DROPS or TUDOS). Since 2003, when our research focused shifted from real time to security, it became apparent to us that L4env and the original Fiasco kernel would be a dead end. The code base had been evolved over years with no security considerations and retrofitting security sounded like a very bad idea. So in 2006 two projects were started to create a multi-server OS with security and robustness as prime goals - the NOVA kernel and the Bastei (later renamed to Genode) userland. Because in 2006, NOVA was in its infancy and not ready to use. We created its designated userland using Fiasco and Linux as kernels. By using these both kernels from the beginning and because of our intention to later use our userland with NOVA, we designed the framework to be portable. But most importantly, we introduced a completely new architecture defining how all user-level components interact with each other, namely Genode's recursive organizational structure combined with its session concept. I believe that this is the key to make the framework scalable towards general-purpose computing.
While we were working on Genode, other members of the OS group continued supporting and improving L4env and Fiasco, mainly to support ongoing research projects with 3rd parties. Furthermore, the Fiasco maintainer Alexander Warg started L4re as side project to evaluate his own ideas about how a capability-based kernel should be designed. For L4re, he incorporated many of the lessons he learned from our work but discarded some of our architectural decisions. This is why you will find that several parts of L4re resemble Genode concepts.
When Christian Helmuth and myself left the OS Group in 2008 to form our company, the head of the OS group Prof. Härtig expressed concerns of making the research of his group dependent on us as an external company. So he promoted L4re from Alexander's side project to the OS group's official line of development. This way, the OS group would keep maintaining control over the whole software stack.
Given this background their respective use cases, there are many technical differences between both projects. I'll briefly explain the most significant ones:
Whereas L4re is inherently coupled with Fiasco.OC (which is natural given its genesis), Genode tries to be extremely portable across different microkernels. Right now, it supports 8 kernel platforms (Linux, L4/Fiasco, L4ka::Pistachio, OKL4, NOVA, Codezero, Fiasco.OC, and a custom kernel for the MicroBlaze CPU) and we plan to further broaden the platform support in the future. So applications, protocol stacks, and device drivers developed on one kernel can be reused on another kernel in the event that the requirements change.
L4re started as an evaluation tool for the Fiasco.OC kernel. So it evolved over time to solve the current-days problems at hand. Often ad-hoc design decisions were taken and later revised, which is turned out to be a great approach to evaluate different kernel-API features. In contrast, Genode started with a holistic design looking at the operating system as a whole rather than focusing on a particular kernel interface. Its ultimate goal is to scale towards a fully-fledged general-purpose operating system in its own right (using virtualization as an interim solution rather than a core technology). Therefore, Genode considers problems such as how physical resources are managed and traded between processes, the expression of security policies, and many application use cases right from the beginning.
Because our goal is to deploy our framework in practice, we put much emphasis on documenting our development and adhering a regular release cycle. We release a new version every three months. Each release is accompanied with comprehensive release notes. For example, you might have a look at the release notes of the latest version:
http://genode.org/documentation/release-notes/11.02
Because L4re is a university research project, releases tend to happen sporadically without many explanations given.
The feature set of both projects differs. As far as I know, L4re was and is used on ARM platforms and consequently supports a wide range of ARM chip sets. Genode runs on ARM as well but we at Genode Labs are not constantly using and developing the framework on these platforms. On the other hand, Genode offers features that are lacking in L4re such as native support for Qt4, OpenGL, and sound support. To get an impression about the features available on Genode, I recommend the following screen cast:
http://www.youtube.com/watch?v=CJdWOmajo_8
I hope, my explanations are of help. Please do not hesitate to ask if further questions arise.
Best regards Norman
On 05/17/2011 01:59 PM, Nuno Santos wrote:
Hi
I've just learned about the Genode OS framework, and I'd like to understand how it compares with L4 Runtime Environment (L4Re). I was reading the overview and I got the impression that Genode and L4Re provide very similar functionality. I'm sure I'm missing something.
Thank you very much.
Best regards, --Nuno Santos