From 8ee2bea27be08bf635afc9170fecb87b23d84eb8 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 8 Mar 2015 17:14:29 +0100 Subject: Add a lot of links --- documentation.mdwn | 2 +- hurd-paper.html | 19 ++++++++++++++++++- hurd/documentation.mdwn | 21 ++++++++++++++++++--- overview.mdwn | 35 +++++++++++++++++++++++++++++------ 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. # FAQ 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. +

Part 1: A More Usable Approach to OS Design

+

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. +

The Translator Mechanism

+

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.

Part 2: A Look at Some of the Hurd's Beasts

+

The Authentication Server

+

One of the Hurd's more central servers is the authentication server. Each @@ -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 server.) +

The Process Server

+

The process server acts as an information categorization repository. There @@ -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. +

Transparent FTP

+

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. This 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/ftp.uu.net/inet/rfc/rfc1097. A copy command to a local disk could be used if the RFC would be read frequently. +

Filesystems

+

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. +

Terminals

+

An I/O server will provide the terminal semantics of Posix. The GNU C @@ -574,7 +589,9 @@ Instead they will be using the underlying Mach device ports for terminals, which support moving large amounts of data efficiently. +

Executing Programs

+

The implementation of the execve 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 +"startup". + +# 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 +above. +* 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]]. -- cgit v1.2.3