summaryrefslogtreecommitdiff
path: root/hurd/history/port_to_l4.mdwn
blob: fdaeeffbe2debca4b8f73901c5d132a4e332ec9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
Free Software Foundation, Inc."]]

[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts.  A copy of the license
is included in the section entitled
[[GNU Free Documentation License|/fdl]]."]]"""]]

[[!meta title="Porting the Hurd to L4: Hurd/L4"]]

There was an effort to port the Hurd from [[microkernel/Mach]] to the
[[L4_microkernel_family|microkernel/L4]].

The idea of using L4 as a [[microkernel]] for a [[Hurd_system|hurd]] was
initially voiced in the [[Hurd_community|community]] by Okuji Yoshinori, who,
for discussing this purpose, created the [[mailing lists/l4-hurd]] mailing list
in November 2000.

The project itself then was mostly lead by Marcus Brinkmann and Neal Walfield.
Even though there was progress -- see, for example, the
[[QEMU_image_for_L4|running/qemu/image_for_l4]] -- this port never reached a
releasable state.  Eventually, a straight-forward port of the original Hurd's
design wasn't deemed feasible anymore by the developers, partly due to them not
cosidering L4 suitable for implementing a general-purpose operating system on
top of it, and because of deficiencies in the original Hurd's design, which
they discovered along their way.  Read the [[critique]] and a
[[ng/position_paper]].

By now, the development of Hurd/L4 has stopped.  However, Neal Walfield moved
on to working on a newly designed kernel called [[microkernel/viengoos]].

Over the years, a lot of discussion have been held on the
[[mailing lists/l4-hurd]] mailing list, which today is still the right place
for [[next-generation_Hurd|ng]] discussions.

Development of Hurd/L4 was done in the `hurd-l4` module of the Hurd CVS
repository.  The `doc` directory contains a design document that is worth
reading for anyone who wishes to learn more about Hurd/L4.


One goal of porting the Hurd to L4 was to make the Hurd independend of Mach
interfaces, to make it somewhat microkernel-agnostic.

Mach wasn't maintained by its original authors anymore, so switching to a
well-maintained current [[microkernel]] was expected to yield a more solid
foundation for a Hurd system than the decaying Mach design and implementation
was able to.

L4 being a second-generation [[microkernel]] was deemed to provide for a faster
system kernel implementation, especially in the time-critical [[IPC]] paths.
Also, as L4 was already implemented for a bunch of different architectures
(IA32, Alpha, MIPS; SMP), and the Hurd itself being rather archtecture-unaware,
it was expected to be able to easily support more platforms than with the
existing system.

A design upon the lean L4 kernel would finally have moved devices drivers out
of the kernel's [[TCB]].


One idea was to first introduce a Mach-on-L4 emulation layer, to easily get a
usable (though slow) Hurd-using-Mach-interfaces-on-L4 system, and then
gradually move the Hurd servers to use L4 intefaces rather than Mach ones.


Neal Walfield started the original Hurd/L4 port while at Karlsruhe in 2002.  He
explains:

> My intention was to adapt the Hurd to exploit L4's concepts and intended
> [[design_pattern]]s; it was not to simply provide a Mach
> [[compatibility_layer]] on top of L4.  When I left Karlsruhe, I no longer had
> access to [[microkernel/l4/Pistachio]] as I was unwilling to sign an NDA.
> Although the specification was available, the Karlsruhe group only [released
> their code in May
> 2003](https://lists.ira.uni-karlsruhe.de/pipermail/l4ka/2003-May/000345.html).
> Around this time, Marcus began hacking on Pistachio.  He created a relatively
> complete run-time.  I didn't really become involved again until the second
> half of 2004, after I complete by Bachelors degree.

> Before Marcus and I considered [[microkernel/Coyotos]], we had already
> rejected some parts of the Hurd's design.  The
> [[microkernel/mach/gnumach/open_issues/resource_management_problems]] were
> what prompted me to look at L4.  Also, some of the problems with
> [[translator]]s were already well-known to us.  (For a more detailed
> description of the problems we have identified, see our [[critique]] in the
> 2007 July's SIGOPS OSR.  We have also written a forward-looking
> [[ng/position_paper]].)

> We visited Jonathan Shapiro at Hopkins in January 2006.  This resulted in a
> number of discussions, some quite influential, and not always in a way which
> aligned our position with that of Jonathan's.  This was particularly true of
> a number of security issues.

A lange number of discussion threads can be found in the archives of the
[[mailing lists/l4-hurd]] mailing list.

> Hurd-NG, as we originally called it, was an attempt to articulate the system
> that we had come to envision in terms of interfaces and description of the
> system's structure.  The new name was selected, if I recall correctly, as it
> clearly wasn't the Hurd nor the Hurd based on L4.