diff options
authorSamuel Thibault <>2015-03-08 17:14:29 +0100
committerSamuel Thibault <>2015-03-08 17:14:29 +0100
commit8ee2bea27be08bf635afc9170fecb87b23d84eb8 (patch)
parenta2809e4547dfab18316b1f8f3ee8d54dc436dadd (diff)
Add a lot of links
4 files changed, 66 insertions, 11 deletions
diff --git a/documentation.mdwn b/documentation.mdwn
index 61a6ad42..f2c30737 100644
--- a/documentation.mdwn
+++ b/documentation.mdwn
@@ -54,7 +54,7 @@ text="*[[shapiro\_capintro\_1999|capability]]*:
# Quick overview
-You may want to start reading a quick [[overview]] of how the GNU/Hurd system
+You may want to start reading a [[quick overview|overview]] of how the GNU/Hurd system
starts, and thus how it is structured.
diff --git a/hurd-paper.html b/hurd-paper.html
index 880f5fca..0a47bbef 100644
--- a/hurd-paper.html
+++ b/hurd-paper.html
@@ -21,7 +21,9 @@ The design and implementation of the Hurd is being lead by Michael
Bushnell, with assistance from Richard Stallman, Roland McGrath,
Jan Brittenson, and others.
+<a name=design>
<H2>Part 1: A More Usable Approach to OS Design</H2>
The fundamental purpose of an operating system (OS) is to enable a variety of
programs to share a single computer efficiently and productively.
@@ -148,7 +150,9 @@ None of the remaining services carry any special
status; not the network implementation, the filesystems, the program
execution mechanism (including setuid), or any others.
+<a name=translator>
<H3>The Translator Mechanism</H3>
The Hurd uses Mach ports primarily as methods for communicating between users
and servers.
@@ -324,7 +328,9 @@ those semantics to allow users to improve, bypass, or replace them.
<H2>Part 2: A Look at Some of the Hurd's Beasts</H2>
+<a name=auth>
<H3>The Authentication Server</H3>
One of the Hurd's more central servers is the authentication server.
@@ -363,7 +369,9 @@ we have designed its interface to make any safe operation possible, and to
include no extraneous operations.
(This is why there is a separate password
+<a name=proc>
<H3>The Process Server</H3>
The process server acts as an information categorization repository.
@@ -419,7 +427,9 @@ Those process server features which do not require root privileges
to be implemented could be done as per-user servers.
The user's hands are
not tied.
+<a name=ftpfs>
<H3>Transparent FTP</H3>
Transparent FTP is an intriguing idea whose time has come.
The popular
@@ -429,7 +439,8 @@ virtually transparent to all the Emacs file manipulation functions.
Transparent FTP does the same thing, but in a system wide fashion.
server is not yet written; the details remain to be fleshed out, and will
-doubtless change with experience.
+doubtless change with experience [Note: since the writing of this, ftpfs was
+implemented and works as described here]
In a BSD kernel, a transparent FTP filesystem would be no harder to write
than in the Hurd.
@@ -492,7 +503,9 @@ more /ftp/
A copy command to a local disk
could be used if the RFC would be read frequently.
+<a name=fs>
Ordinary filesystems are also being implemented.
The initial release of the
@@ -529,7 +542,9 @@ deficiencies.
There will also be various ``little'' filesystems, such as the
MS-DOS filesystem, to help people move files between GNU and other OSs.
+<a name=term>
An I/O server will provide the terminal semantics of Posix.
@@ -574,7 +589,9 @@ Instead they will be using the
underlying Mach device ports for terminals, which support moving large
amounts of data efficiently.
+<a name=exec>
<H3>Executing Programs</H3>
The implementation of the
diff --git a/hurd/documentation.mdwn b/hurd/documentation.mdwn
index ec19e90b..04f18283 100644
--- a/hurd/documentation.mdwn
+++ b/hurd/documentation.mdwn
@@ -20,9 +20,24 @@ is included in the section entitled
* [[*The_Hurd_and_Linux*|/hurd-and-linux]], a comment by Richard Stallman.
* [[*Towards_a_New_Strategy_of_OS_Design*|/hurd-paper]], an architectural
- overview by Thomas Bushnell, BSG.
- * [[*The_Hurd*|/hurd-talk]], a presentation by Marcus Brinkmann.
+ overview by Thomas Bushnell, BSG, notably:
+ * [[The design|/hurd-paper#design]]
+ * [[Translators|/hurd-paper#translator]]
+ * [[The auth translator|/hurd-paper#auth]]
+ * [[The proc translator|/hurd-paper#proc]]
+ * [[The exec translator|/hurd-paper#exec]]
+ * [[The ftpfs translator|/hurd-paper#ftpfs]]
+ * [[*The_Hurd*|/hurd-talk]], a presentation by Marcus Brinkmann, notably:
+ * [[How to get a port?|/hurd-talk#how]]
+ * [[Pathname resolution example|/hurd-talk#pat]]
+ * [[Mapping the POSIX Interface|/hurd-talk#map]]
+ * [[Active vs Passive|/hurd-talk#act]]
+ * [[Authentication|/hurd-talk#aut]]
+ * [[Password Server|/hurd-talk#pas]]
+ * [[Process Server|/hurd-talk#pro]]
* The *[[translator_primer]]*.
diff --git a/overview.mdwn b/overview.mdwn
index 4878b08b..9bae360f 100644
--- a/overview.mdwn
+++ b/overview.mdwn
@@ -32,18 +32,25 @@ ext2fs is given as a parameter the name of the device of the root filesystem. It
opens it through the GNU Mach disk driver, and mounts the filesystem found on
it. When it is ready, it can start booting the system by starting the "startup",
"proc", and "auth" servers. It does so by using the "exec" server already loaded
-by GNU Mach: "exec" handles loading the binaries of the three new servers, just
-like it will handle loading binaries in the GNU/Hurd system in general. We then
-have a posixish environment, ext2fs gives hand to "startup".
+by GNU Mach. We then have a posixish environment, ext2fs gives hand to
+# exec
+"exec" handles loading binaries into processes. Details are available in
+[[Thomas' overview|/hurd-paper#exec]].
# proc
Proc knows about processes: what pid they have, passing signals, managing tty
-sessions, etc.
+sessions, etc. Details are available in [[Thomas' overview|/hurd-paper#proc]]
+and [[Marcus' presentation|/hurd-talk#pro]].
# auth
-Auth knows about identities: uid, gid, etc.
+Auth knows about identities: uid, gid, etc. Details are available in
+[[Thomas' overview|/hurd-paper#auth]] and
+[[Marcus' presentation|/hurd-talk#aut]].
# startup
@@ -62,6 +69,22 @@ Normal processes use glibc to interact with the system. Depending on the kind of
call, glibc will perform RPCs with the various servers mentioned above: opening
files will trigger RPCs with ext2fs, calling getpid() and such will trigger RPCs
with proc, calling getuid() and such will trigger RPCs with auth, opening a
-network socket will trigger RPCs with pfinet.
+network socket will trigger RPCs with pfinet. Details are available in [[the RPC page|/hurd/rpc]]
One can read the [[details how reading a file happens|hurd/io_path]].
+# how translators get started
+There are three ways translators get started:
+* exec, startup, proc, auth are explictly started during the boot as explained
+* some file of the filesystem have a *passive translator* record, i.e. it is
+recorded in the filesystem that when you open the file, it actually starts a
+translator which provides the content. For instance, */dev/null* is actually a
+translator which eats your data and produces no data.
+* one can manually start a translator and bind it on a file of the
+filesystem. It will stay there until getting killed or the system is
+restarted. For instance, one may want to temporarily mount an ISO image.
+Details are available in [[Marcus' presentation|/hurd-talk#act]].