Martin Young <my(a)siroyan.com> writes:
> I'm interested in putting L4 on a 'new' processor core [...].
Cool! Can you elaborate on why you're interested in doing this?
> Is there a recommended route for doing this? I suppose that I could
> either write a new implementation from scratch or port an existing one.
> L4Ka looks quite attactive as it already exists for more than one
> platform and it's available under the GPL. OTOH the L4/x86 reference
> manual is so short that a new implementation doesn't look too daunting.
> Would anybody like to guess how long either route would take?
(Take the following with a grain of salt: I am the main designer and
implementor of the Fiasco microkernel.)
In the past, no L4 implementation has ever been reused and ported to a
different architecture by a group other than the originator's. It has
been the L4 gospel that it is cheaper to just do a new implementation.
This has worked well so far. I estimate the cost to be somewhere
between .5 and 1.5 man years, depending on the level of sophistication
you want to achieve (real-time? SMP?) and the tests you have (on the
x86 we have L4Linux; when L4Linux stops crashing, you're done ;-).
AFAICT, one of the goals of the L4KA project is to prove that a
portable L4 implementation is both possible and feasible. I believe
that the L4KA hackers can put their kernel on a new architecture in a
matter of weeks. However, I have no idea how approachable their
source code is or whether they have any design documentation or
implementation notes available. If they have something, though, I'm
certain they'd be happy to share it with you. (They are actively
researching microkernel portability. Maybe they'd even like to hire
you!)
Strictly speaking, Fiasco has been developed for x86 CPUs without
special regard to portability. However, Fiasco's object-oriented
design encapsulates hardware specifics as much as other subsystems. I
believe that it can be refactored quite easily to support more than
one architecture. Therefore, I personally would look into porting
Fiasco. Of course, I'm in a better position that you are, because I
am well accustomed with this beast, but I believe that Fiasco's
structure is quite intelligible if you are a bit into OO design. I
also have some design documentation available for the asking. I and
my group would be happy to help out with our experience.
That said, I believe that both options for porting an existing kernel
do not take significantly shorter than just doing it yourself, given
you don't know the source base. Just like developing a new system,
porting a kernel requires understanding it, and that can take time.
> I'm also wondering how stable L4Linux (particularly the 2.2.x kernel
> version) actually is. I see on the mailing list that some simple
> commands can crash the kernel, but is this typical? I don't want to run
> anything large like a RH distribution but a stable kernel+bash would be
> great.
No, this is not typical. L4Linux is quite stable and happily boots
Linux to multiuser mode and runs XFree86, Netscape, XPilot and the
likes.
> If I were to write or port an L4 MK I expect that initial versions
> wouldn't be well optimised for my CPU architecture. In this situation
> how would it's performace compare to (for example) mach?