summaryrefslogtreecommitdiff
path: root/hurd/what_is_the_gnu_hurd.mdwn
blob: 0ccead52e0f3b4aaa65cb06bc01ac6c8f6339279 (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
[[!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]].
There are several 
[[free software operating systems|https://www.gnu.org/distros/free-distros.en.html]]
using the [[Linux kernel|https://en.wikipedia.org/wiki/Linux_kernel]]. The
Hurd is an alternate operating system that uses a different kernel.  You can
read more about the status of the Hurd [[here|hurd/status]].  If you decide
to use the Hurd, then we would recommend 
[[the Debian GNU/Hurd distribution|https://www.debian.org/ports/hurd/]].

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|hurd/translator/ext2fs]], network 
protocols and [[authentication|hurd/translator/auth]].
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 can actually access the hardware without entering kernel space 
(GNU Mach).  That's a lot of power for 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.

Want to know what the Hurd can do?  Read the [[status|hurd/status]] page.

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

Read about the [[origin_of_the_name]].

Want to read more [[Hurd documentation|hurd/documentation]]?