Relationship of Genode, L4Re, Fiasco.OC, NOVA (was Re: Genode vs. L4Re)
Norman Feske
norman.feske at ...1...
Wed May 18 10:50:50 CEST 2011
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
--
Dr.-Ing. Norman Feske
Genode Labs
http://www.genode-labs.com · http://genode.org
Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
More information about the users
mailing list