summaryrefslogtreecommitdiff
path: root/hurd/what_is_the_gnu_hurd.mdwn
blob: 09c26ee7386e730064951ca462b4f59a180c314e (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
[[!meta copyright="Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
2010 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="What Is the GNU Hurd?"]]

The Hurd is the GNU project's replacement for the [[UNIX]] system's [[kernel]].

The Hurd is firstly a collection of protocols formalizing how different
components may interact.  The protocols are designed to reduce the mutual
[[trust]] requirements of the actors thereby permitting a more
[[extensible|extensibility]] system.  These include interface definitions to
manipulate files and directories and to resolve path names.  This allows any
process to implement a file system.  The only requirement is that it have
access to its backing store and that the [[principal]] that started it own the
file system node to which it connects.

The Hurd is also a set of [[servers|translator]] that implement these
protocols.  They include file systems, network protocols and authentication.
The servers run on top of the [[microkernel/Mach]] [[microkernel]] and use
Mach's [[microkernel/mach/IPC]] mechanism to transfer information.

The Hurd provides a compatibility layer such that compiling higher level
programs is essentially transparent; that is, by means of the [[glibc]], it
provides the same standard interfaces known from other [[UNIX]]-like systems.
Thus, for a typical user, the Hurd is intended to silently work in the
background providing the services and infrastructure which the [[microkernel]]
itself has no business implementing, but that are required for higher level
programs and libraries to operate. Let's look at an example.

[[!img open_issues/images/overview.svg]]

Firefox invokes glibc's `send ()`, which in turn uses the pfinet (or
lwip) TCP/IP stack, which talk to our device drivers (rump or netdde),
which finally talk to GNU Mach.  Only GNU Mach runs in kernel space!
Everything else is userspace!

The Hurd supplies the last major software component needed for a complete
[[GNU_operating_system|running/gnu]] as originally conceived by Richard
M. Stallman (RMS) in 1983.  The GNU vision directly drove the creation and has
guided the evolution of the [Free Software Foundation](http://fsf.org/), the
organization that is the home of the [GNU project](http://gnu.org/gnu/).

The Hurd development effort is a somewhat separate project from the
[[Debian_GNU/Hurd|hurd/running/debian]] port.


Read about what the GNU Hurd is [[gramatically_speaking]].

Read about the [[origin_of_the_name]].