summaryrefslogtreecommitdiff
path: root/overview.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'overview.mdwn')
-rw-r--r--overview.mdwn89
1 files changed, 89 insertions, 0 deletions
diff --git a/overview.mdwn b/overview.mdwn
new file mode 100644
index 00000000..11d9382b
--- /dev/null
+++ b/overview.mdwn
@@ -0,0 +1,89 @@
+[[!meta copyright="Copyright © 2015 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]]."]]"""]]
+
+This provides an quick overview of how the GNU/Hurd system starts, and thus how
+it is structured.
+
+# Grub
+
+The GNU/Hurd system uses multiboot, and thus usually booted from grub, which
+loads into memory the GNU Mach kernel, the ext2fs server (see later), and the
+exec server (see later). It then gives hand to GNU Mach, passing ext2fs and exec
+as payloads.
+
+# GNU Mach
+
+GNU Mach initializes a basic console, and tasks, memory management and
+interprocess communication (details can be read on
+[[microkernel/mach/gnumach/boot_trace]]). It also initializes drivers for
+disk. It then creates two tasks for the ext2fs and exec servers.
+
+# ext2fs
+
+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. 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. Details are available in [[Thomas' overview|/hurd-paper#proc]]
+and [[Marcus' presentation|/hurd-talk#pro]].
+
+# auth
+
+Auth knows about identities: uid, gid, etc. Details are available in
+[[Thomas' overview|/hurd-paper#auth]] and
+[[Marcus' presentation|/hurd-talk#aut]].
+
+# startup
+
+"startup" is the unixish system starting point: it basically runs /sbin/init, at
+which point we end up with the standard Unix boot up.
+
+# netdde / pfinet
+
+At some point of the boot process, networking will have to be configured. This
+is done by starting "pfinet", the TCP/IP stack, from /servers/socket/2, which
+itself starts the network device driver server, "netdde", from /dev/netdde.
+
+# everydaylife
+
+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. 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]].