aboutsummaryrefslogtreecommitdiff
path: root/Hurd
diff options
context:
space:
mode:
Diffstat (limited to 'Hurd')
-rw-r--r--Hurd/ABITransitionStatus.mdwn9
-rw-r--r--Hurd/AlejandroSanchezHurdPage.mdwn3
-rw-r--r--Hurd/AptConfOffline.mdwn28
-rw-r--r--Hurd/AtelierGnuGulliver.mdwn7
-rw-r--r--Hurd/BarryMayPMMe.mdwn9
-rw-r--r--Hurd/Bochs.mdwn3
-rw-r--r--Hurd/BochsFAQ.mdwn3
-rw-r--r--Hurd/BuildingGNUMach.mdwn1
-rw-r--r--Hurd/BuildingHurd.mdwn92
-rw-r--r--Hurd/BuildingHurdLiveCD.mdwn70
-rw-r--r--Hurd/CHUG.mdwn3
-rw-r--r--Hurd/CancellationForwarding.mdwn56
-rw-r--r--Hurd/ChoiceOfMicrokernel.mdwn4
-rw-r--r--Hurd/CopyVsRevocableCopyVsMap.mdwn6
-rw-r--r--Hurd/CrossCompiling.mdwn5
-rw-r--r--Hurd/CrossHurd.mdwn99
-rw-r--r--Hurd/CrossPlatformAliases.mdwn8
-rw-r--r--Hurd/DHUG.mdwn7
-rw-r--r--Hurd/DamnSmallLinux.mdwn1
-rw-r--r--Hurd/DebianGNUHurdLicensing.mdwn1
-rw-r--r--Hurd/DebianX.mdwn130
-rw-r--r--Hurd/DebianXorg.mdwn197
-rw-r--r--Hurd/Debugging.mdwn29
-rw-r--r--Hurd/DebuggingGlibc.mdwn59
-rw-r--r--Hurd/DebuggingViaSubhurds.mdwn85
-rw-r--r--Hurd/DeepakGoelHurdPage.mdwn11
-rw-r--r--Hurd/DesignGoals.mdwn53
-rw-r--r--Hurd/DesignPrinciples.mdwn39
-rw-r--r--Hurd/DhcpClient.mdwn42
-rw-r--r--Hurd/DistributedServers.mdwn29
-rw-r--r--Hurd/Donate.mdwn19
-rw-r--r--Hurd/ErrorCollection.mdwn18
-rw-r--r--Hurd/ExtTwoSize.mdwn27
-rw-r--r--Hurd/ExtTwofsTranslator.mdwn4
-rw-r--r--Hurd/FirstClassReceiveBuffer.mdwn3
-rw-r--r--Hurd/Flash.mdwn5
-rw-r--r--Hurd/FlashHurd.mdwn60
-rw-r--r--Hurd/FreeSoftware.mdwn5
-rw-r--r--Hurd/FrequentlyAskedQuestions.mdwn45
-rw-r--r--Hurd/FtpfsTranslator.mdwn7
-rw-r--r--Hurd/FunnyHurd.mdwn39
-rw-r--r--Hurd/GNOME.mdwn11
-rw-r--r--Hurd/GNUHurdStatus.mdwn127
-rw-r--r--Hurd/GNUmach.mdwn1
-rw-r--r--Hurd/GNUstep.mdwn64
-rw-r--r--Hurd/GeneralPublicLicense.mdwn133
-rw-r--r--Hurd/GetNetworkRunning.mdwn33
-rw-r--r--Hurd/GnuHurdLiveJournal.mdwn6
-rw-r--r--Hurd/GnuHurdOrkut.mdwn3
-rw-r--r--Hurd/GnuMach.mdwn3
-rw-r--r--Hurd/GrantBowHurdPage.mdwn36
-rw-r--r--Hurd/GrubNotes.mdwn3
-rw-r--r--Hurd/HostmuxTranslator.mdwn31
-rw-r--r--Hurd/HowMuchConfinementDoWeWant.mdwn93
-rw-r--r--Hurd/HurdConferences.mdwn7
-rw-r--r--Hurd/HurdConsole.mdwn275
-rw-r--r--Hurd/HurdDevelopers.mdwn30
-rw-r--r--Hurd/HurdDiscuss.mdwn5
-rw-r--r--Hurd/HurdDonations.mdwn13
-rw-r--r--Hurd/HurdEs.mdwn45
-rw-r--r--Hurd/HurdIRC.mdwn23
-rw-r--r--Hurd/HurdNames.mdwn27
-rw-r--r--Hurd/HurdOnL4.mdwn177
-rw-r--r--Hurd/HurdReleaseForm.mdwn32
-rw-r--r--Hurd/HurdSpecificGlibcApi.mdwn165
-rw-r--r--Hurd/HurdishApplicationsForPersistence.mdwn5
-rw-r--r--Hurd/InstallNotes.mdwn295
-rw-r--r--Hurd/InstallationExperiences.mdwn1
-rw-r--r--Hurd/InteractiveTranslators.mdwn31
-rw-r--r--Hurd/JoachimNilssonHurdPage.mdwn247
-rw-r--r--Hurd/JuanAlvarezHurdPage.mdwn3
-rw-r--r--Hurd/KbdTranslator.mdwn1
-rw-r--r--Hurd/KernelCousinDebianHurd.mdwn3
-rw-r--r--Hurd/KnownHurdLimits.mdwn42
-rw-r--r--Hurd/KnownLimitForm.mdwn27
-rw-r--r--Hurd/LeadDeveloper.mdwn5
-rw-r--r--Hurd/LiveCD.mdwn14
-rw-r--r--Hurd/LiveCd.mdwn1
-rw-r--r--Hurd/LuisBustamanteHurdPage.mdwn11
-rw-r--r--Hurd/MagicTranslator.mdwn11
-rw-r--r--Hurd/MailLists.mdwn49
-rw-r--r--Hurd/MakeImage.mdwn60
-rw-r--r--Hurd/ManuelValderramaHurdPage.mdwn11
-rw-r--r--Hurd/MicroKernelFUD.mdwn1
-rw-r--r--Hurd/MicrokernelCoyotos.mdwn9
-rw-r--r--Hurd/NeedsHelp.mdwn5
-rw-r--r--Hurd/NeighborHurd.mdwn3
-rw-r--r--Hurd/NewbieQuestions.mdwn3
-rw-r--r--Hurd/NextHurd.mdwn82
-rw-r--r--Hurd/OpenSource.mdwn15
-rw-r--r--Hurd/OskitL4.mdwn3
-rw-r--r--Hurd/OskitMach.mdwn3
-rw-r--r--Hurd/OskitMachStatusList.mdwn3
-rw-r--r--Hurd/Part1OwnershipAndContracts.mdwn163
-rw-r--r--Hurd/Part1OwnershipAndContractsAddendum.mdwn31
-rw-r--r--Hurd/Part2SystemStructure.mdwn111
-rw-r--r--Hurd/PathMax.mdwn3
-rw-r--r--Hurd/PermissionBits.mdwn3
-rw-r--r--Hurd/PersonalHurdPages.mdwn10
-rw-r--r--Hurd/Philosophy.mdwn8
-rw-r--r--Hurd/PosixThreads.mdwn21
-rw-r--r--Hurd/PowerBox.mdwn19
-rw-r--r--Hurd/PppDaemon.mdwn6
-rw-r--r--Hurd/PublicHurdBoxen.mdwn72
-rw-r--r--Hurd/QEMU.mdwn3
-rw-r--r--Hurd/QemuImageForL4.mdwn376
-rw-r--r--Hurd/RandomDevice.mdwn41
-rw-r--r--Hurd/ReleaseDate.mdwn3
-rw-r--r--Hurd/ReleaseNotes.mdwn7
-rw-r--r--Hurd/RemoteDebugOskitMach.mdwn3
-rw-r--r--Hurd/RequirementsForLiveCD.mdwn54
-rw-r--r--Hurd/RequirementsForUser.mdwn59
-rw-r--r--Hurd/RikWadeHurdPage.mdwn9
-rw-r--r--Hurd/SeenHurd.mdwn71
-rw-r--r--Hurd/SerialConsole.mdwn28
-rw-r--r--Hurd/SetuidVsConstructor.mdwn6
-rw-r--r--Hurd/SharedLibraries.mdwn3
-rw-r--r--Hurd/Shopping.mdwn13
-rw-r--r--Hurd/SubhurdHowto.mdwn62
-rw-r--r--Hurd/SystemStructure.mdwn3
-rw-r--r--Hurd/THUG.mdwn25
-rw-r--r--Hurd/TWikiHostingStuff.mdwn37
-rw-r--r--Hurd/TheGnuHurd.mdwn66
-rw-r--r--Hurd/ThePolycastInterface.mdwn52
-rw-r--r--Hurd/ToDo.mdwn21
-rw-r--r--Hurd/Translation.mdwn21
-rw-r--r--Hurd/TranslatorExamples.mdwn65
-rw-r--r--Hurd/TranslatorPages.mdwn51
-rw-r--r--Hurd/TranslatorWishList.mdwn193
-rw-r--r--Hurd/TrivialConfinementVsConstructorVsFork.mdwn78
-rw-r--r--Hurd/UseCasePrivateKeys.mdwn13
-rw-r--r--Hurd/UseCaseUserFileSystem.mdwn14
-rw-r--r--Hurd/UserGroups.mdwn17
-rw-r--r--Hurd/VMware.mdwn3
-rw-r--r--Hurd/WebChanges.mdwn1
-rw-r--r--Hurd/WebDiscuss.mdwn17
-rw-r--r--Hurd/WebHome.mdwn188
-rw-r--r--Hurd/WebIndex.mdwn3
-rw-r--r--Hurd/WebNoParent.mdwn5
-rw-r--r--Hurd/WebNotify.mdwn13
-rw-r--r--Hurd/WebPreferences.mdwn52
-rw-r--r--Hurd/WebSearch.mdwn1
-rw-r--r--Hurd/WebStatistics.mdwn421
-rw-r--r--Hurd/WebTopicList.mdwn3
-rw-r--r--Hurd/WhatIsACapability.mdwn3
-rw-r--r--Hurd/WhatIsAConstructor.mdwn6
-rw-r--r--Hurd/WhatIsASpacebank.mdwn3
-rw-r--r--Hurd/WhatsInAGroup.mdwn3
-rw-r--r--Hurd/WhoRunsGNU.mdwn34
-rw-r--r--Hurd/XattrHurd.mdwn5
-rw-r--r--Hurd/Xfree86.mdwn109
-rw-r--r--Hurd/ZallocPanics.mdwn43
152 files changed, 6362 insertions, 0 deletions
diff --git a/Hurd/ABITransitionStatus.mdwn b/Hurd/ABITransitionStatus.mdwn
new file mode 100644
index 00000000..123e8f8c
--- /dev/null
+++ b/Hurd/ABITransitionStatus.mdwn
@@ -0,0 +1,9 @@
+Several transitions have occured recently.
+
+* [ABI Switch](http://lists.debian.org/debian-hurd/2002/debian-hurd-200204/msg00096.html) from April 17, 2002
+
+* [Phase I accomplished](http://lists.debian.org/debian-hurd/2002/debian-hurd-200204/msg00157.html) from April 26, 2002
+
+* [status of the ABI transition](http://lists.debian.org/debian-hurd/2002/debian-hurd-200205/msg00242.html) from May 15, 2002
+
+-- [[Main/GrantBow]] - 15 May 2002
diff --git a/Hurd/AlejandroSanchezHurdPage.mdwn b/Hurd/AlejandroSanchezHurdPage.mdwn
new file mode 100644
index 00000000..8437d9fb
--- /dev/null
+++ b/Hurd/AlejandroSanchezHurdPage.mdwn
@@ -0,0 +1,3 @@
+Website: <http://www.ultimaorbita.com/raciel/>
+
+-- [[Main/AlejandroSanchez]] - 17 Sep 2002
diff --git a/Hurd/AptConfOffline.mdwn b/Hurd/AptConfOffline.mdwn
new file mode 100644
index 00000000..c4cc85be
--- /dev/null
+++ b/Hurd/AptConfOffline.mdwn
@@ -0,0 +1,28 @@
+ APT
+ {
+ /* This file belongs in Debian GNU/Hurd's /etc/apt/apt.conf.offline
+ and will be used when running Debian GNU/Linux. This is only
+ required when the GNU/Hurd does not have network access. */
+
+ Architecture "hurd-i386";
+
+ Get::Download-Only "true";
+ };
+
+ Dir
+ {
+ /* Use the disc for state information and redirect the status file from
+ the /var/lib/dpkg default
+ assumes Debian GNU/Hurd mounted on /misc/hurd and /var mounted underneath this if necessary */
+
+ // State::lists should be here, the lists subdirectory.
+ State "/misc/hurd/var/lib/apt/";
+ State::status "/misc/hurd/var/lib/dpkg/status";
+
+ // Binary caches will be stored locally
+ Cache::archives "/misc/hurd/var/cache/apt/archives/";
+ Cache "/tmp/";
+
+ // Location of the source list.
+ Etc "/misc/hurd/etc/apt/";
+ };
diff --git a/Hurd/AtelierGnuGulliver.mdwn b/Hurd/AtelierGnuGulliver.mdwn
new file mode 100644
index 00000000..c35b93f6
--- /dev/null
+++ b/Hurd/AtelierGnuGulliver.mdwn
@@ -0,0 +1,7 @@
+The goal of this "atelier" (little workgroup) is to promote the use/test/developpement of GNU in Rennes (France).
+
+See our web site (in French) to know what we are doing...
+
+<http://gulliver.eu.org/ateliers/GNU.html>
+
+-- [[Main/TWikiGuest]] - 08 Oct 2002
diff --git a/Hurd/BarryMayPMMe.mdwn b/Hurd/BarryMayPMMe.mdwn
new file mode 100644
index 00000000..ed697840
--- /dev/null
+++ b/Hurd/BarryMayPMMe.mdwn
@@ -0,0 +1,9 @@
+A list of people Barry may PM without asking first:
+
+* [[MichaelBanck]]
+
+* [[ThomasSchwinge]]
+
+* antrik
+
+-- [[Main/MichaelBanck]] - 06 Dec 2006
diff --git a/Hurd/Bochs.mdwn b/Hurd/Bochs.mdwn
new file mode 100644
index 00000000..9815f548
--- /dev/null
+++ b/Hurd/Bochs.mdwn
@@ -0,0 +1,3 @@
+Moved to [[Distrib/BochsEmulator]].
+
+-- [[Main/GrantBow]] - 22 Dec 2002
diff --git a/Hurd/BochsFAQ.mdwn b/Hurd/BochsFAQ.mdwn
new file mode 100644
index 00000000..d16209ad
--- /dev/null
+++ b/Hurd/BochsFAQ.mdwn
@@ -0,0 +1,3 @@
+Page moved to [[Distrib/BochsFAQ]].
+
+-- [[Main/GrantBow]] - 22 Dec 2002
diff --git a/Hurd/BuildingGNUMach.mdwn b/Hurd/BuildingGNUMach.mdwn
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/Hurd/BuildingGNUMach.mdwn
@@ -0,0 +1 @@
+
diff --git a/Hurd/BuildingHurd.mdwn b/Hurd/BuildingHurd.mdwn
new file mode 100644
index 00000000..a7cdfb38
--- /dev/null
+++ b/Hurd/BuildingHurd.mdwn
@@ -0,0 +1,92 @@
+# <a name="Building_the_Hurd_from_Source"> Building the Hurd from Source </a>
+
+If you want to build the Hurd libraries and servers (translators) yourself instead of just using pre-built binaries, follow these instructions.
+
+One note before we begin: the likelihood that the compiled result will actually do what you expect it to do is the highest if you try building from the Debian source packages. This is especially true if you want to use your compilation within a Debian system.
+
+## <a name="Getting_the_Source_Code"> Getting the Source Code </a>
+
+You can chose between getting the [sources from the developers's RCS](http://www.gnu.org/software/hurd/download.html#cvs):
+
+ $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co hurd
+
+... or (if you are working on a Debian system) the ones that are used for the [current Debian hurd package](http://packages.debian.net/source/unstable/hurd):
+
+ $ apt-get source hurd
+
+Please see [[Distrib/DebianFAQ]] before using _apt-get source_.
+
+The unpacked source tree is around 20 MiB, and the build tree (configured with _--disable-profile_) is around 100 MiB.
+
+## <a name="Preparing_for_the_Build"> Preparing for the Build </a>
+
+### <a name="_on_Debian_systems"> ... on Debian systems </a>
+
+Building the Hurd requires the _build-essential_ and _fakeroot_ packages, their dependencies and additional packages that are specified by the source hurd package:
+
+ # apt-get install build-essential fakeroot
+ # apt-get build-dep hurd
+
+### <a name="_on_non_Debian_systems"> ... on non-Debian systems </a>
+
+[TODO]
+
+## <a name="Building"> Building </a>
+
+### <a name="Debian_deb_Files"> Debian _.deb_ Files </a>
+
+Change into the directory with the downloaded / unpacked Hurd sources, e.g.
+
+ $ cd hurd-[TODO]
+
+If you want to work on the sources before building them, it's advisable to first apply the patches the Debian hurd package additionally contains:
+
+ $ debian/rules apply-patches
+
+Then edit and change whatever files you want and finally start the build process with
+
+ $ dpkg-buildpackage -us -uc -nc -b -rfakeroot
+
+The _.deb_ packages will then drop out at the _../_ directory.
+
+### <a name="Building_but_not_the_Debian_Way"> Building, but not the Debian Way </a>
+
+The Hurd has to be built in a separate directory:
+
+ $ mkdir hurd-build
+ $ cd hurd-build
+
+ $ [...]/hurd-[TODO]/configure --disable-profile
+ $ make
+ $ make install
+
+Notice that _make install_ will install the Hurd in _/_, not in _/usr/local/_ or _/local/_, so your current Hurd servers will be replaced. [TODO: how to install somewhere else.]
+
+By default profiling versions of all the libraries and code are generated but this is useless in most of the cases, so we disable them by specifying _--disable-profile_ on \_configure\_'s command line.
+
+If you just want to build a specific server or library, you can pass its name to _make_:
+
+ $ make ext2fs
+ $ make libtrivfs
+
+This will automatically build all libraries that are required to build the requested server or library.
+
+### <a name="Cross_Compiling"> Cross Compiling </a>
+
+See <http://nic-nac-project.de/~schwinge/tmp/cross-gnu-env> and <http://nic-nac-project.de/~schwinge/tmp/cross-gnu> for now.
+
+## <a name="RPC_Ids"> </a> RPC Ids
+
+[TODO: update / integrate somewhere.]
+
+If you want to trace the RPC calls made by some process by using `rpctrace` command, you will also want some more human-readable output of this command. This is achieved by generating `hurd.msgids` file that includes the mapping between the number of the RPC call and its name:
+
+ $ cd build/hurd
+ $ make hurd.msgids
+ $ cp hurd.msgids ~
+
+Now you can use this file in the following way:
+
+ $ rpctrace -i ~/hurd.msgids ls
+
+-- [[Main/OgnyanKulev]] - 08 Apr 2003
diff --git a/Hurd/BuildingHurdLiveCD.mdwn b/Hurd/BuildingHurdLiveCD.mdwn
new file mode 100644
index 00000000..8699786b
--- /dev/null
+++ b/Hurd/BuildingHurdLiveCD.mdwn
@@ -0,0 +1,70 @@
+# <a name="Recipes_for_bootable_GNU_Mach_Hu"> </a> Recipes for bootable GNU Mach/Hurd Live CD
+
+## <a name="Greg_s_recipe"> Greg's recipe </a>
+
+In my attempts to get a bootable CD for the Hurd here's the recipe I followed, your's will be similar. I needed a grub-0.92, with a patch from <http://alpha.polynum.org/misc/>, and version 1.16 of mkbimage (I don't exactly remember where I got that from).
+
+You can grab a copy of it at <http://sleepingsquirrel.org/hurd/hurdcd.iso.gz>, which is a gzipped bootable \*.iso with the copy of the patched grub and the version of mkbimage I used. Here's the recipe I followed (under linux).
+
+ # mkdir ./2.88floppy
+ # mkdir ./isodir
+ # cp grub/* 2.88floppy/boot/grub/
+ # cp grub/* isodir/boot/grub/
+ # cd 2.88floppy
+ # tar -cf ../floppyimg.tar *
+ # cd ..
+ # mkbimage -f floppyimg.tar -t 2.88
+ # cp 2.88.image isodir/
+ # mkisofs -r -b 2.88.image -c boot.catalog -o hurdcd.iso isodir/
+ # cdrecord -v speed=4 dev=0,0,0 -data hurdcd.iso
+
+That was the recipe for using a floppy image. If you use the `-t hd` switch of `mkbimage`, you'll get an ext2fs El-Torito HD emulation image that can be any size (I've got one here 300+ MB). You can then use `root (hd0,0)` in Grub to boot something. Also, invoking `mkbimage` with no parameters will give you some additional help messages.
+
+-- [[Main/GregBuchholz]] - 05 Nov 2003
+
+## <a name="Another_recipe_for_a_bootable_GN"> </a> Another recipe for a bootable GNU CD
+
+[screenshot](http:///mycelium.afraid.org/Screenshot2.png)
+
+### <a name="What_you_ll_need"> What you'll need </a>
+
+* A [stage2\_eltorito](http://mycelium.dyndns.org/stage2_eltorito) from [grub 0.95](http://www.gnu.org/software/grub)
+* A [base system](http://www.update.uu.se/~ams/gnu/gnu-2004-12-04.tar.bz2)
+* [iso9660fs.static](http:///mycelium.dyndns.org/iso9660fs.static) or just build your own, it should work with CVS
+
+### <a name="Know_HowTo"> </a> [[Know/HowTo]]
+
+ # mkdir iso
+ ..(at this point untar or setup base system)
+ # mkdir -p iso/boot/grub
+ # cp iso9660fs.static iso/hurd
+ # cp stage2_eltorito iso/boot/grub
+ ..(edit iso/boot/grub/grub.conf)
+ # mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
+ -boot-load-size 4 -boot-info-table -o livecd.iso iso/
+
+**_Note:_** The following files must **\_NOT\_** be symlinks!
+
+* `/boot/gnumach`
+* `/hurd/iso9660fs.static`
+* `/hurd/exec`
+* `/lib/ld.so.1`
+
+## <a name="Contents_of_grub_conf"> Contents of grub.conf </a>
+
+ timeout 60
+ default 0
+
+ title GNU/Hurd CD
+ #uppermem 523648 #this may need to be set
+ #root (cd)
+ kernel /boot/gnumach root=device:hd2 #set device to your cdrom device
+ module /hurd/iso9660fs.static --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} -T typed ${root} $(task-create) \
+ $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+**_Note:_** The `root (cd)` line may prevent some computers from booting the livecd.
+
+-- [[Main/AndrewResch]] - 22 Feb 2005
diff --git a/Hurd/CHUG.mdwn b/Hurd/CHUG.mdwn
new file mode 100644
index 00000000..173d0125
--- /dev/null
+++ b/Hurd/CHUG.mdwn
@@ -0,0 +1,3 @@
+Mail me if you are interested!
+
+-- [[Main/GrantBow]] - 11 Oct 2002
diff --git a/Hurd/CancellationForwarding.mdwn b/Hurd/CancellationForwarding.mdwn
new file mode 100644
index 00000000..1b7776f2
--- /dev/null
+++ b/Hurd/CancellationForwarding.mdwn
@@ -0,0 +1,56 @@
+# <a name="Cancellation_forwarding"> Cancellation forwarding </a>
+
+## <a name="Rationale"> Rationale </a>
+
+When a request to one or more servers is needed from a server to process a request from it's client, and the client cancels it's request, there will be at least temporary resource leakage in the chain of servers.
+
+If the last server in the chain completes processing and gives a response to it's client, there will be unnecessary CPU and memory usage from all the servers. And if one of the servers never completes, there will be permanent memory leakage.
+
+Timeouts are a way to avoid the permament memory leakage, at the cost of rendering the whole communication impossible above some system load. They also only bring the duration of the memory leakage from infinite to some time.
+
+Cancellation forwarding is a mechanism that can be used to propagate, without additional overt communication, the information that initial request has been cancelled.
+
+## <a name="Protocol"> Protocol </a>
+
+* Each client that want to forward cancellation to it's server increment the protected payload of the FCRB for which a sender's capability has been given to the server, thus invalidating the capability.
+* Each server that wants to notice cancellation forwarding will set up a watchdog, and ask the kernel to send heartbeats. At each heartbeat, the watchdog check that the reply capability to the FCRB of the client is not invalid, with a Discrim capability.
+
+## <a name="Example"> Example </a>
+
+Communication is described between 3 processes, client C and servers S and T.
+
+Notation:
+
+* FCRB-&gt;A means a FCRB whose receiver process is A
+
+### <a name="Successful_operation_"> Successful operation: </a>
+
+* C invokes a capability to S, giving S a capability c1 to a FCRB-&gt;C
+* S sets up a watchdog that check that discrim.classify(c1) != clVoid
+* S invokes a cap to T, giving T a cap c2 to a FCRB-&gt;S
+* T sets up a watchdog that check that discrim.classify(c2) != clVoid
+
+( T successfully treat the request, now goes completion )
+
+* T invokes c2
+* S reads the answer, and increment the PP of the FCRB-&gt;S
+* S invokes c1
+* C reads the answer, and increment the PP of the FCRB-&gt;C
+
+### <a name="Uncomplete_operation_"> Uncomplete operation: </a>
+
+* C invokes a cap to S, giving S a cap c1 to a FCRB-&gt;C
+* S sets up a watchdog that check that discrim.classify(c1) != clVoid
+* S invokes a cap to T, giving T a cap c2 to a FCRB-&gt;S
+* T sets up a watchdog that check that discrim.classify(c2) != clVoid
+
+( for any reason, C decides to stop, now goes cancellation )
+
+* C increments the PP of the FCRB-&gt;C
+* S watchdog notifies S of cancellation
+* S increments the PP of the FCRB-&gt;S
+* T watchdog notifies T of cancellation
+
+----
+
+-- [[Main/NowhereMan]] - 28 Apr 2006
diff --git a/Hurd/ChoiceOfMicrokernel.mdwn b/Hurd/ChoiceOfMicrokernel.mdwn
new file mode 100644
index 00000000..20ee6f05
--- /dev/null
+++ b/Hurd/ChoiceOfMicrokernel.mdwn
@@ -0,0 +1,4 @@
+TBD
+
+* [[MicrokernelL4]]
+* [[MicrokernelCoyotos]]
diff --git a/Hurd/CopyVsRevocableCopyVsMap.mdwn b/Hurd/CopyVsRevocableCopyVsMap.mdwn
new file mode 100644
index 00000000..9c99c0a1
--- /dev/null
+++ b/Hurd/CopyVsRevocableCopyVsMap.mdwn
@@ -0,0 +1,6 @@
+TBD, see:
+
+* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00274.html>
+* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00023.html>
+
+-- [[Main/TomBachmann]] - 20 Jun 2006
diff --git a/Hurd/CrossCompiling.mdwn b/Hurd/CrossCompiling.mdwn
new file mode 100644
index 00000000..fe4be938
--- /dev/null
+++ b/Hurd/CrossCompiling.mdwn
@@ -0,0 +1,5 @@
+The official documentation in `INSTALL-cross` is very outdated.
+
+Alfred Szmidt wrote [Cross-compiling guide](http://lists.gnu.org/archive/html/bug-hurd/2004-09/msg00030.html) that may be of help.
+
+-- [[Main/OgnyanKulev]] - 06 Sep 2004
diff --git a/Hurd/CrossHurd.mdwn b/Hurd/CrossHurd.mdwn
new file mode 100644
index 00000000..e84ce1e7
--- /dev/null
+++ b/Hurd/CrossHurd.mdwn
@@ -0,0 +1,99 @@
+This will eventually become an installation guide for the Debian crosshurd package (GNU/Hurd cross install only). However, for the time being I am setting it up as a diet version of Hurd/InstalNotes, adapted for crosshurd, adapted for me.
+
+-- [[Main/JoachimNilsson]] - 14 Mar 2004
+
+## <a name="Reserving_partitions"> Reserving partitions </a>
+
+You need a swap and root partition, much like any other UNIX system. Two things to remember:
+
+1. Root partition still &lt;2.0 GiB
+2. Root partition: mke2fs -o hurd -b 4096 -L Carlsberg
+
+From a Debian GNU/Linux installation preparing install of GNU/Hurd on /dev/hdb2 reusing the Linux swap on /dev/hdb4.
+
+ # mke2fs -o hurd -b 4096 -L Carlsberg /dev/hdb2
+
+<div>
+ <center> "Carlsberg. Probably the best beer in the world." </center>
+</div>
+
+## <a name="Bootstrapping"> Bootstrapping </a>
+
+After having installed the Debian crosshurd package you need to mount your newly created Hurd partition.
+
+ mkdir /gnu
+ mount /dev/hdb2 /gnu
+
+Now, simply run the crosshurd program and follow the onscreen directions. **Do** select the usr symlink.
+
+ crosshurd
+
+crosshurd burps a lot of unneeded information on screen and probably fails to install one or two files due to duplicates between GNU and Debian packages. Lets hope this mess is worked out some day.
+
+## <a name="Rebooting"> Rebooting </a>
+
+Before we reboot you must setup a Hurd entry in the menu.lst file of Grub. Do it like this and remember, **no trailing spaces**!
+
+The first two runs (reboots) you must run the Hurd in single-user mode!
+
+ title GNU (kernel GNUmach 1.3)
+ root (hd1,1)
+ kernel /boot/gnumach.gz root=device:hd1s2 -s
+ module /hurd/ext2fs.static \
+ --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} \
+ --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} \
+ -T typed ${root} $(task-create) $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+The notation of Grub, and of the Hurd, can be somewhat bisarre on first sight. Consult the [[InstallNotes]] document and the Grub manual for a thorough explanation.
+
+N.B. the '-s' on the kernel line, it is "single user mode", which you need for the first two reboots.
+
+OK, reboot now.
+
+## <a name="First_steps"> First steps </a>
+
+Set TERM variable and run native-install script.
+
+ export TERM=mach
+ ./native-install
+
+At the end native-install wants you to reboot and run it again. Do so and remember to set the TERM variable as well.
+
+After the second reboot and native-install run you can remove the '-s' in the kernel line above and boot GNU/Hurd as a normal user.
+
+## <a name="Logging_in"> Logging in </a>
+
+Finally, a complete bootstrapped GNU system.
+
+ login root
+
+ export TERM=mach
+
+ nano /etc/fstab
+ [add swap partition /dev/hd1s4]
+
+ nano /etc/ttys
+ [remove all hashes to enable the new Hurd Console]
+
+ settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 -a 192.168.1.3 -g 192.168.1.1 -m 255.255.255.0
+
+ dselect
+
+Now, do the old Debian thing of dancing with dselect for a couple of hours.
+
+Reboot and start the new [[HurdConsole]]
+
+ login root
+
+ console -d vga -d pc_kbd -d generic_speaker /dev/vcs
+
+Move around just like in Linux console, but with persistent scroll-back buffers for each console.
+
+## <a name="References"> References </a>
+
+* [[InstallNotes]]
+* [[GetNetworkRunning]]
+* [[HurdConsole]]
diff --git a/Hurd/CrossPlatformAliases.mdwn b/Hurd/CrossPlatformAliases.mdwn
new file mode 100644
index 00000000..06a0e897
--- /dev/null
+++ b/Hurd/CrossPlatformAliases.mdwn
@@ -0,0 +1,8 @@
+ # Aliases assume Debian GNU/Hurd mounted on /misc/hurd
+ # possibly via autofs /etc/auto.misc configuration and 'cd / && ln -s var/autofs/misc misc'
+ alias locatehurd="locate -d /misc/hurd/var/lib/locate/locatedb"
+ alias apt-cachehurd="APT_CONFIG=/misc/hurd/etc/apt/apt.conf.offline apt-cache"
+ alias apt-gethurd="APT_CONFIG=/misc/hurd/etc/apt/apt.conf.offline apt-get"
+ # dselect requires APT_CONFIG due to dselect apt method
+ alias dselecthurd="APT_CONFIG=/misc/hurd/etc/apt/apt.conf.offline dselect --admindir /misc/hurd/var/lib/dpkg/"
+ alias dpkghurd="dpkg --root=/misc/hurd"=
diff --git a/Hurd/DHUG.mdwn b/Hurd/DHUG.mdwn
new file mode 100644
index 00000000..02a404cf
--- /dev/null
+++ b/Hurd/DHUG.mdwn
@@ -0,0 +1,7 @@
+The Dunedin (GNU/)Hurd Users Group is a small group of currently 2 people in Dunedin, New Zealand.
+
+At the moment our main role is producing the CD install images, mainly thanks to Philip Charles.
+
+Mail me if you want info or want to get in contact.
+
+-- [[Main/AndrewMitchell]] - 16 Oct 2002
diff --git a/Hurd/DamnSmallLinux.mdwn b/Hurd/DamnSmallLinux.mdwn
new file mode 100644
index 00000000..707f90a0
--- /dev/null
+++ b/Hurd/DamnSmallLinux.mdwn
@@ -0,0 +1 @@
+See <http://www.damnsmalllinux.org/>
diff --git a/Hurd/DebianGNUHurdLicensing.mdwn b/Hurd/DebianGNUHurdLicensing.mdwn
new file mode 100644
index 00000000..eff1955e
--- /dev/null
+++ b/Hurd/DebianGNUHurdLicensing.mdwn
@@ -0,0 +1 @@
+This page has moved to [[Distrib/SoftwareLicensing]]
diff --git a/Hurd/DebianX.mdwn b/Hurd/DebianX.mdwn
new file mode 100644
index 00000000..65b8b45e
--- /dev/null
+++ b/Hurd/DebianX.mdwn
@@ -0,0 +1,130 @@
+# <a name="Setting_up_X_on_Debian_GNU_Hurd"> </a> Setting up X on Debian GNU/Hurd
+
+#### <a name="Table_Of_Contents"> Table Of Contents </a>
+
+%TOC%
+
+This is a brief helper on how to setup X-Windows on Debian GNU/Hurd.
+
+Obviously this text is taken from the page <http://hurd.gnufans.org/bin/view/Hurd/Xfree86> but I was making such drastic changes, I didn't want to hack up that page.
+
+### <a name="Mouse_amp_Keyboard"> Mouse &amp; Keyboard </a>
+
+See [[HurdConsole]] for more details.
+
+You should instruct the Hurd console to repeat keyboard events to `/dev/cons/kbd`, and mouse events to `/dev/cons/mouse`:
+
+ # console -d vga -d pc_kbd --repeat=kbd \
+ -d pc_mouse --repeat=mouse --protocol=ps/2 -c /dev/cons /dev/vcs
+
+Symbolic links to repeaters should also be created:
+
+ # ln -s /dev/cons/kbd /dev/kbd
+ # ln -s /dev/cons/mouse /dev/mouse
+
+### <a name="Selecting_amp_Configuring_Packag"> Selecting &amp; Configuring Packages </a>
+
+You will need several X packages. The `x-window-system-core` brings you most of what you need:
+
+* `xserver-xfree86`
+* `xfonts-base`
+* `xfonts-100dpi`
+* `xfonts-75dpi`
+* `xfonts-scalable`
+* `xbase-clients`
+* `xutils`
+* `rxvt`
+* ... as well as your window manager of choice:
+ * WindowMaker, `wmaker`
+ * FVWM, `fvwm`
+ * Blackbox, `blackbox`
+ * TWM, `twm`
+
+I know that twm and Window Maker work, however, I cannot attest to the other two. Also, Michael Banck has a working package for xfce4 for those of you that are interested. The link for the package is here:
+
+ deb http://people.debian.org/~mbanck/hurd-xfce4/ ./
+
+Thanks for that Michael!!
+
+You will probably need to create a .xsession file for xfce4 with the following command:
+
+ exec /usr/bin/startxfce4 || exec xterm
+
+This will start the xfce4 desktop or dump to xterm if it fails to start.
+
+The recommended way of configuring X is using the `xserver-xfree86` debconf template, eg:
+
+ # dpkg-reconfigure xserver-xfree86
+
+It may be easier to just copy a working configuration from another operating system on the same computer and place it in `/etc/X11/XF86Config-4`, but this is discouraged as you would have to remove some sections by hand.
+
+**_IMPORTANT:_** when you configure X, make sure you do **NOT** enable the `speedo` and `dri` modules because they are currently broken.
+
+**_UPDATE 12/28/2004:_** Speedo is working on mine and is currently running. I do not have DRI enabled however.
+
+### <a name="Edit_XF86Config_4"> Edit XF86Config-4 </a>
+
+Now you have to edit the file manually to ensure that the mouse sections look like this:
+
+ Section "InputDevice"
+ Identifier "Configured Mouse"
+ Driver "mouse"
+ Option "CorePointer"
+ Option "Device" "/dev/mouse"
+ Option "Protocol" "osmouse"
+ EndSection
+
+ Section "InputDevice"
+ Identifier "Generic Mouse"
+ Driver "mouse"
+ Option "SendCoreEvents" "true"
+ Option "Device" "/dev/mouse"
+ Option "Protocol" "osmouse"
+ EndSection
+
+You may also enable the Emulate3Buttons option, but nothing else will work.
+
+ Option "Emulate3Buttons" "true"
+
+**_WARNING:_** I cannot verify as of yet whether it was the "Emulate3Buttons" setting or the "ZAxisMapping" setting but I had to disable both in order to be able to move and resize windows.
+
+### <a name="Dynamic_Linking"> Dynamic Linking </a>
+
+The Hurd does not use `ld.so.conf`, it is necessary to add the following to `/etc/profile` to be sure that the libraries are found:
+
+ LD_LIBRARY_PATH=/X11R6/lib:$LD_LIBRARY_PATH
+
+"This is a linker issue. GNU/Hurd expects that \`RPATH' is used, however, Debian takes certain measures to avoid this. Note that this does not cut it for suid binaries because of security implications. We expect to rectify this by using \`RUNPATH', which is specified in the new ELF standard." -- [Why does X not work?](http://www.gnu.org/software/hurd/faq.en.html#q4-8)
+
+**_CAVEAT 12/28/2004:_** I did not have to do this so can someone verify that this still needs to be done or was it fixed? Thanks!
+
+### <a name="Starting_X"> Starting X </a>
+
+Finally, run `startx`
+
+However, there are several caveats to be aware of:
+
+* `xterm` does not work correctly; try `rxvt`.
+
+**_UPDATE 12/28/2004_**: xterm works fine for me.
+
+* `update-menu` does not yet work. As such, there are no fine Debian menus.
+* GNOME can now be ported with the new pthreads, but is still being worked on. Window Maker, TWM, Blackbox and FVWM all work.
+
+**_WARNING:_** If you get an error about opening the display or a permissions issue, you may need to run the following:
+
+ # dpkg-reconfigure xserver-common
+
+change from "Console Users Only" to "Anybody"
+
+### <a name="Miscellaneous"> Miscellaneous </a>
+
+The dillo web browser does work, though it is not the greatest browser.
+
+For you xchat lovers like me, xchat will compile if you disable the python module. (The python module causes an assertion failure in pthreads if one of you guru's wants to fix and package. **hint,hint**)
+
+Good luck and enjoy!
+
+----
+
+-- [[Main/BarryDeFreese]] - 28 Dec 2004
diff --git a/Hurd/DebianXorg.mdwn b/Hurd/DebianXorg.mdwn
new file mode 100644
index 00000000..9667163e
--- /dev/null
+++ b/Hurd/DebianXorg.mdwn
@@ -0,0 +1,197 @@
+# <a name="Setting_up_Xorg_on_Debian_GNU_Hu"> </a> Setting up Xorg on Debian GNU/Hurd
+
+#### <a name="Table_Of_Contents"> Table Of Contents </a>
+
+%TOC%
+
+This is a brief helper on how to setup Xorg on Debian GNU/Hurd.
+
+Obviously this text is taken from the page <http://hurd.gnufans.org/bin/view/Hurd/DebianX> but I was making such drastic changes, I didn't want to hack up that page.
+
+### <a name="Mouse_amp_Keyboard"> Mouse &amp; Keyboard </a>
+
+See [[HurdConsole]] for more details.
+
+You should instruct the Hurd console to repeat keyboard events to `/dev/cons/kbd`, and mouse events to `/dev/cons/mouse`:
+
+ # console -d vga -d pc_kbd --repeat=kbd -d generic_speaker \
+ -d pc_mouse --repeat=mouse --protocol=ps/2 -c /dev/vcs
+
+Symbolic links to repeaters should also be created:
+
+ # ln -s /dev/cons/kbd /dev/kbd
+ # ln -s /dev/cons/mouse /dev/mouse
+
+### <a name="Selecting_amp_Configuring_Packag"> Selecting &amp; Configuring Packages </a>
+
+The `x-window-system-core` package brings you most of what you need for a base, plus you need to choose a window manager:
+
+* WindowMaker, `wmaker`
+* FVWM, `fvwm`
+* Blackbox, `blackbox`
+* TWM, `twm`
+
+I know that Window Maker works, however, I cannot attest to the others. xfce4 might be temporarily broken.
+
+The recommended way of configuring X is using the `xserver-xorg` debconf template, eg:
+
+ # dpkg-reconfigure xserver-xorg
+
+This currently seems to be broken in the Debian package so it may be easier to just copy a working configuration from another operating system on the same computer and place it in `/etc/X11/xorg.conf`. You need to edit the mouse settings by hand according to the below example, though.
+
+**_IMPORTANT:_** when you configure X, make sure you do **NOT** enable the `speedo` and `dri` modules because they are currently broken.
+
+**BDd: I cannot attest to this currently.**
+
+### <a name="Edit_xorg_conf"> Edit xorg.conf </a>
+
+If you managed to get an xorg.conf autogenerated, make sure to have the mouse section read as follows:
+
+ Section "InputDevice"
+ Identifier "Configured Mouse"
+ Driver "mouse"
+ Option "CorePointer"
+ Option "Device" "/dev/mouse"
+ Option "Protocol" "osmouse"
+ EndSection
+
+Do not set the "Emulate3Button" or "ZAxisMapping" options, they do not work and break things.
+
+Here is an example of an xorg.conf using VESA at 800x600 that works on my Dell laptop:
+
+ # /etc/X11/xorg.conf (xorg X Window System server configuration file)
+ #
+ # This file was generated by dexconf, the Debian X Configuration tool, using
+ # values from the debconf database.
+ #
+ # Edit this file with caution, and see the /etc/X11/xorg.conf manual page.
+ # (Type "man /etc/X11/xorg.conf" at the shell prompt.)
+ #
+ # This file is automatically updated on xserver-xorg package upgrades *only*
+ # if it has not been modified since the last upgrade of the xserver-xorg
+ # package.
+ #
+ # If you have edited this file but would like it to be automatically updated
+ # again, run the following command:
+ # sudo dpkg-reconfigure -phigh xserver-xorg
+
+ Section "Files"
+ FontPath "/usr/share/X11/fonts/misc"
+ FontPath "/usr/share/X11/fonts/cyrillic"
+ FontPath "/usr/share/X11/fonts/100dpi/:unscaled"
+ FontPath "/usr/share/X11/fonts/75dpi/:unscaled"
+ FontPath "/usr/share/X11/fonts/Type1"
+ FontPath "/usr/share/X11/fonts/CID"
+ FontPath "/usr/share/X11/fonts/100dpi"
+ FontPath "/usr/share/X11/fonts/75dpi"
+ # paths to defoma fonts
+ FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
+ FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID"
+ EndSection
+
+ Section "Module"
+ Load "GLcore"
+ Load "i2c"
+ Load "bitmap"
+ Load "ddc"
+ Load "extmod"
+ Load "freetype"
+ Load "glx"
+ Load "int10"
+ Load "type1"
+ Load "vbe"
+ EndSection
+
+ Section "InputDevice"
+ Identifier "Generic Keyboard"
+ Driver "kbd"
+ Option "CoreKeyboard"
+ Option "XkbRules" "xorg"
+ Option "XkbModel" "pc104"
+ Option "XkbLayout" "us"
+ EndSection
+
+ Section "InputDevice"
+ Identifier "Configured Mouse"
+ Driver "mouse"
+ Option "CorePointer"
+ Option "Device" "/dev/mouse"
+ Option "Protocol" "osmouse"
+ EndSection
+
+ Section "InputDevice"
+ Identifier "Synaptics Touchpad"
+ Driver "synaptics"
+ Option "SendCoreEvents" "true"
+ Option "Device" "/dev/psaux"
+ Option "Protocol" "auto-dev"
+ Option "HorizScrollDelta" "0"
+ EndSection
+
+ Section "Device"
+ Identifier "Videocard0"
+ Driver "vesa"
+ EndSection
+
+ Section "Monitor"
+ Identifier "Monitor0"
+ VendorName "Dell"
+ HorizSync 31.5 - 90.0
+ VertRefresh 59.0 - 85.0
+ Option "DPMS"
+ EndSection
+
+ Section "Screen"
+ Identifier "Screen0"
+ Device "Videocard0"
+ Monitor "Monitor0"
+ DefaultDepth 24
+ SubSection "Display"
+ Depth 1
+ Modes "800x600"
+ EndSubSection
+ SubSection "Display"
+ Depth 4
+ Modes "800x600"
+ EndSubSection
+ SubSection "Display"
+ Depth 8
+ Modes "800x600"
+ EndSubSection
+ SubSection "Display"
+ Depth 15
+ Modes "800x600"
+ EndSubSection
+ SubSection "Display"
+ Depth 16
+ Modes "800x600"
+ EndSubSection
+ SubSection "Display"
+ Depth 24
+ Modes "800x600"
+ EndSubSection
+ EndSection
+
+ Section "DRI"
+ Mode 0666
+ EndSection
+
+### <a name="Starting_X"> Starting X </a>
+
+Finally, run `startx`
+
+However, there are several caveats to be aware of:
+
+* `update-menu` does not yet work. As such, there are no fine Debian menus.
+
+**_WARNING:_** If you get an error about opening the display or a permissions issue, you may need to run the following:
+
+ # dpkg-reconfigure xserver-common
+
+change from "Console Users Only" to "Anybody"
+
+Good luck and enjoy!
+
+----
+
+-- [[Main/BarryDeFreese]] - 02 Mar 2006
diff --git a/Hurd/Debugging.mdwn b/Hurd/Debugging.mdwn
new file mode 100644
index 00000000..5e94f65d
--- /dev/null
+++ b/Hurd/Debugging.mdwn
@@ -0,0 +1,29 @@
+## <a name="GDB"> </a> GDB
+
+<http://sourceware.org/gdb/>
+
+[General GDB documentation](http://sourceware.org/gdb/documentation/), including the [special Hurdy bits](http://sourceware.org/gdb/current/onlinedocs/gdb_19.html#Hurd%20Native).
+
+<http://lists.gnu.org/archive/html/bug-hurd/2007-02/msg00039.html>
+
+### <a name="noninvasive_mode"> _noninvasive_ mode </a>
+
+This essentially means that the program continues running as usual, but you can use GDB to get back traces and print variables (and watch them change underneath you). This can be helpful when debugging system wide default servers that shall not be stopped while debugging.
+
+----
+
+## <a name="Debugging_glibc"> Debugging glibc </a>
+
+See [[DebuggingGlibc]].
+
+----
+
+## <a name="Debugging_via_subhurds"> Debugging via subhurds </a>
+
+See [[DebuggingViaSubhurds]].
+
+----
+
+## <a name="General_Notes"> General Notes </a>
+
+For debugging the system wide default servers (like the root file system server or the _exec_ server), it is recommendable to instead debug them in a sub-hurd or at least use the _noninvasive_ mode when attaching GDB to them.
diff --git a/Hurd/DebuggingGlibc.mdwn b/Hurd/DebuggingGlibc.mdwn
new file mode 100644
index 00000000..8c64d1fc
--- /dev/null
+++ b/Hurd/DebuggingGlibc.mdwn
@@ -0,0 +1,59 @@
+Here are some hints about how to approach testing after nontrivial changes to glibc have been done.
+
+----
+
+First step is having the build a glibc complete. This is actually more difficult than one might expect, as it involves (towards the end of the build process; unless you are cross-building, of course), that the newly created libraries and loader actually work: they're used to run the _rpcgen_ program. If that step doesn't succeed, it'll look similar to this:
+
+ [...]
+ CPP='gcc -E -x c-header' [...]/build/elf/ld.so.1 --library-path [...] [...]/build/sunrpc/rpcgen [...]
+ Segmentation fault
+
+----
+
+If building glibc succeeds, the next thing to try is running the test suite, or parts of it.
+
+Here is a list of known failures:
+
+[TODO].
+
+----
+
+Make sure static linking is working ok at all. The _elf/sln_ program (a stripped-down _ln_ that is statically linked) in the glibc build ought to test that. Also, static linking under various conditions will already have been tested when running the test suite, especially in _elf/_ and _dlfcn/_.
+
+Make sure static linking with cthreads is working. If you can get an _ext2fs.static_ compiled and linked against the new glibc, that is good.
+
+[TODO].
+
+Then debug its startup as a normal program on your working hurd.
+
+ $ [...]/ext2fs.static --help
+ [...]
+
+Then try its full server startup.
+
+ $ settrans -ca node [...]/ext2fs.static <BACKEND>
+ $ cd node/
+ [...]
+
+Make sure dynamic linking for servers is working. If you haven't broken the ABI, you can just use an existing _/hurd/foobar_ binary, started the way glibc's _testrun.sh_ does it.
+
+[TODO]: Is this the correct way to do that?
+
+ $ settrans -ca node [glibc]/build/testrun.sh /hurd/ext2fs <BACKEND>
+ $ cd node/
+ [...]
+
+----
+
+Test it in a subhurd. See [[DebuggingViaSubhurds]].
+
+----
+
+Test it on a real system.
+
+----
+
+Sources:
+
+* <http://lists.gnu.org/archive/html/bug-hurd/2007-02/msg00038.html>
+* [[ThomasSchwinge]]'s mind
diff --git a/Hurd/DebuggingViaSubhurds.mdwn b/Hurd/DebuggingViaSubhurds.mdwn
new file mode 100644
index 00000000..8985f3ee
--- /dev/null
+++ b/Hurd/DebuggingViaSubhurds.mdwn
@@ -0,0 +1,85 @@
+## <a name="General_Information"> General Information </a>
+
+See the [[SubhurdHowto]] for general information about subhurds.
+
+----
+
+## <a name="Debugging_the_Hurd_Startup_Proce"> Debugging the Hurd Startup Process </a>
+
+_one.full_ is the subhurd's root file system image and has been installed as follows: [TODO]
+
+_Wx_ translates to terminal window _x_.
+
+W1
+
+ $ fsysopts one.full/ --readonly
+ $ sudo boot -I -d -s -D one.full/ one.full/boot/script.boot one.full.ext2
+ Pausing. . .
+
+(In theory it shouldn't be neccessary to run the subhurd as user _root_, but in practice [that doesn't work at the moment](http://savannah.gnu.org/bugs/?17341).)
+
+W2
+
+ $ ps -Af
+ [...]
+ root 851 385 p4 0:00.01 boot -I -d -s -D one.full/ one.full/boot/script.boot one.full.ext2
+ - 853 1 ? 0:00.00 ?
+ - 854 1 ? 0:00.00 ?
+ [...]
+ $ sudo gdb /var/tmp/one.full/hurd/ext2fs.static
+ [...]
+ (gdb) attach 853
+ Attaching to program `/var/tmp/one.full/hurd/ext2fs.static', pid 853
+ warning: Can't modify tracing state for pid 853: No signal thread
+ Can't fetch registers from thread 1: No such thread
+
+(The _boot_ program [could be modified to print out the pids](http://savannah.gnu.org/bugs/?19254), so that one wouldn't have to fumble with _ps_.)
+
+W3
+
+ $ sudo gdb /var/tmp/one.full/lib/ld.so.1
+ [...]
+ (gdb) set solib-absolute-prefix /var/tmp/one.full
+ (gdb) attach 854
+ Attaching to program `/var/tmp/one.full/lib/ld.so.1', pid 854
+ warning: Can't modify tracing state for pid 854: No signal thread
+ Can't fetch registers from thread 1: No such thread
+
+W1
+
+ [<Enter>.]
+ /hurd/ext2fs.static --bootflags=-dsf --host-priv-port=38 --device-master-port=43 --exec-server-task=47 -Tdevice pseudo-root
+ /lib/ld.so.1 /hurd/exec
+
+Now that this step has been accomplished, you can set break points in GDB, etc.
+
+W2
+
+ (gdb) continue
+ Continuing.
+ warning: Can't wait for pid 853: No child processes
+
+W1
+
+ Hurd server bootstrap: ext2fs.static[pseudo-root] exec
+
+W3
+
+ (gdb) continue
+ Continuing.
+ warning: Can't wait for pid 854: No child processes
+
+ Program received signal EXC_BAD_ACCESS, Could not access memory.
+ __mach_port_mod_refs (task=1, name=139802, right=1, delta=-1)
+ at /var/tmp/glibc-2_5-branch/build_--without-tls_--without-__thread/mach/RPC_mach_port_mod_refs.c:132
+ 132 InP->Head.msgh_reply_port = __mig_get_reply_port();
+ (gdb) x/i $pc
+ 0x168f2 <__mach_port_mod_refs+82>: call 0x151b0 <__mig_get_reply_port>
+
+----
+
+Sources:
+
+* <http://www.gnu.org/software/hurd/howto/subhurd.html>
+* <http://lists.gnu.org/archive/html/bug-hurd/2007-02/msg00030.html>
+* [[ThomasSchwinge]]'s mind
diff --git a/Hurd/DeepakGoelHurdPage.mdwn b/Hurd/DeepakGoelHurdPage.mdwn
new file mode 100644
index 00000000..ac95f394
--- /dev/null
+++ b/Hurd/DeepakGoelHurdPage.mdwn
@@ -0,0 +1,11 @@
+I march forward an inch every now and then whenever I get a chance, in introducing myself to Hurd and grub..
+
+Here'a my hurd page..
+
+<http://deego.gnufans.org/~deego/pub/hurd/>
+
+Here's my emacswiki page: <http://www.emacswiki.org/cgi-bin/wiki.pl?DeepakGoel>
+
+And here's my very-unorganized homepage: <http://deego.gnufans.org/~deego/>
+
+-- [[Main/DeepakGoel]] - 02 Oct 2002
diff --git a/Hurd/DesignGoals.mdwn b/Hurd/DesignGoals.mdwn
new file mode 100644
index 00000000..5dbd7018
--- /dev/null
+++ b/Hurd/DesignGoals.mdwn
@@ -0,0 +1,53 @@
+# <a name="Design_Goals"> Design Goals </a>
+
+## <a name="The_Position_Paper"> The Position Paper </a>
+
+_Improving Usability via Access Decomposition and Policy Refinement_ tries to capture technical objectives. As has been stated by Neal in [2], these are a number of scenarios we are interested in addressing:
+
+* security: programs are not users; they should be constrained according to the user's intents
+* resource management
+ * efficiency: facilitate use of local knowledge
+ * soft real-time: expose virtualized resources with useful access case characteristics
+* integration: safe extension of the system
+
+## <a name="The_original_list"> The original list </a>
+
+These goals have been initially proposed by Bas Wijnen [1]. The list here is a slightly modified form, I tried to incorporate the content of the mailing list discussion. It has to be noted that there is no consensus about this list. There have been objections about both the number of goals stated and specific goals themselves.
+
+## <a name="Essential_Goals"> Essential Goals </a>
+
+* stability
+* robustness
+* resource accountability
+* confinement
+* support for most legacy applications
+* extensibility
+* no ACLs
+
+### <a name="On_Extensibility"> On Extensibility </a>
+
+Extensibility has often been a strong argument to support the multiserver approach. Therefore, I think, it has been rated to be an essential goal in our (preliminary) list, too. However, it has been [suggested](http://citeseer.ist.psu.edu/druschel97extensible.html) that this argument is of few or no interest for a general purpose OSes: it is argued that the benefits of extensible kernels can be migrated to conventional ones by defining exactly what the extension requires. "Conventional kernel" is here probably to be interpreted as "monolithic kernel". From the above, I think the first (naive) conclusion that could be drawn would be to abandon the multiserver approach and extensibility goal.
+
+However, I do believe there are benefits in multiserver environments you cannot get in a monolithic one, namely enhanced security and stability through protection boundaries. Also, whilst wanting to become adopted as general purpose OS, ngHurd still strives to allow for research also, so even according to the above-referenced paper extensibility is to be one of its goals.
+
+Therefore, I'd want to propose to weaken the impact of extensibility on the design, by lowering it to the category "Regular Goals". -- [[Main/TomBachmann]] - 13 Dec 2006
+
+## <a name="Regular_Goals"> Regular Goals </a>
+
+* confinement with endogenous verification
+* soft real time
+* setting diverse resource distribution policies
+* persistent sessions for users
+
+## <a name="Optional_Goals"> Optional Goals </a>
+
+* small memory footprint
+* support for all POSIX applications
+* persistence
+
+----
+
+* [1] <http://lists.gnu.org/archive/html/l4-hurd/2005-11/msg00037.html>
+* [2] <http://lists.gnu.org/archive/html/l4-hurd/2007-01/msg00122.html>
+
+-- [[Main/TomBachmann]] - 29 Apr 2006
diff --git a/Hurd/DesignPrinciples.mdwn b/Hurd/DesignPrinciples.mdwn
new file mode 100644
index 00000000..42faa52f
--- /dev/null
+++ b/Hurd/DesignPrinciples.mdwn
@@ -0,0 +1,39 @@
+# <a name="Design_Principles"> Design Principles </a>
+
+A design principle is a test that lets us **reject** things. Hopefully, when combined with other design principles, it forms a basis for making coherent and consistent decisions about design goals and system features. [1]
+
+## <a name="Stated_design_principles"> Stated design principles </a>
+
+None defined yet, but there seems to be consensus that ngHurd should be a principle-driven design.
+
+## <a name="Potential_design_principles"> Potential design principles </a>
+
+Here is an incomplete list of potential design principles for the ngHurd. It is taken from [2]. I left out some principles I think do not apply or are not in question. Feel free to add more.
+
+### <a name="Principles_from_the_Multics_Proj"> Principles from the Multics Project </a>
+
+* _Economy of mechanism_: Keep the design as simple as possible.
+* _Fail-safe defaults_: Base access decisions on permission rather than exclusion.
+* _Least priviledge_: Components should have no more authority than they require.
+* _Least common mechanism_: Minimize the amount of shared instances in the system.
+
+### <a name="Commonly_accepted_principles"> Commonly accepted principles </a>
+
+* _Separation of policy and mechanism_
+* _Least astonishment (also known as principle of least surprise):_ The system�s behavior should match what is naively expected.
+* _Complete accountability_: All real resources held by an application must come from some accounted pool.
+* _Safe restart_: On restart, the system must either already have, or be able to rapidly establish, a consistent and secure execution state.
+* _Reproducibility_: Correct operations should produce identical results regardless of workload.
+
+### <a name="Principles_specific_to_EROS"> </a> Principles specific to EROS
+
+* _Credible policy_: If a security policy cannot be implemented by correct application of the system�s protection mechanisms, do not claim to enforce it.
+* _Explicit authority designation_: Every operation that uses authority should explicitely designate the source of the authority it is using.
+* _Relinquishable authority_: If an application holds some authority, it should be able to voluntarily reduce this authority.
+
+----
+
+See also:
+
+* [1] <http://lists.gnu.org/archive/html/l4-hurd/2005-11/msg00120.html>
+* [2] EROS: A Principle-Driven Operating System from the Ground Up
diff --git a/Hurd/DhcpClient.mdwn b/Hurd/DhcpClient.mdwn
new file mode 100644
index 00000000..442f4781
--- /dev/null
+++ b/Hurd/DhcpClient.mdwn
@@ -0,0 +1,42 @@
+# <a name="DHCP_and_the_Hurd"> </a> DHCP and the Hurd
+
+According to the following thread, no port should be needed since all the patches that have been applied, including the one concerning the thread. In fact, the thread finishes without concluding whether the patch has been applied or not. You can grab it in the thread, anyway.
+
+[Link to thread](http://lists.gnu.org/archive/html/bug-hurd/2005-01/msg00025.html)
+
+The thread starts at Jan 4th 2005 until Jan 6th and is only retaken at April 14th in [this thread](http://lists.gnu.org/archive/html/bug-hurd/2005-01/msg00025.html).
+
+-- [[Main/ThadeuCascardo]] - 29 Sep 2005
+
+No DHCP client has been ported to the Hurd yet.
+
+[This](http://mail.gnu.org/archive/html/help-hurd/2003-10/msg00016.html) thread on help-hurd has a little more info on what's still needed for DHCP.
+
+-- [[Main/GregBuchholz]] - 09 Oct 2003
+
+Found this [message](http://mail.gnu.org/archive/html/bug-hurd/2003-08/msg00045.html) about DHCP capabilities in the Hurd encouraging.
+
+-- [[Main/GregBuchholz]] - 03 Sep 2003
+
+* Tom Hart began a [discussion ](http://mail.gnu.org/pipermail/help-hurd/2002-October/006643.html) of 14 posts in Oct 2002.
+
+-- [[Main/GrantBow]] - 20 Oct 2002
+
+The beginnings of a DHCP translator is available in the Hurd sources on Savannah: [hurd/trans/pump.c](http://savannah.gnu.org/cgi-bin/viewcvs/hurd/hurd/trans/pump.c?rev=1.3&content-type=text/vnd.viewcvs-markup)
+
+Unfortunately our current TCP/IP stack, the pfinet translator, lacks support for the AF\_PACKET interface as well as sending packets with an IP address of 0.0.0.0.
+
+Grant Bowman on bug-hurd:
+
+ Herbert Xu (Pump maintainer) told me that to operate correctly, pump
+ uses the AF_PACKET interface which is only present in 2.2.
+
+ Anyone else know the status of getting these compiled and functional?
+
+Neal Walfield on bug-hurd replies:
+
+ > Anyone else know the status of getting these compiled and functional?
+
+ We need to be able to send to the DHCP server with ip address 0.0.0.0.
+
+-- [[Main/JoachimNilsson]] - 12 Nov 2002
diff --git a/Hurd/DistributedServers.mdwn b/Hurd/DistributedServers.mdwn
new file mode 100644
index 00000000..fde3692c
--- /dev/null
+++ b/Hurd/DistributedServers.mdwn
@@ -0,0 +1,29 @@
+# <a name="Distributed_Computing"> Distributed Computing </a>
+
+The [[Mach/WebHome]] micro kernel was originally designed to run on symetric multi-processing (SMP) systems. Later, it was extended to allow for distributed OS support. A group of workstations with Mach can act as a single powerful SMP machine. Thus, Mach is also called a Single System Image (SSI).
+
+The Mach micro kernel provides a good infrastructure for distributed computing, including thread migration, inter-thread communition (both locally and remotely), load balancing and fault-tolerance. The Hurd, using Mach as a foundation, has great potential for distributed computing. Progress toward distributed kernel designs is proceeding within other projects as well. OpenMosix is a related projects for Linux kernels. You can reach it at:
+
+* <http://www.openmosix.org/>
+* <http://openmosix.sourceforge.net/>
+* <http://sourceforge.net/projects/openmosix/>
+
+OpenMosix patches specific Linux kernel versions to make them "distributed-enabled". However, since the Linux kernel is monolithic, patches must be updated with each new version of kernel. That can be extremely difficult due to the pace at which Linux kernels are currently developed.
+
+The Hurd architecture is better suited to distributed computing. Due to Hurd's server structure this is much more easily adapted. Efforts continue to evolve it's design not only on the Mach micro kernel but also work continues on a [[Mach/PortToL4]] micro kernel.
+
+----
+
+## <a name="Document_history"> Document history </a>
+
+Created.
+
+-- [[Main/LaudneyRen]] - 29 Sep 2002
+
+Various grammatical fixes and tidying up.
+
+-- [[Main/JoachimNilsson]] - 29 Oct 2002
+
+Updated for [[Mach/WebHome]] web, reworded parts for more direct message. Added L4 link.
+
+-- [[Main/GrantBow]] - 11 Jan 2003
diff --git a/Hurd/Donate.mdwn b/Hurd/Donate.mdwn
new file mode 100644
index 00000000..03737dc8
--- /dev/null
+++ b/Hurd/Donate.mdwn
@@ -0,0 +1,19 @@
+If you feel like donating goods or money for the work the developers are doing, then we're happy to confirm that this is indeed possible. Of course we'd really like to have you working with us on the system, but if you're feeling generous we won't stop you either.
+
+Note that you can't donate directly to the Hurd project, but only to either the Free Software Foundation or individually to the developers. Donations to the Free Software Foundation are tax deducible, see <http://fsf.org/donate>.
+
+Another possibility is to meet with the Hurd developers at a meeting and spend them a pizza or similar. [[Hug/FOSDEM]] is a possibility.
+
+## <a name="Developers"> Developers </a>
+
+<small>(alphabetically)</small>
+
+### <a name="MarcusBrinkmann"> </a> [[MarcusBrinkmann]]
+
+... would like you to donate to the Free Software Foundation (see the top of this page) or to the [Electronic Frontier Foundation](http://eff.org/support/).
+
+### <a name="ThomasSchwinge"> </a> [[ThomasSchwinge]]
+
+Rate him and donate money to the Free Software Foundation [through Affero](http://rate.affero.net/tschwinge/Hurd/).
+
+For specifically donating to him [go here](http://nic-nac-project.de/~schwinge/donate.html).
diff --git a/Hurd/ErrorCollection.mdwn b/Hurd/ErrorCollection.mdwn
new file mode 100644
index 00000000..9706eb34
--- /dev/null
+++ b/Hurd/ErrorCollection.mdwn
@@ -0,0 +1,18 @@
+## <a name="Error_collection_page"> Error collection page </a>
+
+This page is intended to serve as a pasting page for error messages. If you experience an error -- specifically in a crash -- just paste it here.
+
+Do not confuse this page with a bug tracker. In a bug tracker, you usually have to describe problems specifically, ponder about the wording, search the Internet for information, make sure you have checked other conditions, etc.; here, you just paste the error message so other people can use it as a **reference**. An entry here may lead to a bug report, however.
+
+Feel free to comment pastings and ask questions about them..
+
+-- Soeren Schulze - 15 Dec 2005
+
+ext2fs.static with thread throttling from 20050513 -- Soeren Schulze - 15 Dec 2005:<br />
+
+ ext2fs: /dev/hd2s10: warning: bit already cleared for inode 1028246
+ ext2fs: /dev/hd2s10: warning: bit already cleared for inode 1028247
+ ext2fs: /dev/hd2s10: warning: cannot handle large file inode 1028248
+ ext2fs: /dev/hd2s10: ext2_free_blocks: freeing blocks not in datazone - block = 15552000, count = 1
+ ext2fs: /dev/hd2s10: warning: bit already cleared for block 1
+ ext2fs: /dev/hd2s10: panic: ext2_free_blocks: freeing blocks in system zones - block = 1, count = 1
diff --git a/Hurd/ExtTwoSize.mdwn b/Hurd/ExtTwoSize.mdwn
new file mode 100644
index 00000000..c8dad3d4
--- /dev/null
+++ b/Hurd/ExtTwoSize.mdwn
@@ -0,0 +1,27 @@
+## <a name="Ext2_File_system_limitation"> Ext2 File system limitation </a>
+
+This is a very common question. Many people have problems with the partition limit on Ext2 filesystems being very small by current standards. It feels smaller all the time as people have larger disks and often larger filesystems. It's worth mentioning that 64-bit machines (ia64, alpha) will not have this limitation.
+
+Note that, while the official CVS sources still suffer of this problem, recent (as of 2007) Debian GNU Hurd distributions **do not have this limit anymore**. Be happy.
+
+* From the Hurd FAQ: [partition limit](http://www.gnu.org/software/hurd/faq.en.html#q2-6)
+
+**_Patch:_**
+
+[Release candidate 1](https://savannah.gnu.org/patch/?func=detailitem&item_id=2508) of the patch is uploaded in Savannah.
+
+**_Useful:_**
+
+Discussions on status and how to fix the problem:
+
+* [Febuary 2003](http://lists.debian.org/debian-hurd/2003/debian-hurd-200302/msg00016.html)
+* [December 2002](http://mail.gnu.org/archive/html/bug-hurd/2002-12/msg00041.html)
+* [March 2002 status](http://mail.gnu.org/archive/html/hurd-devel/2002-03/msg00030.html) and a [follow up](http://mail.gnu.org/archive/html/hurd-devel/2002-03/msg00035.html)
+* [Nov 2001 status](http://mail.gnu.org/archive/html/hurd-devel/2001-11/msg00002.html)
+
+**_Maybe Useful:_**
+
+* <http://mail.nl.linux.org/kernel-doc/1999-03/msg00001.html> (This link is broken. Have been unable to fix it. [[MauriceMcCarthy]] 2 Nov 2004.)
+* <http://www.beowulf.org/pipermail/beowulf/2000-March/008708.html>
+
+(Searching Beowulf for '2Gb patch' seems to show this still present in the archive but somehow it is not accessible.)
diff --git a/Hurd/ExtTwofsTranslator.mdwn b/Hurd/ExtTwofsTranslator.mdwn
new file mode 100644
index 00000000..d8f708fc
--- /dev/null
+++ b/Hurd/ExtTwofsTranslator.mdwn
@@ -0,0 +1,4 @@
+* [[ExtTwoSize]] - information about the limitation of partition size
+* [[XattrHurd]] - Supports Hurd ext2 format extensions on Linux, images at <http://people.debian.org/~mbanck/xattr-hurd>
+
+-- [[Main/GrantBow]] - 03 Mar 2004
diff --git a/Hurd/FirstClassReceiveBuffer.mdwn b/Hurd/FirstClassReceiveBuffer.mdwn
new file mode 100644
index 00000000..c3cc3142
--- /dev/null
+++ b/Hurd/FirstClassReceiveBuffer.mdwn
@@ -0,0 +1,3 @@
+TBD, see e.g. <http://coyotos.org/docs/ukernel/spec.html> and <http://www.coyotos.org/pipermail/coyotos-dev/2006-January/000391.html>
+
+-- [[Main/TomBachmann]] - 31 Aug 2006
diff --git a/Hurd/Flash.mdwn b/Hurd/Flash.mdwn
new file mode 100644
index 00000000..b13a6149
--- /dev/null
+++ b/Hurd/Flash.mdwn
@@ -0,0 +1,5 @@
+This page is about booting a USB flash memory with GNUHurd .
+
+See:
+
+\* <http://wiki.debian.org/wiki/BootUsb>
diff --git a/Hurd/FlashHurd.mdwn b/Hurd/FlashHurd.mdwn
new file mode 100644
index 00000000..87389c4b
--- /dev/null
+++ b/Hurd/FlashHurd.mdwn
@@ -0,0 +1,60 @@
+# <a name="USB_Flash_Memory_GNU_Hurd"> </a> USB Flash Memory GNU/Hurd
+
+It would be nice if we had a bootable [USB flash drive](http://en.wikipedia.org/wiki/USB_key) Hurd like [[DamnSmallLinux]]. It would be useful for those who want to try out the Hurd before they commit to installing it on their hard disks. In addition to that, a bootable Flash Hurd would enable us to have a native installer instead of relying on Linux.
+
+It could be installed in the USB using a [[LiveCD]] (using a script) - this is the Burned version - or directly downloading the iso files from the Internet - Unburned version -. One can use also [qemu] to run the [[LiveCD]] and them use the USB installation script.
+
+Here is an outline of the things that need to be done. Please add your comments and suggestions.
+
+## <a name="Requirements_Outline"> Requirements Outline </a>
+
+### <a name="1_We_need_to_be_able_get_a_bootl"> </a> 1. We need to be able get a bootloader for USBs
+
+This is not much of a problem. I have already been successful (see below) in using [Grub](http://en.wikipedia.org/wiki/GRand Unified Bootloader) and the El-Torito HD emulation to boot [[GNUmach]] off a CD. There may be some minor tweaking of Grub code necessary to detect which device to use for booting (instead of having the user select their device (hd0,hd1,etc.) from the Grub menu).
+
+Using GRUB's stage2\_eltorito seems to work fine.
+
+### <a name="2_We_need_a_bootstrap_filesystem"> 2. We need a bootstrap filesystem translator </a>
+
+This would be something like a statically linked iso9660fs translator. Compiling a statically linked iso9660fs translator is easy enough, though it doesn't boot. I don't currently know whether this is because the translator was never meant to be a bootstrap filesystem, or if there is a simple bug which has never been flushed out because the translator has never been used at boot time before. I've had trouble debugging this problem because I haven't yet figured out a way to use a remote gdb with gnumach. Theoretically you could use the "boot" command to overcome this problem, but "boot" for me mangles the terminal and exits in different manner than an actual boot.
+
+The iso9660fs translator works great, it just needs to be statically linked.
+
+### <a name="3_We_need_a_ramdisk_to_enable_wr"> 3. We need a ramdisk to enable write access </a>
+
+I think we could fake this with Farid Hajii's [memfs](http://www.fprintf.net/hurd/) translator and writing an ext2 filesystem to it.
+
+From the mem-fs README...
+
+> memfs-1 is a translator that provides a memory-based file of fixed size. This file can, just like bigfile, contain a regular filesystem.
+
+We could set a mem-fs translator anywhere on the CD you needed write access, including having softlinks to the contents of the root directory and chrooting to this new directory.
+
+For a quick and dirty memfs, you can do it right now with the following commands:
+
+ # touch ./ramdisk
+ # touch ./tmpfs
+ # settrans -a ./ramdisk /hurd/storeio -Tcopy zero:50M
+ # /sbin/mke2fs -o hurd -b 4096 -F ./ramdisk
+ # settrans -a tmpfs /hurd/ext2fs.static ./ramdisk
+ # fsysopts --writable ./tmpfs
+ # cd tmpfs
+ # touch somenewfile
+
+Here we use two files ramdisk, and tmpfs that are already created on a readonly file system. For illustration purposes, they are touched beforehand. We run an active storeio translator on the ramdisk file to give us 50MB of RAM to work with, and then we make an ext2 filesystem on it.
+
+At this point we'd could copy the contents of the `/var` directory into the tmpfs, and then symlink `/var` to `/tmpfs/var`. The same goes for all other mutable dirs.
+
+This approach of putting an entire ext2 filesystem in a copy zero'd store has some drawbacks listed [here](http://lists.gnu.org/archive/html/bug-hurd/2000-12/msg00073.html).
+
+Those are the essentials. Here is a list of the things which would be nice to have for a USB Flash Memory.
+
+* Knoppix like script for starting up X and [[GraphicEnvironment]] s ([[FluxBox]], Gnome...)
+* DHCP support for easy network setup
+* Hardware autodetection (Kudzu).
+* Knoppix like script for installing to the hard drive or to bootable USB pendrive .
+* (add your favorite feature here)
+
+Here is a mailing-list [thread](http://lists.debian.org/debian-hurd/2003/debian-hurd-200308/msg00172.html) discussing some of these issues.
+
+-- [[Main/GregBuchholz]] - 21 Oct 2003 -- [[Main/NagromNamreh]] - 29 Jan 2004
diff --git a/Hurd/FreeSoftware.mdwn b/Hurd/FreeSoftware.mdwn
new file mode 100644
index 00000000..71e238eb
--- /dev/null
+++ b/Hurd/FreeSoftware.mdwn
@@ -0,0 +1,5 @@
+A distinguishing term separating [[OpenSource]] from truly free software. See more on the Free Software Foundation's home page, <http://www.fsf.org>
+
+Also, see the [[GeneralPublicLicense]] for the complete text on the GPL.
+
+-- [[Main/JoachimNilsson]] - 11 May 2002
diff --git a/Hurd/FrequentlyAskedQuestions.mdwn b/Hurd/FrequentlyAskedQuestions.mdwn
new file mode 100644
index 00000000..f10c7860
--- /dev/null
+++ b/Hurd/FrequentlyAskedQuestions.mdwn
@@ -0,0 +1,45 @@
+In addition to the [general FAQ](http://www.gnu.org/software/hurd/docs.html#TOCfaq) there are the following typical newbie questions. (There is an [updated version](http://tuxou.ouvaton.org/hurd/) which is not official yet.)
+
+If you still have problems, do not hesitate to make use of the [[MailLists]] or the [[HurdIRC]].
+
+* **_You say GNU, don't you mean GNU/Hurd?_**
+ * Yes and no. GNU refers to the system as a whole, while GNU/Hurd is more specific, saying that it is the GNU system running on the Hurd -- to differentiate it from the GNU system running on Linux, GNU/Linux. Also see [[GNU/GnuNames]]
+
+* **_What editor can I use?_**
+ * `nano` is the default editor on a fresh install, not `ae`.
+
+* **_Why can't I get the answers I need from Hurd hackers?_**
+ * This [document](http://www.catb.org/~esr/faqs/smart-questions.html) may help you understand some developers attitudes and social norms.
+
+* **_Where are the virtual consoles I use when running GNU/Linux?_**
+ * You need to [use screen](http://www.gnu.org/software/hurd/faq.en.html#q4-6) instead, also available when running GNU/Linux.
+ * The [new console](http://lists.debian.org/debian-hurd/2002/debian-hurd-200209/msg00054.html) by Marcus Brinkmann could also be used. It supports the Alt-Fn keys for switching like in GNU/Linux. NOTE: that message has an error in the configuration steps, it says `/dev/vts` when it means `/dev/vcs`. A more up-to-date howto is [[HurdConsole]].
+
+* **_What is a translator?_**
+ * The official FAQ [answers](http://www.gnu.org/software/hurd/faq.en.html#q4-2) this question by a reference to [hurd-doc-translator](http://www.debian.org/ports/hurd/hurd-doc-translator).
+
+* **_Where's the sauce?_**
+ * It's on [Savannah](http://savannah.gnu.org). See also the [GNU Development Resources](http://www.gnu.org/software/devel.html), for more information.
+
+* **_What is this "libio" stuff?_**
+ * There was an ABI change for glibc0.3. It's recommended you reinstall your GNU/Hurd system if you run a system installed before the summer of 2002. This is a similar cause for the various Linux distributions who changed from libc5 to libc6 or glibc2 around 1998.
+
+* **_What is GNU Mach vs. oskit-mach?_**
+ * These are different versions of the Mach microkernel that supports the Hurd that runs on top of it. For more info, see [[Mach/WebHome]]
+
+* **_What software is available for GNU?_**
+ * Most packages from [Debian](http://www.debian.org/) [GNU/Linux](http://www.gnu.org/gnu/linux-and-gnu.html) which aren't linux-specific ([Packages That Won't Be Ported](http://www.debian.org/ports/hurd/hurd-devel-debian)) are expected to work on GNU/Hurd too. See the database in <http://packages.debian.org/>. Programs which need pthreads, including [GNOME](http://www.gnome.org), [KDE](http://www.kde.org), [Mozilla](http://www.mozilla.org), [OpenOffice](http://www.openoffice.org), [SDL](http://www.libsdl.org), etc. are being worked on currently using Neal Walfields libpthreads. See the [[Distrib/PortingIssues]] document for some common build problems and their solutions.
+ * If you can't fetch a package with "apt-get install ", try building it from source: "apt-get source &amp;&amp; cd &lt;package\_dir&gt; &amp;&amp; debian/rules binary".
+ * As of January 2007, 50% of Debian packages have been ported on the Hurd. Of course, bug testing is welcome.
+
+* **_How do I initialize a serial console on the Hurd?_**
+ * You can try out the Serial Howto at <http://www.nongnu.org/thug/serial-howto.txt>
+ * For a real serial console at boot time you need to rebuild your GNUmach 1.x kernel. For more info see the Utah release notes at [http://www.cs.utah.edu/flux/mach4-i386/html/mach4-UK22.html#serial\_console](http://www.cs.utah.edu/flux/mach4-i386/html/mach4-UK22.html#serial_console)
+
+* **_Will GNU work in Vmware?_**
+ * It's highly recommended and easier to get a full image for Bochs. See [[Distrib/WebHome]]
+ * It didn't use to, [Hurd bootstrap fails](http://lists.debian.org/debian-hurd/2002/debian-hurd-200207/msg00069.html). Vmware is not [free software](http://www.gnu.org/philosophy/free-sw.html) and it is [[Distrib/VmWare]]. We recommend to use [free](http://www.gnu.org/philosophy/free-sw.html) alternatives, like [[Distrib/BochsEmulator]].
+ * A faster, more widespread and [free](http://www.gnu.org/philosophy/free-sw.html) recent alternative is [QEMU](http://hurd.gnufans.org/bin/view/Distrib/QEMU). You can find more informations on [[Distrib/HurdOnQEMU]].
+ * If someone prefers using VMWare:
+ * It works with VMWare Workstation 4.0.5 build-6030.
+ * Running Debian GNU/HURD in VMWare works for me -- [[Main/MichaelAblassmeier]] - 03 Mar 2004
diff --git a/Hurd/FtpfsTranslator.mdwn b/Hurd/FtpfsTranslator.mdwn
new file mode 100644
index 00000000..528a10f2
--- /dev/null
+++ b/Hurd/FtpfsTranslator.mdwn
@@ -0,0 +1,7 @@
+ftpfs lets you access ftp servers via the filesystem. For detailed usage information use `/hurd/ftpfs --help` and `/hurd/ftpfs --usage`.
+
+### <a name="hostmux"> hostmux </a>
+
+ftpfs ist best used with [[HostmuxTranslator]]
+
+-- [[Main/PatrickStrasser]] - 13 Jul 2004
diff --git a/Hurd/FunnyHurd.mdwn b/Hurd/FunnyHurd.mdwn
new file mode 100644
index 00000000..1653ec77
--- /dev/null
+++ b/Hurd/FunnyHurd.mdwn
@@ -0,0 +1,39 @@
+## <a name="Fun_stuff_ripped_from_the_Intern"> Fun stuff ripped from the Internet </a>
+
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <td> %ATTACHURL%/hurd-windows.gif <br /> Hurd Windows, availble from <a href="http://www.hurd.com" target="_top">http://www.hurd.com</a></td>
+ <td> %ATTACHURL%/HurdExchange.gif <br /> Exchange your Hurd at <a href="http://www.thunderinghurd.com" target="_top">http://www.thunderinghurd.com</a></td>
+ </tr>
+ <tr>
+ <td> %ATTACHURL%/HurdCarDeal.jpg <br /> ... and we can of course also offer you a great deal on this -91 Chevy! :-) </td>
+ <td> %ATTACHURL%/HurdLodge.jpg <br /> The many perks of being a Hurd user also includes our own ski lodge! <br /><font size="+2">Hurd House</font><br />
+ <ul>
+ <li>Knotty pine kitchen</li>
+ <li>Spacious kitchen &amp;amp; living room with loft</li>
+ <li>Leather couch and love seat with a TV &amp;amp; VCR</li>
+ <li>Outdoor Jacuzzi</li>
+ <li>Spacious master bedroom/bath upstairs</li>
+ <li>Twin beds in one room / queen bed in another</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td> %ATTACHURL%/HurdMagician.jpg <br /> From <a href="http://www.magicposters.com/buy/h-k.html" target="_top">http://www.magicposters.com/buy/h-k.html</a></td>
+ <td> %ATTACHURL%/CrystalAwards.jpg <br /> "Wow dude, I saw the Debian Swirl logo on last nights <a href="http://www.wif.org/events/crystals.html" target="_top">Crystal Awards</a>!" </td>
+ </tr>
+</table>
+
+----
+
+These images and links are only here to serve as a comic relief to this site. It is **not** the intention to humiliate the people, corporations or organizations behind these factual sites.
+
+If your [company] name or organization is listed here and you do not approve you can remove yourself simply by clicking on the "Edit" button. In the login window that appears you enter _TWikiGuest_ as username and _guest_ as password.
+
+----
+
+### <a name="Comments"> Comments </a>
+
+Created the page.
+
+-- [[Main/JoachimNilsson]] - 09 Nov 2002
diff --git a/Hurd/GNOME.mdwn b/Hurd/GNOME.mdwn
new file mode 100644
index 00000000..1dbef091
--- /dev/null
+++ b/Hurd/GNOME.mdwn
@@ -0,0 +1,11 @@
+![gnome-hurd.png](http://people.debian.org/~mbanck/media/gnome-hurd.png)
+
+GNOME can now be ported with the new [[Pthreads]], but is still being worked on.The packages are at
+
+deb <http://people.debian.org/~mbanck/hurd-gnome/> ./
+
+The caveats:
+
+Some applications are not yet built, not even all the ones from gnome-core. 'apt-get install gnome-applets gnome-control-center gnome-icon-theme gnome-panel gnome-session metacity nautilus scrollkeeper' (along with the above APT source) should get you started.
+
+See also: [[Xfree86]].
diff --git a/Hurd/GNUHurdStatus.mdwn b/Hurd/GNUHurdStatus.mdwn
new file mode 100644
index 00000000..2414d25c
--- /dev/null
+++ b/Hurd/GNUHurdStatus.mdwn
@@ -0,0 +1,127 @@
+Unfortunately, this page is very outdated. For the latest status you need to check the [[MailLists]] or [[HurdIRC]]. I know that from hanging out on IRC today (Feb 29, 2004) Marcus was uploading a new [[Mach/WebHome]] binary package to update the old one in the debian archive. Work still continues on the new [[HurdConsole]]. Progress overall is slow due to the technical expertise required for many tasks and the lack of resources.
+
+-- [[Main/GrantBow]] - 01 Mar 2004
+
+Two canonical status lists are available from the CVS archive:
+
+* [TODO file](http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/hurd/hurd/TODO?rev=HEAD&content-type=text/plain) - from Hurd repository
+* [Task file](http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/hurd/hurd/tasks?rev=HEAD&content-type=text/plain) - from Hurd respository
+
+<dl>
+ <dt><a href="http://lists.debian.org/debian-hurd/2002/debian-hurd-200210/msg00035.html" target="_top">Welcome Note</a></dt>
+ <dd> Introduction to GNU and the Hurd sent monthly to <nop>Help-Hurd@gnu.org. </nop></dd>
+</dl>
+
+<div align="right"> Related: [[KnownHurdLimits]], <br />[[SeenHurd]], [[WhoRunsGNU]], [[GnuHurdLiveJournal]]</div>
+
+----
+
+Here are some notes taken from an [IRC discussion](http://web.walfield.org/~hird/%23hurd-200209027) September 28th, 2002. The part of the log at which I am summarizing starts with
+
+`<marcus@18:26> wolfgang: I once made a list of things that are definitely to be done before a release. want me to write it here? (It's only on paper so far)`
+
+This list is intended to apply to "just the CVS of the [Hurd itself](http://savannah.gnu.org/projects/hurd)." It is specifically not intended to apply to GNU/Hurd and definately not Debian GNU/Hurd.
+
+**FIXME.** How out-of-date is this stuff? -- [[Main/DeviceRandom]] - 20 Jan 2007
+
+* xkb driver for console (for international users)
+* kbd leds in console (well, in general, Roland's new driver in oskit for that crap)
+* fixing fakeroot (it's buggy)
+* fixing tmpfs (it's buggy, Neal says it's Mach's fault)
+* adding posix shared memory (requires the io\_close call to be implemented)
+* adding posix file locking (requires the io\_close call to be implemented)
+* testing
+ * find + various filesystems (are inode numbers for . and .. sane?)
+ * ext2fs with other block sizes than 4096
+ * --help and --version and --usage in all programs
+ * I have seen ^V in some --help output, might be argp bug
+ * Verify that all options are documented clearly, and that no unimplemented options appear
+ * Is the short and long description in the help output correct?
+ * Is the return value of all programs correct (eg, does main() return a sane value)
+ * Is the suid bit correctly set for all installed programs?
+ * Translators
+ * Does settrans -g work? -fg?
+ * Does fsysopts work? Does setting options with fsysopts work?
+ * Does stat() work on all translated nodes and give proper data?
+ * What about chown, chmod (some translators should pass this through to the underlying node, esp in /dev!)
+ * Does statfs give correct data?
+ * Are all inode numbers and link counts correct?
+* [one unreadable item on the paper]
+* We also should have a "make check" test suite. We can add this once Jeff finished his automake patches
+* pick up the other things
+ * pthread, definitely. Now that we are so close
+ * new console is basically done
+ * needs integration of course
+ * X switching support
+* there is certainly more to do ...
+
+--
+
+This is the wrong place for this but I'll put it here for now. Here's an [email about pthreads direction](http://mail.gnu.org/pipermail/hurd-devel/2002q3/000449.html) from hurd-devel mail list.
+
+-- [[Main/GrantBow]] - 01 Oct 2002
+
+Wolfgang also created a wonderful list of [Easy tasks](http://mail.gnu.org/pipermail/help-hurd/2002-July/006413.html) on July 28, 2002 that I will quote here:
+
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <th bgcolor="#99CCCC"><strong>Difficulty</strong></th>
+ <th bgcolor="#99CCCC"><strong>Task</strong></th>
+ </tr>
+ <tr>
+ <td> 0 </td>
+ <td> Check if all programs handle options (at least --help, --version and --usage; don't forget about the shell scripts) </td>
+ </tr>
+ <tr>
+ <td> 1 </td>
+ <td> Check if all translators handle fsysopts </td>
+ </tr>
+ <tr>
+ <td> 1 </td>
+ <td> Check if all translators respond to "settrans -g" </td>
+ </tr>
+ <tr>
+ <td> 1 </td>
+ <td> More tests of this kind </td>
+ </tr>
+ <tr>
+ <td> 2 </td>
+ <td> Fix those of the above who don't work as intended </td>
+ </tr>
+ <tr>
+ <td> 2 </td>
+ <td> Document (in doc/hurd.texi) all undocumented programs (translators as well as programs in utils/ and sutils/ and some others) </td>
+ </tr>
+ <tr>
+ <td> 1 </td>
+ <td> Find a POSIX test suite, run it on GNU/Hurd, report the results </td>
+ </tr>
+ <tr>
+ <td> 1 </td>
+ <td> Find more useful test suites to run </td>
+ </tr>
+ <tr>
+ <td> 3 </td>
+ <td> Update INSTALL-cross </td>
+ </tr>
+ <tr>
+ <td> 2 </td>
+ <td> Check if all the store classes in libstore work (we have many of them, look into the Makefile) </td>
+ </tr>
+ <tr>
+ <td> 4 </td>
+ <td> Fix those who don't work </td>
+ </tr>
+ <tr>
+ <td> 2 </td>
+ <td> Document all still undocumented store classes </td>
+ </tr>
+ <tr>
+ <td> 2 </td>
+ <td> The console is pretty new code, it told me it wants to get tested </td>
+ </tr>
+</table>
+
+Where difficulty 0 means trivial and 4 means tricky; the difficulty has nothing to do with the importance.
+
+-- [[Main/GrantBow]] - 11 Oct 2002
diff --git a/Hurd/GNUmach.mdwn b/Hurd/GNUmach.mdwn
new file mode 100644
index 00000000..6ba30395
--- /dev/null
+++ b/Hurd/GNUmach.mdwn
@@ -0,0 +1 @@
+See <http://hurd.gnufans.org/bin/view/Mach/WebHome>
diff --git a/Hurd/GNUstep.mdwn b/Hurd/GNUstep.mdwn
new file mode 100644
index 00000000..95b2a622
--- /dev/null
+++ b/Hurd/GNUstep.mdwn
@@ -0,0 +1,64 @@
+# <a name="Setting_up_GNUstep_on_the_Hurd"> </a> Setting up GNUstep on the Hurd
+
+GNUstep is not available on the Debian distribution for GNU/Hurd, but it can be built manually. This is, how to do it.
+
+#### <a name="Prerequisites"> Prerequisites </a>
+
+This packages should already be installed (Debian package names in brackets): ffcall (libffcall1, libffcall1-dev), libffi (libffi4), libffi4-dev, openssl (openssl), libtiff (libtiff4), libpng (libpng12-0, libpng3), libjpg (libjpeg62), libxml (libxml1, libxml2, libxml2-dev &amp; dependencies), xslt (libxslt1.1, libxslt1-dev &amp; dependencies), ssl (libssl0.9.8, libssl-dev), libungif4-dev libungif4g, aspell (libaspell15, libaspell-dev, aspell &amp; apspell-[for your language, e. g. en]) windowmaker (wmaker), Objective-C-Compiler (gobjc and depending packages)
+
+#### <a name="Getting_the_sources"> Getting the sources </a>
+
+To do an up-to-date-installation, download the daily snapshot from GNUstep into one new directory and unzip/untar them:
+
+ wget ftp://ftp.gnustep.org/pub/daily-snapshots/core.current.tar.bz2
+
+#### <a name="Building_GNUstep"> </a> Building GNUstep
+
+Everything needed for the GNUstep base system is included into the expanded tarball. This is how to build it:
+
+Do the following installation as root!
+
+ cd core/make
+ ./configure
+ make && make install
+ cd ..
+ . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh (see the dot at the begin!)
+ cd ../base
+ ./configure
+ Edit the file Headers/Additions/GNUstepBase/config.h and add "#define BROKEN_SO_REUSEADDR 1" somewhere
+ make && make install
+ cd ../gui
+ ./configure
+ make && make install
+ cd ../back
+ make && make install
+
+Now, you've built the GNUstep base system. When you want to start a GNUstep application later or want to build one, open a bash shell and enter this command:
+
+ . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
+
+This sets some necessary environment variables.
+
+#### <a name="Building_GNUstep_apps"> </a> Building GNUstep apps
+
+You can find some GNUstep applications here: <http://www.gnustep.org/experience/apps.html>
+
+and here: [http://mediawiki.gnustep.org/index.php/Main\_Page](http://mediawiki.gnustep.org/index.php/Main_Page)
+
+#### <a name="Known_problems"> Known problems </a>
+
+##### <a name="GNUMail"> </a> GNUMail
+
+After starting GNUMail, you can only once get mails from a pop3-server. If you want to fetch mails again, you have to restart it.
+
+##### <a name="GWorkspace_0_8"> GWorkspace 0.8 </a>
+
+GWorkspace 0.8 expects a /etc/mtab file. If you want to use it, you must manually make this file.
+
+Example for a /etc/mtab file:
+
+ /dev/hd0s1 / ext2 rw 1 1
+
+----
+
+-- Thomas Schlesinger - 03 Mar 2006
diff --git a/Hurd/GeneralPublicLicense.mdwn b/Hurd/GeneralPublicLicense.mdwn
new file mode 100644
index 00000000..e2b0ab02
--- /dev/null
+++ b/Hurd/GeneralPublicLicense.mdwn
@@ -0,0 +1,133 @@
+Table of Contents %TOC%
+
+# <a name="GNU_GENERAL_PUBLIC_LICENSE"> </a> GNU GENERAL PUBLIC LICENSE
+
+Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+## <a name="Preamble"> Preamble </a>
+
+The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification follow.
+
+## <a name="TERMS_AND_CONDITIONS_FOR_COPYING"> </a> TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+1. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
+ Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
+2. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
+ You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
+3. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
+ These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
+
+1. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
+
+* * a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+* * b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+
+* * c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
+
+1. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+1. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
+
+1. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
+
+1. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
+
+1. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
+
+1. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
+
+1. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
+
+**NO WARRANTY**
+
+1. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+1. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+# <a name="How_to_Apply_These_Terms_to_Your"> How to Apply These Terms to Your New Programs </a>
+
+If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
+
+ one line to give the program's name and an idea of what it does.
+ Copyright (C) yyyy name of author
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 2
+ of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
+ type `show w'. This is free software, and you are welcome
+ to redistribute it under certain conditions; type `show c'
+ for details.
+
+The hypothetical commands \`show w' and \`show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than \`show w' and \`show c'; they could even be mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright
+ interest in the program `Gnomovision'
+ (which makes passes at compilers) written
+ by James Hacker.
+
+ signature of Ty Coon, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.
+
+-- [[Main/JoachimNilsson]] - 11 May 2002
diff --git a/Hurd/GetNetworkRunning.mdwn b/Hurd/GetNetworkRunning.mdwn
new file mode 100644
index 00000000..1b8fa1b3
--- /dev/null
+++ b/Hurd/GetNetworkRunning.mdwn
@@ -0,0 +1,33 @@
+## <a name="How_to_setup_networking_in_the_H"> How to setup networking in the Hurd </a>
+
+First, make sure that Mach recognizes your hardware. If it doesn't, you have to recompile it in most cases. [ADD LINK TO INFO ON THIS]
+
+### <a name="The_PFINET_translator"> </a> The PFINET translator
+
+To configure the network, the `pfinet` (Protocol Family Internet) translator must be configured. This is done using the `settrans` command to attach a translator to a given file system node. When programs access the node by, for example, sending an RPC, the Hurd will transparently start the server to handle the request.
+
+ # settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 \
+ -a 192.168.0.50 -g 192.168.0.1 -m 255.255.255.0
+
+Here, `settrans` is passed several options:
+
+* `fg`, force any existing translator to go away.
+* `ap`, make both active and passive translators.
+
+The active translator means that the operating system both starts the translator immediately and passinve means that the settings are saved in the file system node. The former also means that any error messages are sent to `stderr`.
+
+The argument `/server/socket/2` is the node that the translator is to be attached to. This is followed by the translator program to run and any arguments to give it.
+
+-a, -g and -m are, quite obviously, the IP address, the gateway and netmask.
+
+Help on settrans can be obtained by passing it the `--help` option. Help on a specific translator can be gotten by invoking it from the command line with the same argument, e.g.:
+
+ # /hurd/pfinet --help
+
+As there can be a lot of output, consider piping this through a pager.
+
+Finally copy over your `/etc/resolv.conf` from GNU/Linux to allow your DNS to resolve correctly.
+
+-- [[Main/GrantBow]] - 26 Oct 2002
+
+Text formatting. -- [[Main/OgnyanKulev]] - 19 Sep 2004
diff --git a/Hurd/GnuHurdLiveJournal.mdwn b/Hurd/GnuHurdLiveJournal.mdwn
new file mode 100644
index 00000000..9b845d9b
--- /dev/null
+++ b/Hurd/GnuHurdLiveJournal.mdwn
@@ -0,0 +1,6 @@
+Pop over to <http://www.LiveJournal.org> where I have [created a community](http://www.livejournal.com/community/gnu_hurd/). You can do the following to show your support:
+
+* list GNU/Hurd as one of your "Interests". You can even click through to make your interest visible to others, listing your name in the results of a related search with others that are interested.
+* Subscribe to the gnu\_hurd community
+
+-- [[Main/GrantBow]] - 27 Feb 2004
diff --git a/Hurd/GnuHurdOrkut.mdwn b/Hurd/GnuHurdOrkut.mdwn
new file mode 100644
index 00000000..2e7aae09
--- /dev/null
+++ b/Hurd/GnuHurdOrkut.mdwn
@@ -0,0 +1,3 @@
+As of March 6, 2004 the Gnu/Hurd community on <http://www.orkut.com/> has a membership of 89 people. An invitation from a current Orkut member is required to register with the Orkut site and join us.
+
+-- [[Main/GrantBow]] - 06 Mar 2004
diff --git a/Hurd/GnuMach.mdwn b/Hurd/GnuMach.mdwn
new file mode 100644
index 00000000..4b6412b0
--- /dev/null
+++ b/Hurd/GnuMach.mdwn
@@ -0,0 +1,3 @@
+This page has moved to a [[Mach/GNUMach]]
+
+-- [[Main/GrantBow]] - 07 Dec 2002
diff --git a/Hurd/GrantBowHurdPage.mdwn b/Hurd/GrantBowHurdPage.mdwn
new file mode 100644
index 00000000..89af3ada
--- /dev/null
+++ b/Hurd/GrantBowHurdPage.mdwn
@@ -0,0 +1,36 @@
+Here are some notes on my current Hurd activity.
+
+I am also unable to get my PCI NE-2000 clone network card working. The driver loads but no routes are possible and therefore no packets get to the network. This is actually a DE-220 NIC that I started to discuss on hurd-help. Here's the actual change I made to gnumach-20020421/linux/dev/drivers/net/Space.c
+
+ static struct device eth0_dev = {
+ "eth0", 0, 0, 0, 0, 0x240, 10, 0, 0, 0, &eth1_dev, ethif_probe };
+
+Cheers,
+
+-- [[Main/GrantBow]] - 13 May 2002
+
+Booting OSKit-Mach mysteriously works now! Yeah! I didn't even change anything!
+
+My problems now is how to get my second machine's (hd0,2) (/dev/hda3 for linux folks) partitionto bre recognized by Grub. When I try 'root (hd0,2)' grub spits back 'Filesystem type unknown, partition type 0x83'. This is a standard ext2 /boot partition from my test Progeny install. I even removed the partition, added it back, fsck.ext2 and moved the files back. It still doesn't see the -filesystem-. Very strange. This prevents me from using my second machine right now.
+
+If anyone knows more about these items, please add your comments below with your signature.
+
+-- [[Main/GrantBow]] - 16 May 2002
+
+PLEASE read these once. They are worth the effort.
+
+* [How To Ask Questions The Smart Way](http://www.tuxedo.org/~esr/faqs/smart-questions.html)
+
+* [How To Report Bugs Effectively](http://www.chiark.greenend.org.uk/~sgtatham/bugs.html) \*<http://khazad.dyndns.org/gnunet/>
+
+\*[Lincoln Portrait](http://www.people.virginia.edu/~skd9r/409/portrait.html) transcript - amazingly applicable to open source ideals.
+
+I am working on a page describing the [[Distrib/GNUDebianBuildProcess]].
+
+I also created some very very rough images for use in explaining the Hurd and it's relationship with GNU Mach and Oskit Mach.
+
+-- [[Main/GrantBow]] - 30 May 2002
+
+* [[ATTACHURLdiagramxcf]]: Diagram - Gimp file
+
+* Diagram - PNG file: <br />![diagram.png](%ATTACHURLPATH%/diagram.png)
diff --git a/Hurd/GrubNotes.mdwn b/Hurd/GrubNotes.mdwn
new file mode 100644
index 00000000..6e7f2ead
--- /dev/null
+++ b/Hurd/GrubNotes.mdwn
@@ -0,0 +1,3 @@
+Page moved to [[Distrib/GrubNotes]].
+
+-- [[Main/GrantBow]] - 22 Dec 2002
diff --git a/Hurd/HostmuxTranslator.mdwn b/Hurd/HostmuxTranslator.mdwn
new file mode 100644
index 00000000..b3d1c8cc
--- /dev/null
+++ b/Hurd/HostmuxTranslator.mdwn
@@ -0,0 +1,31 @@
+Multiplexes arbitrary host names, making access to many differnt host fast and easy.
+
+For each host accessed via a directory an new translator is started with the hostname as option. Say, /hostmuxdemo should let you access your favourite host with your translator mytranslatorfs.
+
+<code>**ls /hostmuxdemo/mybox/**</code> would give the result of mytranslatorfs applied to host mybox.
+
+## <a name="Usage"> Usage </a>
+
+Hostmux takes translator options as argument and (in the easiest case ) starts the translator with the given arguments and the hostname as the last argument.
+
+### <a name="ftpfs"> ftpfs </a>
+
+ftpfs is a good example, that is even very usefull. With hostmux and ftpfs you can access anonymous ftp via the filesystem, sparing out complicate use of a ftp client.
+
+We assume you want to access the ftp root at all servers. The example host is ftp.yourbox.com.
+
+Usermux is called via <code>**settrans -fgap /ftp /hurd/hostmux /hurd/ftpfs /**</code> .
+
+* <code>**-fg**</code> makes settrans try hard to remove an existing old translator from <code>**/ftp**</code>
+* <code>**ap**</code> sets an active translator (starts the translator) and a passive translator (stores translator information in the filesystem with which an active translator can be started on access of this node)
+* <code>**/ftp**</code> is where we want to set the translator
+* <code>**/hurd/hostmux**</code> is obviously our hostmux translator that will be started at <code>**/ftp**</code> and handle filesystem operations on <code>**/ftp**</code> and everything below (like <code>**/ftp/ftp.yourbox.com/pub/**</code>)
+* <code>**/hurd/ftpfs /**</code> is the argument to hostmux.
+
+When <code>**/ftp**</code> is accessed, the first directory is interpreted as hostname and a new translator is set up with the <code>**hostmux**</code> arguments:
+
+<code>**ls /ftp/ftp.yourhost.com/pub/**</code> lets hostmux start a new traslator <code>**/hurd/ftpfs / ftp.yourhost.com**</code> and serve it via <code>**/ftp/ftp.yourhos  t.com/**</code> as directory. Subsequent the directory <code>**pub/**</code> on <code>**/ftp.yourhost.com/**</code> can be accessed via the new created translator.
+
+You can see the new created transplator in the process list: <code>**ps ax | grep ftpsfs**</code> . You shoud see <code>**/hurd/ftpfs / ftp.yourhost.com**</code> .
+
+-- [[Main/PatrickStrasser]] - 13 Jul 2004
diff --git a/Hurd/HowMuchConfinementDoWeWant.mdwn b/Hurd/HowMuchConfinementDoWeWant.mdwn
new file mode 100644
index 00000000..663e5bbb
--- /dev/null
+++ b/Hurd/HowMuchConfinementDoWeWant.mdwn
@@ -0,0 +1,93 @@
+# <a name="How_Much_Confinement_Do_We_Want_"> How Much Confinement Do We Want? </a>
+
+**_NOTE:_** **I am absolutely sure this is incredibely incomplete and/or wrong.** **_This is not up to date!_**
+
+## <a name="Introduction"> Introduction </a>
+
+There has been a lot of traffic on the l4-hurd list lately. A good bit of this is related to the question this entry is about: How much confinement do we want? The idea not to implement the full confinement was (accidently?) raised by marcus, who planned to raise it _somewhen_, but not yet.
+
+## <a name="Terminology"> Terminology </a>
+
+In this section I try to sketch some terminology that came up _during_ the discussion.
+
+### <a name="Creator"> Creator </a>
+
+Creator we call the creator of the confined (constructor) object.[2]
+
+### <a name="Instantiator"> Instantiator </a>
+
+Instantiator we call the user of the confined (constructor) object. [2]
+
+### <a name="Encapsulation"> Encapsulation </a>
+
+Encapsulation means that information (including authority) cannot be extracted from a program without its consent. This is a restriction on "read in" behavior. [3]
+
+### <a name="Confinement"> Confinement </a>
+
+Confinement means that a program cannot communicate outward through unauthorized channels. This is a restriction on "write out" behavior. [3]
+
+### <a name="non_trivial_confinement"> non-trivial confinement </a>
+
+Marcus: \`\`[non-trivial confinement] is the confined constructor design pattern.'' [1]
+
+We speak about non-trivial confinement when creator != instantiator. [2]
+
+### <a name="trivial_confinement"> trivial confinement </a>
+
+Marcus: \`\`[trivial confinement] is what the Hurd will do'' [1]
+
+We speak about trivial confinement when creator == instantiator [2]
+
+### <a name="principle_of_user_freedom_autono"> principle of user freedom/autonomity </a>
+
+The principle of user freedom and autonomity means the right to use, inspect, alter and copy all resources attributed to/owned by the user.[4]
+
+### <a name="freedom_of_digital_information"> freedom of digital information </a>
+
+TBD
+
+## <a name="The_Positions"> The Positions </a>
+
+Here I try to sketch the different positions.
+
+### <a name="Use_and_Implement_Only_Trivial_C"> Use and Implement Only Trivial Confinement by Default </a>
+
+#### <a name="Pros"> Pros </a>
+
+* Follows the principle of user freedom
+* **add more here**
+
+#### <a name="Cons"> Cons </a>
+
+* Possibly use cases for non-trivial confinement exist we cannot yet think of.
+* **add more here**
+
+### <a name="Implement_Full_Confinement_and_U"> Implement Full Confinement and Utilize It </a>
+
+#### <a name="Pros"> Pros </a>
+
+* There are many years of experience with confinement.
+* **add more here**
+
+#### <a name="Cons"> Cons </a>
+
+* It does not follow the principle of user freedom.
+* **add more here**
+
+## <a name="Preliminary_Summary_Statements"> Preliminary Summary Statements </a>
+
+* [Jonathan](http://lists.gnu.org/archive/html/l4-hurd/2006-05/msg00018.html)
+
+## <a name="A_Try_to_Push_the_Discussion_int"> A Try to Push the Discussion into a Constructive Direction </a>
+
+Marcus started a challenge [5] to find a use case for non-trivial confinement that is interesting for the Hurd and cannot be implemented otherwise. The exact challenge definition can be found in the mail.
+
+----
+
+* [1] <http://lists.gnu.org/archive/html/l4-hurd/2006-04/msg00339.html>
+* [2] <http://lists.gnu.org/archive/html/l4-hurd/2006-04/msg00383.html>
+* [3] <http://lists.gnu.org/archive/html/l4-hurd/2006-04/msg00415.html>
+* [4] <http://lists.gnu.org/archive/html/l4-hurd/2006-05/msg00012.html>
+* [5] <http://lists.gnu.org/archive/html/l4-hurd/2006-04/msg00407.html>
+
+-- [[Main/TomBachmann]] - 01 May 2006
diff --git a/Hurd/HurdConferences.mdwn b/Hurd/HurdConferences.mdwn
new file mode 100644
index 00000000..83646f1d
--- /dev/null
+++ b/Hurd/HurdConferences.mdwn
@@ -0,0 +1,7 @@
+[[Hug/FOSDEM2005]]
+
+RMLL 2005
+
+[[Hug/FOSDEM2006]]
+
+[[Hug/FOSDEM2007]]
diff --git a/Hurd/HurdConsole.mdwn b/Hurd/HurdConsole.mdwn
new file mode 100644
index 00000000..5ce57008
--- /dev/null
+++ b/Hurd/HurdConsole.mdwn
@@ -0,0 +1,275 @@
+The below is a reworked version of Marcus Brinkmann's [letter to the debian-hurd list](http://lists.debian.org/debian-hurd/2002/debian-hurd-200209/msg00054.html). It describes how to setup the new console server for the Hurd. I am testing this right now, so this document is a work in progress.
+
+-- [[Main/JoachimNilsson]] - 21 Jan 2003
+
+Many of the shortcomings of the console are not true anymore. I've updated the page to match the state as it is in CVS.
+
+-- [[Main/MarcoGerards]] - 28 May 2004
+
+The latest Hurd package in Debian has all that is needed to run (dunno about hurd.ti though). The native-install script sets up all the necessary nodes, so all you really need is to run:
+
+ console -d vga -d pc_kbd --repeat=kbd -d pc_mouse --repeat=mouse \
+ -d generic_speaker -c /dev/vcs
+
+-- [[Main/JoachimNilsson]] - 17 Apr 2005
+
+## <a name="Table_of_Contents"> Table of Contents </a>
+
+%TOC%
+
+## <a name="What_is_the_new_console_"> What is the new console? </a>
+
+**_The new Hurd console features:_**
+
+**A console server**, which provides a number of virtual consoles to term servers, with a full set of terminal capabilities.
+
+The console server supports any encoding supported by iconv, but uses Unicode internally. The default encoding is ISO8859-1, another useful variant is UTF-8.
+
+The console server provides an arbitrary number of virtual consoles (numbered starting from 1, but the numbers don't need to be consecutive), which are created dynamically. A virtual console is not automatically displayed, for this you need a console client program which attaches to the virtual console you want to use.
+
+You can attach any number of console clients to the same virtual console, and detach them at any time.
+
+The console server provides a scrollback buffer for each virtual console. Currently, this is about one and a half screen full in addition to the screen. This should be configurable, of course, but isn't right now.
+
+**libcons**, a library that makes it easy to write console clients that attach to the console server.
+
+The client interface of the server is quite complicated, because it is based on shared memory and broadcasts the data to potentially many clients without blocking. It also includes a notification scheme so that clients remain idle when there is no console activity. This saves cpu power (compared to the alternative which would be polling).
+
+**The default console client**, which you will normally use to use a virtual console in a console server. Rather than writing many similar console client programs, I decided to write only one initially and make it extensible via dynamically loaded modules called "drivers".
+
+The console client uses libcons, of course. There are a number of drivers that exists already:
+
+* The ncursesw driver. You can use this if you log in from a remote unicode-capable console to attach to the local console server and use virtual console over the telnet/ssh session or similar. The ncursesw driver contains an output, input and bell driver components, so it is the only driver you need to get full access.
+
+* The vga driver. The VGA driver can be used locally to display a virtual console on a VGA card device. This driver provides a number of exciting features, and all of them are available in the fast text mode, and do not require a graphical framebuffer:
+
+* BDF font support. Load any BDF font with a Unicode encoding and a size from 8x13 up to 9x15 (recommended).
+
+* Dynamic glyph allocation. You can use up to 512 glyphs at any time. This means you can display cyrillic, greek, english runes, thai, etc. often at the same time, up to 512 different glyphs on the screen in parallel. The 512 is not a fixed set, they are chosen automatically out of the font you have loaded. This means that we only need one font for all users, regardless of the locale.
+
+* Dynamic color allocation. Because the above 512 glyph modus is only available with a reduced amount of colors, you can use only up to 8 different colors, but which of the 16 colors are available is chosen dynamically based on the colors actually used.
+
+_Note:_
+
+* Support for multiple fonts at the same time. The VGA driver supports italic and real bold (not bright color) mode. This will hopefully be used in emacs font lock mode and other applications.
+
+* The pc\_kbd driver. This is a hack for a PC eyboard with an american keymap. We all want configurable keyboard layouts of course, but I had to set priorities, and extracting xkb (so we can reuse the X keymaps) is on the TODO list. For now, this driver with a fixed US keymap is available for immediate use. Although it is only considered to be a temporary solution, it provides all features you need (except changing the keymap):
+ * All keys of a standard 102(?) keys keyboard, including Ctrl, LeftAlt, RightAlt, CapsLock, NumLock, Keypad, cursor block, function keys are supported and have a sensible default value.
+ * _LeftAlt_ + _Function key N_ switches the virtual console N.
+ * _LeftAlt_ + _ArrowRight_ or _ArrowLeft_ switches to previous or next virtual console.
+ * _RightShift_ + _PageUp_ or _PageDown_ scrolls back or forward in the scrollback buffer by half pages.
+ * _LeftAlt_ + _ArrowUp_ or _ArrowDown_ scroll back or forward one line.
+ * _LeftCtrl_ + _LeftAlt_ + _Backspace_ terminates the console client, and reverts the VGA card etc to its original state.
+ * _RightAlt_ + _Keypad_ enables you to directly enter unicode characters in hexadecimal numbers. 0-9 have their standard meaning, and NumLock is 0xa, Keypad `/` is 0xb, `*` is 0xc, `-` is 0xd, `+` is 0xe and the enter key at the lower right of the keypad is 0xf. Up to four digits are memorized, if you type more, the earlier ones are forgotten. This allows to cover up typing mistakes.
+
+_For example:_AltGr + (Keypad 4, Keypad 1) = 0x41 = 'A'.<br />AltGr + (Keypad 2, 6, 3, NumLock) = 0x263a = smiley.
+You can get unicode tables from <http://www.unicode.org>
+
+* The generic\_speaker driver supports the speaker commonly found in PCs and other computers. It is good enough for a simple bell tone or a small melody. I have several default bell styles implemented, but currently there is no configuration option to access them at run time, sorry! Load this module to make the console beep on ^G.
+
+## <a name="How_do_I_install_the_new_Hurd_co"> How do I install the new Hurd console? </a>
+
+### <a name="Setting_up_for_older_hurd_packag"> Setting up for older hurd packages </a>
+
+You either need the latest .deb of the Hurd, version 20020918-1 or later, or you need current CVS sources and compile them yourself.
+
+Then, the console server is in `/hurd/console`, the client in `/bin/console`. The installation is painless.
+
+First, make some device files:
+
+ # cd /dev
+ # ./MAKEDEV vcs tty1 tty2 tty3 tty4 tty5 tty6
+
+The above six ttys are only suggestions. You might want to give or take a few, depending on your needs.
+
+You need the terminal description. This is not yet in the ncurses package, because I am not finished yet. But you can download [hurd.ti from CVS](http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/hurd/hurd/console/hurd.ti). Please add it with
+
+ # tic -x hurd.ti
+
+Then you should add the terminals to ttys, so you get a login session on them at boot time. Edit the file `/etc/ttys`, and add the following lines (or similar if you made more/less ttys):
+
+ tty1 "/libexec/getty 38400" hurd on secure trusted console
+ tty2 "/libexec/getty 38400" hurd on secure trusted console
+ tty3 "/libexec/getty 38400" hurd on secure trusted console
+ tty4 "/libexec/getty 38400" hurd on secure trusted console
+ tty5 "/libexec/getty 38400" hurd on secure trusted console
+ tty6 "/libexec/getty 38400" hurd on secure trusted console
+
+This is all. If you now reboot, you will get six virtual consoles with a login prompt on each. But of course, the console client is not started automatically yet, so you don't see them.
+
+### <a name="Activating_the_console"> Activating the console </a>
+
+Login at the normal system console, and try to attach to the console server, either with the `ncursesw` driver or with the vga/pc\_kbd driver:
+
+ # console -d ncursesw /dev/vcs
+
+or
+
+ # console -d vga -d pc_kbd -d generic_speaker /dev/vcs
+
+That should work. The `ncursesw` driver supports console switching via _C-w C-1_ (or 2, 3, ...) and you can exit it with _C-w x_. However, the VGA client is more suitable on the local console.
+
+If you want repeater support (needed for X):
+
+ # console -d vga -d pc_kbd --repeat=kbd -d generic_speaker \
+ -d pc_mouse --repeat=mouse --protocol=ps/2 -c /dev/vcs
+
+Available mouse protocols are:
+
+* `mousesystem`
+* `microsoft`
+* `ps/2`
+* `nomouse`
+* `logitech`
+* `mouse7`
+
+### <a name="Setting_up_encoding"> Setting up encoding </a>
+
+The virtual consoles you are now running on are providing an ISO8859-1 environment (also known as latin1), which is good enough for the USA and some countries in Europe. If you require a different encoding for your locale (like, let's say, ISO8859-2), you can specify this as an argument to the console server. I am sorry to say that fsysopts doesn't do the trick yet, so you have to set the option with `settrans -fg`, which will _terminate all your login sessions and restart the console server_.
+
+To do this, _first_ exit the client. It will get disconnected anyway (and doesn't attempt to reconnnect yet in such a case). Then do a
+
+ # settrans -fg /dev/vcs /hurd/console --encoding=ISO8859-2
+
+or
+
+ # settrans -fg /dev/vcs /hurd/console --encoding=UTF-8
+
+or similar. A list of supported locales is not easily available, but you can poke into `/share/i18n/SUPPORTED` to get an idea what is expected for your locale, and you can also check out `/share/i18n/charmaps`. Theoretically all of these encodings are "supported". In the file SUPPORTED, you see the locale (what you should export in the LANG environment variable, and enable in `/etc/locale.gen`) and the corresponding encoding.
+
+If you actually try this, you will notice two problems:
+
+1. You can not enter the letters in your locale, because the keyboard doesn't have the right layout. See above. Keyboard maps come later. For now, you have to help yourself with the direct input with RightAlt. Maybe I will put a simple compose key feature in the pc\_kbd driver, so that some western locales can be used more easily.
+2. If you bother to look up the unicode hex code and enter it with AltGr, the font can not display it! If you are using the ncursesw driver, do you use it while you are logged in from a working UTF-8 terminal? If not, then this is your problem. An ncurses driver for non-UTF-8 terminals is on the TODO list. But if you use the VGA driver, you need to load a different font.
+
+This is because by default, the vga driver just reads the VGA card memory and takes the font that is stored there. This font has a limited characterset (256 characters, many graphical symbols among that), so you won't get more than a few western characters with that.
+
+## <a name="Unicode_support"> Unicode support </a>
+
+But you want it all. You want to read Middle Old English. You want to read Thai. Your Korean spam. Georgian script. Hebrew. And you can have it.
+
+First you have to set the encoding to UTF-8:
+
+ # settrans -fg /dev/vcs /hurd/console --encoding=UTF-8
+
+Then you need a Unicode font. There are good ones provided by Markus Kuhn, [the UCS fonts](http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz). See also [the web page](http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html).
+
+Now, load the font by providing it with the `--font` option to the vga driver. I suggest only the 8x13 and the 9x15 fonts, but feel free to try others, too. Note that the VGA text mode can not really display 9 pixel wide characters. But as most characters have the ninth column empty, and the VGA text mode can display an empty column between two adjacent character cells, this trick allows us to display most of the 9x15 font correctly. So you won't notice a difference until you come to very broad characters or special symbols, where you will see that the last column is cut off. (BTW, I wrote the dynafont code carefully to still support horizontal line graphic characters properly in 9 pixel wide fonts. This is done by exploiting some special modes in the VGA hardware. This is why in 512 (256) glyph mode and 9 pixel wide fonts, you are limited to 448 (224) normal characters: 64 (32) slots are reserved for the horizontal line graphic characters so they are drawn continuously.)
+
+So, try the following:
+
+ # console -d vga --font 8x13.bdf -d pc_kbd -d generic_speaker /dev/vcs
+
+or
+
+ # console -d vga --font 9x15.bdf -d pc_kbd -d generic_speaker /dev/vcs
+
+If you are satisfied, copy your default font to `/lib/hurd/fonts/vga-system.bdf`, where it will be picked up automatically in favor to the graphic card's font.
+
+### <a name="More_about_fonts"> More about fonts </a>
+
+While we are talking about fonts, try also the 8x13O font with `--font-italic` and 8x13B or 9x15B font with `--font-bold`. You can save them in `/lib/hurd/fonts/vga-system-bold.bdf` and `/lib/hurd/fonts/vga-system-italic.bdf`, too.
+
+To activate those fonts on your virtual console, try the following:
+
+ # echo `tput sitm` Hello slanted world. `tput ritm`
+
+and
+
+ # echo `tput gsbom` Hello bold world. `tput grbom`
+
+I hope you like what you see. Imagine this in emacs font-lock mode.
+
+### <a name="Unicode_finally"> Unicode, finally </a>
+
+There are a few more steps necessary to make your Unicode environment ready:
+
+Install the locales package. The current version does want a newer glibc than we have in the archive, but this can be overridden with the `--force-depends` option to dpkg. The old glibc is good enough.
+
+Add a Unicode locale to `/etc/locale.gen`, and generate the locale information for that! For example, I am living in Germany, and normally use `de_DE` with the encoding ISO8859-1. My Unicode locale is `de_DE.UTF-8`, so I am adding that to `/etc/locale.gen`:
+
+ de_DE.UTF-8 UTF-8
+
+and rerun locale-gen:
+
+ # locale-gen
+
+See also `/share/i18n/SUPPORTED`. You can also do this more conveniently with
+
+ # dpkg-reconfigure locales
+
+Once you generated this, make it your default locale:
+
+ # export LANG=de_DE.UTF-8
+
+If you have also loaded the unicode font above, you are set up. Try for example to view the `examples/` files in the `ucs-fonts` package with less.
+
+ # less fonts/examples/UTF_8-demo.txt
+
+You should see most of that file with the 9x15 font (a bit less with the 8x13 font).
+
+You should be able to do the above process with other encodings than UTF-8. But you should _always_ use a Unicode font, because the console client uses Unicode internally fo everything.
+
+## <a name="Application_specific_notes"> Application specific notes </a>
+
+If you enter unicode characters at the shell, libreadline loses track of the number of characters displayed (it is not aware of multi-byte encodings like UTF-8). This is fixed in readline 4.3 (which is not yet in Debian).
+
+If you use mutt, install `mutt-utf8` package. For lynx, edit `/etc/lynx.cfg`, making sure that `CHARACTER_SET` is set to `utf-8`.
+
+If you use other applications, try to search with google for "application-name utf8" or "application-name unicode". Often you find what you need. The issues are the same for the GNU/Hurd and GNU/Linux systems, so most of the information can be shared, except how to setup the system console to support Unicode, of course.
+
+The `console-server` watches for new hurdio terms (devices translated with `/hurd/term`) and adds them to `/dev/vcs` automatically. What this means is, if you create a new tty with `MAKEDEV`, and then attach something to it, it will now appear in `/dev/vcs`. When a term is disconnected from, it disappears from `/dev/vcs`. `/libexec/getty` is what is usually attached to a term. You can see this automatic adding and removing of terms from the `console-server` by typing the following:
+
+ # cd /dev
+ # ls vcs/
+ 1 2 3 4 5 6
+ # MAKEDEV tty7
+ # cat > tty7 &
+ [1]+ Stopped cat > tty7
+ # ls vcs/
+ 1 2 3 4 5 6 7
+ # kill %1
+ # ls vcs/
+ 1 2 3 4 5 6
+
+## <a name="Known_problems_and_important_mis"> Known problems and important missing features </a>
+
+Squeezed at the end so nobody sees it ;)
+
+**console server:** Is probably too lax in permission checking. Does not implement settable tab stops. Does not allow to change encoding at run time. Does not allow any other screen size but 80x25.
+
+Combining characters is not supported.
+
+**libcons/console-client:** If you have one virtual console active, and another one receives a bell character, you don't hear the bell. This is because only the active virtual console is watched for anything interesting to happen. I think that is ok, but you might be surprised if you are used to how it works on GNU/Linux.
+
+Copy &amp; Paste not supported.
+
+**vga driver:** Does not recalculate the mode lines if the font height is changed. This makes font heights below 13 or over 16 infeasible.
+
+Should support other text modes (integrate svgatextmode?)
+
+**pc\_kbd driver:** No keyboard layout but US supported! Maybe in some cases left/right shift/ctrl/alt is allowed where both left and right should be allowed. Keyboard LEDs are only supported when using OSKIT-Mach or the CVS branch gnumach-1-branch of GNU Mach.
+
+**ncursesw driver:** Doesn't work properly on other terminals but UTF-8. Should not use C-w, this should be configurable. Does not support use of scroll back buffer.
+
+**Other programs:** Readline doesn't support multibyte encodings (4.2 and earlier). term doesn't either (all versions).
+
+----
+
+----
+
+Here's a June 2002 [status report](http://mail.gnu.org/archive/html/bug-hurd/2002-06/msg00549.html)
+
+In September 2002 there was a [request for testers](http://mail.gnu.org/archive/html/bug-hurd/2002-09/msg00121.html). There's been quite a bit of discussion on <bug-hurd@gnuNOSPAM.org> about updates, test results and changes.
+
+-- [[Main/GrantBow]] - 22 Oct 2002
+
+There are several patches for the console on savannah to deal with the shortcommings described in Marcus' email. [Patches ](http://savannah.gnu.org/patch/index.php?group_id=30&set=custom&msort=0&report_id=100&advsrch=0&go_report=Apply&category_id=162&assigned_to=0&status_id=1&chunksz=50) for broadcasting the bell event, for setting other text modes and a patch to make it possible to start XFree from the console can be found on savannah.
+
+An [experimental plugin to load XKB keymaps](http://kilobug.free.fr/hurd/xkb-0.3.tar.gz) exists, although it is alpha quality.
+
+-- [[Main/MarcoGerards]] - 28 May 2004
+
+Added examples that use repeaters needed by X.
+
+-- [[Main/OgnyanKulev]] - 18 Sep 2004
diff --git a/Hurd/HurdDevelopers.mdwn b/Hurd/HurdDevelopers.mdwn
new file mode 100644
index 00000000..201fbc6b
--- /dev/null
+++ b/Hurd/HurdDevelopers.mdwn
@@ -0,0 +1,30 @@
+Here's an unofficial list of Hurd developers and what they are working on. This is very unofficial.
+
+* [Marcus Brinkmann](http://www.marcus-brinkmann.de) - GNU Hurd Project maintainer, Debian GNU/Hurd Port Manager, fakeroot, oskit console
+* [Thomas Bushnell, BSG](http://www.mit.edu/~tb/) - Primary architect, design issues and debugging help
+* [Roland McGrath](http://www.frob.com), [resum�](http://www.apocalypse.org/pub/u/roland/resume.html) - GLibC, GCC-3.1, fakeroot (with fakeauth and settrans --chroot)
+* Jeff Bailey - turtle autobuilder, gcc-3.1
+* [Igor Khavkine](http://alcor.concordia.ca/~i_khavki/)
+* [Gordon Matzigkeit](http://www.fig.org/gord/)
+
+* Alexandra "[Bunny](http://www.hurd-bunny.tk)" - graphic designer, Hurd promotion
+* Alfred M. Szmidt (ams) -
+* Daniel (Chillywilly) Baumann - GNU Enterprise Application Server, GNU Common C++
+* [[Main/GrantBow]] - TWiki, promotion
+* Jae - fatfs, possibly smbfs
+* [[Main/JoachimNilsson]], [[Hurd/JoachimNilssonHurdPage]] - TWiki, OSKit upgrades (currently ATA-100 patches).
+* [[Main/JamesAMorrison]] - porting, kernel interface cleanups, [hurd-extras](http://savannah.gnu.org/projects/hurdextras/)
+* Neal Walfield - pthreads, documentation, debugging, #hurd admin, log &amp; bot maintainer
+* [[Main/NickRusnov]] - mtab &amp; [[Distrib/PortingIssues]]
+* Niels M�ller - kernel debugging
+* [[Main/OgnyanKulev]] - [[ExtTwoSize]] patch
+* Paul Emsley - [Kernel Cousin Debian Hurd](http://kt.zork.net/debian-hurd/latest.html)
+* Philip Charles - [ISO CD-images](http://www.copyleft.co.nz/hurd.html)
+* Ryan Golbeck - porting.
+* [[Main/SamLauzon]] (Indes) - Installer, Sound(!), Bunny mocking
+* [[Main/SimonLaw]] - [Kernel Cousin Debian Hurd](http://kt.zork.net/debian-hurd/latest.html) and [[Hurd/KernelCousinDebianHurd]]
+* [[Main/WolfgangJ]] - documentation, promotion
+* [[Main/DerekDavies]] - OSKit work
+* [Daniel Wagner](http://www.vis.ethz.ch/~wagi/) (wagi) - [pcmcia support for OSKit](http://savannah.nongnu.org/projects/oskit/)
+
+If we got any names wrong, please accept our apologies.
diff --git a/Hurd/HurdDiscuss.mdwn b/Hurd/HurdDiscuss.mdwn
new file mode 100644
index 00000000..2c6f40ce
--- /dev/null
+++ b/Hurd/HurdDiscuss.mdwn
@@ -0,0 +1,5 @@
+Brace for impact...
+
+-- [[Main/GrantBow]] - 25 Feb 2004
+
+Oops, my mistake, I was looking for [[Hurd/WebDiscuss]]
diff --git a/Hurd/HurdDonations.mdwn b/Hurd/HurdDonations.mdwn
new file mode 100644
index 00000000..3d94519e
--- /dev/null
+++ b/Hurd/HurdDonations.mdwn
@@ -0,0 +1,13 @@
+If you've got more money on hand than hacking time, you might consider buying some [maintenance points](http://www.g10code.com/products.html) ($10 a point) to help the Hurd along. From the [g10 Code](http://www.g10code.com/main.html) site...
+
+> Hurd Maintenance Points are special: Some of our employees are well known Hurd hackers in their spare time; collected points for this program will be given to them in form of paid time.
+
+And for further motivation, some words of wisdom from Marcus Brinkmann...
+
+> By the way, if you are more on the speculating side, then it can't harm to just buy one or two maintenance points. That means that at some time I get an incentive to start the hacking, and there is a chance that when I start I don't stop for a while, and just continue on my private time (as I did for the last five years, if I might add that ;).
+
+See also this related [mailing-list](http://mail.gnu.org/archive/html/help-hurd/2003-04/msg00044.html) thread.
+
+And of course you can also donate to the [Free Software Foundation](https://agia.fsf.org/mp/order.py?make-donation=1) (just specify you want to contribute to the Hurd project).
+
+-- [[Main/GregBuchholz]] - 20 Oct 2003
diff --git a/Hurd/HurdEs.mdwn b/Hurd/HurdEs.mdwn
new file mode 100644
index 00000000..fbe0fb6c
--- /dev/null
+++ b/Hurd/HurdEs.mdwn
@@ -0,0 +1,45 @@
+<http://hurd.gnufans.org/bin/view/Main/WebHome>
+
+----
+
+<code>**P�gina en espa�ol sobre GNU/Hurd**</code>
+
+El Hurd de GNU es el proyecto de reemplazo de GNU para el n�cleo (\`kernel') de Unix. El Hurd es una colecci�n de servidores que se ejecutan en el micron�cleo Mach para implementar archivos de sistema, protocolos de red, control de acceso a archivos y otras caracter�sticas implementadas en el n�cleo de Unix o n�cleos similares (como Linux).
+
+Actualmente, el Hurd funciona en m�quinas IA32. El Hurd debe migrarse, y probablemente as� se har�, a otras arquitecturas de hardware y otros micron�cleos en el futuro. Ventajas del Hurd
+
+El Hurd no es el n�cleo m�s avanzado del planeta (a�n), pero tiene algunas caracter�sticas tentativas:
+
+\* es software libre : cualquiera puede usarlo, modificarlo, y redistribuirlo bajo los t�rminos de la �GNU General Public License (GPL)�.
+
+\* es compatible : el Hurd provee un entorno de usuario y una programaci�n amigable. Para todas las intenciones y los prop�sitos, el Hurd es un n�cleo moderno del tipo Unix. El Hurd usa la �GNU C Library�, cuyo desarrollo est� cercano a est�ndares como ANSI/ISO, BSD, POSIX, Single Unix, SVID, y X/Open.
+
+\* est� creado para sobrevivir : a diferencia de otro popular n�cleo, el Hurd tiene una estructura orientada a objetos que le permite evolucionar sin comprometer su dise�o. Esta estructura ayuda al Hurd para que sobrepase un redise�o total y modificaciones sin tener que ser completamente reescrito.
+
+\* es escalable : la implemetanci�n es agresivamente multitarea para que as� se ejecute eficientemente en procesadores simples y multiprocesadores sim�tricos. Las interfaces del Hurd est�n dise�adas para permitir cl�steres de red transparentes (colectivos), aunque esta caracter�stica no ha sido implementada todav�a.
+
+\* es extensible : el Hurd es una plataforma atractiva para aprender a convertirse en hacker del n�cleo o para implementar nuevas ideas en la tecnolog�a del n�cleo. Cada parte del sistema est� dise�ada para ser modificada y extendida.
+
+\* es estable : es posible desarrollar y probar nuevos componentes del n�cleo Hurd sin reiniciar la m�quina (ni siquiera accidentalmente). La ejecuci�n de tus propios componentes del n�cleo no interfiere con otros usuarios, y no se requiere de ning�n privilegio especial del sistema. El mecanismo para las extensiones del n�cleo es seguro por el dise�o: es imposible imponer tus cambios para los otros usuarios a menos que tengas su autorizaci�n o que t� seas el administrador del sistema.
+
+\* existe : el Hurd es software real que funciona. No es un proyecto de investigaci�n o un prop�sito. No tienes que esperar para empezar a usarlo y a desarrollarlo.
+
+<code>**El significado de Hurd**</code>
+
+De acuerdo con Thomas Bushnell, BSG, el principal arquitecto del Hurd:
+
+Hurd� viene de �Hird of Unix-Replacing Daemons�. Y, entonces, �Hird� viene de �Hurd of Interfaces Representing Depth� Tenemos, hasta donde yo s�, el primer software nombrado por dos acr�nimos recursivos.
+
+<code>**Estado del proyecto**</code>
+
+El Hurd, junto al micron�cleo GNU Mach, la GNU C Library y otros programas GNU y non-GNU en el sistema GNU, provee un sistema operativo b�sicamente completo y usable. No est� listo para su uso en producci�n, ya que todav�a tiene muchos bugs y le faltan caracter�sticas. Sin embargo, deber�a ser una buena base para desarrollo en el futuro y uso de aplicaciones no cr�ticas.
+
+El sistema GNU (tambi�n llamado GNU/Hurd) es completamente autocontenido (puedes compilar todas las partes usando GNU). Puedes ejecutar varias instancias del Hurd en paralelo, e incluso corregir servidores cr�ticos en una instancia de Hurd con gdb ejecut�ndose en otra instancia de Hurd. Puedes ejecutar el X window system, aplicaciones que lo usen, y aplicaciones de servidor avanzadas como el servidor web Apache.
+
+En el lado negativo, el soporte para dispositivos (como tarjetas de sonido) es bastante pobre. Aunque la interfaz POSIX est� implementada, algunas interfaces adicionales como la memoria compartida POSIX o sem�foros est�n todav�a en desarrollo.
+
+Todo esto se aplica a la versi�n en desarrollo actual, y no a la �ltima versi�n (0.2). Animamos a todo el mundo que est� interesado a probar nuestra �ltima versi�n de desarrollo, y a que env�en opiniones a los desarrolladores del Hurd. `= Equipo de traducci�n al espa�ol =` Puede verse en <http://www.gnu.org/spanish/> `= Enlaces externos =` \* [Bee](http://bee.es.gnu.org/blog/).
+
+----
+
+Originalmente de : <http://www.gnu.org/software/hurd/hurd.es.html>
diff --git a/Hurd/HurdIRC.mdwn b/Hurd/HurdIRC.mdwn
new file mode 100644
index 00000000..de7a38ec
--- /dev/null
+++ b/Hurd/HurdIRC.mdwn
@@ -0,0 +1,23 @@
+# <a name="Internet_Relay_Chat"> Internet Relay Chat </a>
+
+The Hurd has its own #hurd channel hosted on [Freenode.net](http://freenode.net/). Connect to <irc://irc.freenode.net> and `/join #hurd` to begin.
+
+**_Note:_** "Stupid" questions do not exist! We do sometimes forget that we have all learned how to use IRC. Please don't mind the louder voices on the channel if they seem a bit caustic.
+
+## <a name="Channels"> Channels </a>
+
+### <a name="hurd_main_channel"> #hurd - main channel </a>
+
+### <a name="hurd_it_Italian_discussion"> #hurd-it - Italian discussion </a>
+
+### <a name="hurd_es_Spanish_discussion"> #hurd-es - Spanish discussion </a>
+
+### <a name="hurdfr_French_discussion"> #hurdfr - French discussion </a>
+
+### <a name="_TODO_and_others_"> [TODO: and others] </a>
+
+## <a name="Logs"> Logs </a>
+
+The logs for a number of channels have been recorded by [hird](http://web.walfield.org/~deride/), but this service is out of order at the moment.
+
+Logs for #hurd are available [here](http://richtlijn.be/~larstiq/hurd/).
diff --git a/Hurd/HurdNames.mdwn b/Hurd/HurdNames.mdwn
new file mode 100644
index 00000000..d0fb396e
--- /dev/null
+++ b/Hurd/HurdNames.mdwn
@@ -0,0 +1,27 @@
+## <a name="HURD_Hird_of_Unix_Replacing_Daem"> </a> HURD - Hird of Unix Replacing Daemons
+
+From [gnu.org](http://www.gnu.org/software/hurd/hurd.html#TOCintroduction): the GNU project's replacement for the Unix kernel. The Hurd is a collection of servers that run on the Mach microkernel to implement file systems, network protocols, file access control, and other features that are implemented by the Unix kernel or similar kernels (such as Linux).
+
+The Hurd development effort is a somewhat separate project from the Debian GNU/Hurd port of a full GNU operating system. The Hurd is the last piece of the full GNU operating system goal.
+
+## <a name="HIRD_Hurd_of_Interfaces_Represen"> </a> HIRD - Hurd of Interfaces Representing Depth
+
+One contributor from Norway also described two other uses of Hird.
+
+* "the kings men",a name given to
+
+the men accompanying the norwegian kings at about year 1000 and on. This was later coined by V.Quisling when he formed a party with nationalistic traits to denote a set of helpers promoting his agenda of national &amp; nordic ideas.
+
+* A symbol of collaboration with the (German) enemy used in World War II.
+
+## <a name="Why_the_word_HURD_"> </a> Why the word HURD?
+
+[Quoting ](http://mail.gnu.org/archive/html/help-hurd/2002-10/msg00099.html) Thomas Bushnell, BSG:
+
+The name "Hurd" was invented by me, as an alternate spelling for the English word "herd". "Hird" is just another alternate spelling for the same word. By the normal rules of English orthography, they all have the same pronounciations.
+
+Other pages that describe the names are on [gnu.org](http://www.gnu.org/software/hurd/hurd.html#TOCname).
+
+Perhaps unrelated: the "herd menatality" of folks is what the Hurd project and the the GNU project in general is fighting against...
+
+See also the FAQ, [Relation between GNU and the Hurd](http://www.gnu.org/software/hurd/faq.en.html#q1-2).
diff --git a/Hurd/HurdOnL4.mdwn b/Hurd/HurdOnL4.mdwn
new file mode 100644
index 00000000..3cc378b1
--- /dev/null
+++ b/Hurd/HurdOnL4.mdwn
@@ -0,0 +1,177 @@
+# <a name="GNU_Hurd_on_L4_wiki"> GNU/Hurd on L4 wiki </a>
+
+#### <a name="Table_Of_Content"> Table Of Content </a>
+
+%TOC%
+
+## <a name="Introduction"> Introduction </a>
+
+This page is a place for information pertaining to the efforts towards realizing the migration and porting of the [[Hurd/WebHome]] such that it uses the [L4 Microkernel](http://l4ka.org/). The GNU/Hurd Operating System, sometimes just referred to as the _GNU Operating System_ is a rich and robust collection of programs and utilities which enable you to use your computer to do usefull and or entertaining things. The intent is that most any applicable software package available on the [GNU Website](http://www.gnu.org) (and many others also) will be able to be compiled and run under the resultant operating system.
+
+At this point (06/20/2004) this is not yet possible. Indeed, the preliminary foundations are still being developed. Nevertheless, this is a volunteer created operating system so those with the knowledge, interest, and spare time are encouraged to study and if possible contribute to the project.
+
+In [CVS module <samp>hurd-l4</samp>](http://savannah.gnu.org/cgi-bin/viewcvs/hurd/hurd-l4/), there is a [comprehensive list of items that need to be done](http://savannah.gnu.org/cgi-bin/viewcvs/hurd/hurd-l4/TODO).
+
+## <a name="Components_of_the_System"> Components of the System </a>
+
+### <a name="The_L4_Microkernel"> The L4 Microkernel </a>
+
+The kernel of an operating system is a fundamental program which provides essential resources from the hardware of the computer to other programs. A kernel typically runs all the time and remains resident in main memory. The amount of functionality and resources which it provides vary tremendously. The [L4 Microkernel](http://l4ka.org/) is an attempt to create a very small high performace core which provides basic memory management, task and context switching, and little else.
+
+### <a name="The_Hurd"> The Hurd </a>
+
+The [Hurd](http://www.gnu.org/software/hurd/hurd.html) is a conglomeration of servers and programs which add additional functionality to a microkernel such that it is capable of utilizing additional hardware resources of the computer. It also provides a compatibility layer such that compiling higher level programs is essentially transparent; i.e. when you write a C program and compile it, you need only include standard headers and libraries and for all intents and purposes your generic program will build and run and you need never resort to unportable coding or access to hardware specific methods.
+
+For a typical user, The Hurd is intended to silently work in the background providing the services and infrastructure which are lacking in the microkernel but are required for higher level programs and libraries to operate.
+
+### <a name="GNU_Programs"> GNU Programs </a>
+
+For the user, this is what is desired: to run [GNU Software](http://www.gnu.org/). These programs provide a full featured, robust, and extremely effective operating system. A L4/Hurd system should be capable of compiling and executing most any software package available from GNU with little or no modification.
+
+Some readers may be familiar with GNU/Linux systems. When GNU/L4 is complete it should highly resemble the functionality of such systems as L4 and Hurd effectively replace the Linux kernel. The bulk of the software should be expected to run much as it does presently under the Linux kernel (or gnumach based GNU/Hurd systems).
+
+## <a name="Preparations"> Preparations </a>
+
+### <a name="Build_System"> Build System </a>
+
+There are no precompiled binaries for Hurd on L4 that I am aware of, so you will need to be able to compile the source code packages in order to experiment with it. While L4Ka will likely build on a variety of compilers and systems, the Hurd may prove troublesome unless it is built using recent GNU compilers and tools.
+
+I recently used [Debian Unstable](http://www.debian.org) (Sarge) with GNU gcc version 3.3, autoconf version 2.50, and automake version 1.8 to build the system with good results, although other similarly equipped systems with a good development environment, such as [Gentoo](http://www.gentoo.org) or [Slackware](http://www.slackware.com) are reported to work fine also.
+
+Generally, I would recommend building the packages using any very up-to-date GNU development system. I'm not going to say that you can't compile them using more exotic platforms, but I wouldn't be overly hopefull about it. I have no idea if Pistachio can be compiled under current gnuMach/Hurd systems it might be interesting to try it.
+
+### <a name="Making_a_Home_for_L4_Hurd"> Making a Home for L4/Hurd </a>
+
+Obviously you want to have a home for this little embryonic operating system. Currently, mine is using about 5M for the binaries and headers. If you want the source to reside with the binaries, then allow perhaps another 50M or so, but this is purely optional.
+
+At the moment, Hurd on L4 can't even see your hard drive, so all you need is a directory on some partition which is visible to the GRUB bootloader. A `/l4hurd` directory on your existing GNU/Linux system is probably fine for now.
+
+Howevever, if you have some spare disk space or an unused partition, you could optionally create a small partition for the system. This is totally unnecessary at the moment because L4/Hurd lacks hard disk drivers right now, but it is an option. Assuming that you have made some partition **X** with linux _fdisk_, set it to type 83 - Linux and use the following command to initialize it with the classic Hurd extensions:
+
+
+
+As noted, this is purely optional, in fact right now you can use any filesystem that GRUB can understand. You can even use TFTP to netboot the system. My current setup takes about 5M for the full install so obviously you don't need much space for this.
+
+### <a name="Boot_Loader"> Boot Loader </a>
+
+Just like regular GNU/Hurd, you need to use [GNU GRUB](http://www.gnu.org/software/grub/), the _GRand Unified Bootloader_ in order to boot the system. Hopefully you already have it installed, in which case adding the commands for L4/Hurd to your `menu.lst` is quite trivial.
+
+If you don't have GRUB installed, then you should probably take some time to get it set up. A good place to look for help is on the regular [Debian GNU/Hurd Installation Page](http://www.debian.org/ports/hurd/hurd-install) at the **3\. The Boot Loader** section.
+
+This is probably a bit superfluous, but you can even display a snazzy little graphic of some type on your GRUB boot menu. Here's a snip from the header of my `menu.lst` which demonstrates how to do this.
+
+ # menu for grub
+ splashimage (hd0,0)/boot/grub/debian.xpm
+ foreground bfbfe7
+ background 3f3f7f
+
+In the above example, my `debian.xpm` is just a 640x480 graphic in xpm format (which you can easily create with GIMP). It does add a bit of pizazz to your boot screen :-)
+
+In fact, I will attach a sample copy of my `menu.lst` here. It has lots of examples for booting a variety of operating systems in it. Remember that my hard drive partitions are unique to my system.
+
+* [[ATTACHURLmenulst]]: Sample GRUB boot menu
+
+## <a name="Building_Hurd_on_L4"> Building Hurd on L4 </a>
+
+### <a name="L4Ka_Pistachio"> L4Ka Pistachio </a>
+
+#### <a name="Getting_the_Sources"> Getting the Sources </a>
+
+I used the latest version of L4Ka, Pistachio version 0.4. It can be obtained from the following website:
+
+[L4Ka Pistachio Home](http://l4ka.org/projects/pistachio/)
+
+#### <a name="Compiling"> Compiling </a>
+
+Pistachio is designed to be compiled in a build directory which is independant from the source directory, so you need to create your build directory after unpacking the tarball. Furthermore, you need to pass a couple of special parameters to the configure program to set it up for use with Hurd. Here is what I did on my ia32 system:
+
+Note: I have my installation set up in `/l4hurd` and I am starting from within the Pistachio source top-level directory.
+
+ $ mkdir build
+ $ cd build
+ Building and installing user-level libraries and servers/applications
+ $ ../user/configure --with-s0-linkbase=0x40000 --prefix=/l4hurd
+ $ make
+ $ make install
+ Building and installing the kernel
+ $ make -C ../kernel BUILDDIR=`pwd`/kernel
+ $ cd kernel
+ $ make menuconfig
+ $ make
+ $ mkdir /l4hurd/boot
+ $ cp ia32-kernel /l4hurd/boot
+
+Hopefully everything worked and there were no problems. As usual, if the build fails then scrutinize the output from `configure` and install any missing libraries or development packages.
+
+### <a name="CVS_l4hurd"> CVS l4hurd </a>
+
+#### <a name="Getting_the_sources"> Getting the sources </a>
+
+ You need to pull the L4 Hurd sources from the CVS tree on Savannah. The CVS access page is [The GNU/Hurd - CVS (module hurd-l4)](http://savannah.gnu.org/cvs/?group=hurd). In a nutshell, the following commands should retrieve the sources for you:
+
+ $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co hurd-l4
+
+#### <a name="Compiling"> Compiling </a>
+
+Take a look at the README, compiling should be quite simple on any state of the art GNU development system. As per the README, and for my example, you would:
+
+ $ autoreconf -f -i -s
+ $ ./configure --enable-maintainer-mode --prefix=/l4hurd
+ $ make
+ $ make install
+ $ strip physmem/physmem
+
+ $ mkdir /l4hurd/boot
+ $ cp laden/laden /l4hurd/boot
+ $ cp wortel/wortel /l4hurd/boot
+ $ cp physmem/physmem /l4hurd/boot
+
+Currently (2004/08/09), physmem needs to be stripped to to avoid a memory conflict with wortel; this requirement may be fixed in the future.
+
+In my case it was slightly more complicated as Debian uses a wrapper system to enable the use of multiple versions of the GNU Autotools. In this case, the trick is to utilize some environment variables on the command line as follows:
+
+ $ ACLOCAL=aclocal-1.8 AUTOMAKE=automake-1.8 autoreconf -f -i -s
+
+As above, hopefully this will compile cleanly; otherwise, scroll up, read any error messages, and correct them by installing required packages of the proper version. Any bad compilation problems are most likely due to you either missing or using a wrong version of something.
+
+## <a name="Installing"> Installing </a>
+
+The binaries are now installed into `/l4hurd`. All that remains is to add an entry into GRUB's `menu.lst` in order to test it out. Here's an example from my system where I have `/l4hurd` on `/dev/hda9` in my Linux system:
+
+ title GNU Hurd on L4Ka Pistachio 0.4
+ root (hd0,8)
+ kernel /boot/laden -D
+ module /boot/ia32-kernel
+ module /libexec/l4/sigma0
+ module /boot/wortel -D
+ module /boot/physmem -D
+ module /boot/physmem
+ module /boot/physmem
+ module /boot/physmem
+ module /boot/physmem
+
+It might strike you a little odd that there are five physmem modules. This is done because wortel currently (2004/08/09) expects exactly five modules and the other modules (like the task server, auth server, etc.) have not been implemented yet. Therefore the physmem module is used as a dummy module.
+
+## <a name="Booting"> Booting </a>
+
+For me at least, I got some nifty messages and then it dropped into a simple debugging mode. As far as I know, thats all there is right now.
+
+Read, build, learn, code...
+
+--todo: add more here.
+
+## <a name="Experimenting"> Experimenting </a>
+
+Well, thats why you did all of this, certainly not to do anything else. Use that debugger and get experimenting.
+
+--todo: things to do wth the debugger
+
+## <a name="Conclusion"> Conclusion </a>
+
+If you followed these steps, you most likely have built and booted the latest version of Hurd on L4. I would encourage you to subscribe to the mailing list at the following URL and help in the efforts to get this nifty system up to speed:
+
+[l4-hurd mailing list](http://lists.gnu.org/mailman/listinfo/l4-hurd)
+
+And finally, this is a wiki, meaning that **you** have the ability to edit and modify this page. If you want to fix something, add more information, new sub-pages, whatever, feel free to do so. This is a great way to get a doc base up fast and keep it current, so use it like its supposed to be and have fun with Hurd on L4!
+
+-- [[Main/BDouglasHilton]] - 20 Jun 2004
diff --git a/Hurd/HurdReleaseForm.mdwn b/Hurd/HurdReleaseForm.mdwn
new file mode 100644
index 00000000..f36cc29d
--- /dev/null
+++ b/Hurd/HurdReleaseForm.mdwn
@@ -0,0 +1,32 @@
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <th bgcolor="#99CCCC"><strong>Name</strong></th>
+ <th bgcolor="#99CCCC"><strong>Type</strong></th>
+ <th bgcolor="#99CCCC"><strong>Size</strong></th>
+ <th bgcolor="#99CCCC"><strong>Values</strong></th>
+ <th bgcolor="#99CCCC"><strong>Tooltip message</strong></th>
+ </tr>
+ <tr>
+ <td> Mediatype </td>
+ <td> Radio </td>
+ <td> 3 </td>
+ <td> Tarball, CD, [[Distrib/BochsEmulator]]</td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td>[[Hurd/ReleaseDate]]</td>
+ <td> Text </td>
+ <td> 8 </td>
+ <td> yyyymmdd </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td>[[Hurd/ReleaseNotes]]</td>
+ <td> Text </td>
+ <td> 25 </td>
+ <td>   </td>
+ <td>   </td>
+ </tr>
+</table>
+
+-- [[Main/GrantBow]] - 15 Oct 2002
diff --git a/Hurd/HurdSpecificGlibcApi.mdwn b/Hurd/HurdSpecificGlibcApi.mdwn
new file mode 100644
index 00000000..75a6cab7
--- /dev/null
+++ b/Hurd/HurdSpecificGlibcApi.mdwn
@@ -0,0 +1,165 @@
+## <a name="Hurd_specific_glibc_API"> </a> Hurd-specific glibc API
+
+These functions have meaning only under Hurd. They are needed to get port names that are used in native Hurd API (the RPC calls to servers). The `.defs` and `.h` files can be found in
+
+`/include/hurd` when all development files are installed (Debian package `hurd-dev`.) Note that `.defs` are not included in C programs - they are used to produce `.h` files.
+
+<dl>
+ <p>
+ </p>
+ <dt><tt>file_t</tt></dt>
+ <dt><tt><b>getcwdir</b> (void);</tt></dt>
+ <p>
+ </p>
+ <dd>Get <tt>file_t</tt> port name of current working directory. See <tt>&amp;lt;hurd/fs.defs&amp;gt;</tt> and <tt>&amp;lt;hurd/fs.h&amp;gt;</tt>.</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>setcwdir</b> (file_t);</tt></dt>
+ <dd>Set current working directory.</dd>
+ <p>
+ </p>
+ <dt><tt>file_t</tt></dt>
+ <dt><tt><b>getcrdir</b> (void);</tt></dt>
+ <dd>Get <tt>file_t</tt> port name of current root directory.</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>setcrdir</b> (file_t);</tt></dt>
+ <p>
+ </p>
+ <dd>Set current root directory.</dd>
+ <p>
+ </p>
+ <dt><tt>file_t</tt></dt>
+ <dt><tt><b>file_name_lookup</b> (const char *file, int flags, mode_t mode);</tt></dt>
+ <dd>Open a port to FILE with the given FLAGS and MODE (see <tt>&amp;lt;fcntl.h&amp;gt;</tt>). The file lookup uses the current root and working directory. Returns a port to the file if successful; otherwise sets <tt>errno</tt> and returns <tt>MACH_PORT_NULL</tt>.</dd>
+ <p>
+ </p>
+ <dt><tt>file_t</tt></dt>
+ <dt><tt><b>file_name_lookup_under</b> (file_t startdir, const char *file, int flags, mode_t mode);</tt></dt>
+ <dd>Open a port to FILE with the given FLAGS and MODE (see <tt>&amp;lt;fcntl.h&amp;gt;</tt>). The file lookup uses the current root directory, but uses STARTDIR as the "working directory" for file relative names. Returns a port to the file if successful; otherwise sets <tt>errno</tt> and returns <tt>MACH_PORT_NULL</tt>.</dd>
+ <p>
+ </p>
+ <dt><tt>file_t</tt></dt>
+ <dt><tt><b>file_name_path_lookup</b> (const char *file_name, const char *path, int flags, mode_t mode, char **prefixed_name);</tt></dt>
+ <dd>Lookup FILE_NAME and return the node opened with FLAGS &amp;amp; MODE (see <tt>hurd_file_name_lookup</tt> for details), but a simple file name (without any directory prefixes) will be consecutively prefixed with the pathnames in the <tt>:</tt> separated list PATH until one succeeds in a successful lookup. If none succeed, then the first error that wasn't ENOENT is returned, or ENOENT if no other errors were returned. If PREFIXED_NAME is non-NULL, then if the result is looked up directly, *PREFIXED_NAME is set to NULL, and if it is looked up using a prefix from PATH, *PREFIXED_NAME is set to malloc'd storage containing the prefixed name.</dd>
+ <p>
+ </p>
+ <dt><tt>file_t</tt></dt>
+ <dt><tt><b>file_name_split</b> (const char  file, char **name);</tt></dt>
+ <dd>Split FILE into a directory and a name within the directory. The directory lookup uses the current root and working directory. If successful, stores in *NAME a pointer into FILE where the name within directory begins and returns a port to the directory; otherwise sets <tt>errno</tt> and returns <tt>MACH_PORT_NULL</tt>.</dd>
+ <p>
+ </p>
+ <dt><tt>file_t</tt></dt>
+ <dt><tt><b>directory_name_split</b> (const char *file, char **name);</tt></dt>
+ <p>
+ </p>
+ <dd>Split DIRECTORY into a parent directory and a name within the directory. This is the same as <tt>file_name_split</tt>, but ignores trailing slashes.</dd>
+ <p>
+ </p>
+ <dt><tt>FILE *</tt></dt>
+ <dt><tt><b>fopenport</b> (io_t port, const char *mode);</tt></dt>
+ <dd>Open a stream on a port. MODE is as for <tt>fopen</tt>. If successful, this consumes a user reference for PORT (which will be deallocated on fclose).</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>openport</b> (io_t port, int flags);</tt></dt>
+ <p>
+ </p>
+ <dd>Open a file descriptor on a port. FLAGS are as for <tt>open</tt>; flags affected by <tt>io_set_openmodes</tt> are not changed by this. If successful, this consumes a user reference for PORT (which will be deallocated on close.) See <tt>&amp;lt;hurd/io.defs&amp;gt;</tt> and <tt>&amp;lt;hurd/io.h&amp;gt;</tt>.</dd>
+ <p>
+ </p>
+ <dt><tt>task_t</tt></dt>
+ <dt><tt><b>pid2task</b> (pid_t pid);</tt></dt>
+ <p>
+ </p>
+ <dd>Return the task control port of process PID. On error, sets <tt>errno</tt> and returns <tt>MACH_PORT_NULL</tt>.</dd>
+ <p>
+ </p>
+ <dt><tt>pid_t</tt></dt>
+ <dt><tt><b>task2pid</b> (task_t task);</tt></dt>
+ <dd>Return the PID of the task whose control port is TASK. On error, sets <tt>errno</tt> and returns -1. </dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>geteuids</b> (int n, uid_t *uidset);</tt></dt>
+ <dd>Get the effective UID set.</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>seteuids</b> (int n, const uid_t *uidset);</tt></dt>
+ <dd>Set the effective UID set.</dd>
+ <p>
+ </p>
+ <dt><tt>auth_t</tt></dt>
+ <dt><tt><b>getauth</b> (void);</tt></dt>
+ <dd>Get port name of current authentication server. See <tt>&amp;lt;hurd/auth.defs&amp;gt;</tt> and <tt>&amp;lt;hurd/auth.h&amp;gt;</tt>.</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>setauth</b> (auth_t);</tt></dt>
+ <p>
+ </p>
+ <dd>Set current authentication server.</dd>
+ <p>
+ </p>
+ <dt><tt>process_t</tt></dt>
+ <dt><tt><b>getproc</b> (void);</tt></dt>
+ <dd>Get port name of current process server. See <tt>&amp;lt;hurd/process.defs&amp;gt;</tt> and <tt>&amp;lt;hurd/process.h&amp;gt;</tt>.</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>setproc</b> (process_t);</tt></dt>
+ <p>
+ </p>
+ <dd>Set current process server.</dd>
+ <p>
+ </p>
+ <dt><tt>mach_port_t</tt></dt>
+ <dt><tt><b>getcttyid</b> (void);</tt></dt>
+ <dd>Get the CTTY port.</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>setcttyid</b> (mach_port_t);</tt></dt>
+ <dd>Set the CTTY port.</dd>
+ <p>
+ </p>
+ <dt><tt>kern_return_t</tt></dt>
+ <dt><tt><b>get_privileged_ports</b> (host_priv_t *host_priv_ptr, device_t *device_master_ptr);</tt></dt>
+ <dd>Fetch the host privileged port and device master port from the process server.</dd>
+ <p>
+ </p>
+ <dt><tt>mode_t</tt></dt>
+ <dt><tt><b>getumask</b> (void);</tt></dt>
+ <dd>Get the current `umask' value without changing it (this glibc functions is available only under GNU Hurd.)</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>vpprintf</b> (io_t port, const char *format, va_list arg);</tt></dt>
+ <dd>Write formatted output to PORT, a Mach port supporting the i/o protocol, according to the format string FORMAT, using the argument list in ARG.</dd>
+ <p>
+ </p>
+ <dt><tt>thread_t</tt></dt>
+ <dt><tt><b>hurd_thread_self</b> (void);</tt></dt>
+ <dd>Return the current thread's thread port. This is a cheap operation (no system call), but it relies on Hurd signal state being set up.</dd>
+ <p>
+ </p>
+ <dt><tt>error_t</tt></dt>
+ <dt><tt><b>hurd_thread_cancel</b> (thread_t thread);</tt></dt>
+ <p>
+ </p>
+ <dd>Cancel pending operations on THREAD. If it is doing an interruptible RPC, that RPC will now return EINTR; otherwise, the "cancelled" flag will be set, causing the next <tt>hurd_check_cancel</tt> call to return nonzero or the next interruptible RPC to return <tt>EINTR</tt> (whichever is called first).</dd>
+ <p>
+ </p>
+ <dt><tt>int</tt></dt>
+ <dt><tt><b>hurd_check_cancel</b> (void);</tt></dt>
+ <p>
+ </p>
+ <dd>Test and clear the calling thread's "cancelled" flag.</dd>
+ <p>
+ </p>
+</dl>
+
+-- [[Main/OgnyanKulev]] - 09 Dec 2002
diff --git a/Hurd/HurdishApplicationsForPersistence.mdwn b/Hurd/HurdishApplicationsForPersistence.mdwn
new file mode 100644
index 00000000..12861ecb
--- /dev/null
+++ b/Hurd/HurdishApplicationsForPersistence.mdwn
@@ -0,0 +1,5 @@
+TBD, see:
+
+* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00081.html>; summary: passive translators started by the filesystem cannot be done right and persistence makes passive translators unnecessary
+
+-- [[Main/TomBachmann]] - 20 Jun 2006
diff --git a/Hurd/InstallNotes.mdwn b/Hurd/InstallNotes.mdwn
new file mode 100644
index 00000000..a3fbc28e
--- /dev/null
+++ b/Hurd/InstallNotes.mdwn
@@ -0,0 +1,295 @@
+Items of interest during install not mentioned elsewhere include the following. Arranged in the same order as Neal Walfield's [install guide](http://web.walfield.org/papers/hurd-installation-guide/english/hurd-install-guide.html).
+
+**_Currently, [Debian's installation instructions](http://www.debian.org/ports/hurd/hurd-install) are the most up-to-date._**<br /> Note the mirrors mentioned on debian.org have no hurd iso's. The iso's can be found on several mirrors:<br /> \* [Main mirror (Spain)](http://ftp.gnuab.org/pub/debian-cd/)<br /> \* [French mirror I](ftp://ftp.eila.jussieu.fr/pub/Debian-CD/)<br /> \* [French mirror II](ftp://ftp.duckcorp.org/hurdfr/hurd/)<br /> \* [Canada mirror](http://www.superunprivileged.org/debian-cd/)<br />
+
+## <a name="Table_of_Contents"> Table of Contents </a>
+
+%TOC%
+
+## <a name="1_Overview_Where_we_are_going"> 1. Overview - Where we are going </a>
+
+There are currently four methods to install GNU
+
+1. Tarball - Neal Walfield's [guide](http://web.walfield.org/papers/hurd-installation-guide/english/hurd-install-guide.html) is excellent and available in several formats. It is the guide that the Hurd community always references first. The GNU official [installation page](http://www.gnu.org/software/hurd/install.html) is the canonical reference. See [[Distrib/TarballNotesHome]] for more info.
+2. [[Distrib/BochsEmulator]] is an x86 emulator similar to the propietary [[Distrib/VmWare]] (which is not supported). See the [[Distrib/BochsEmulator]] page for more info. The Bochs project hosts a preinstalled GNU image that is periodicaly updated. You can get the latest one [here](http://sourceforge.net/project/showfiles.php?group_id=12580).
+3. [CD-ROM iso images](http://www.debian.org/ports/hurd/hurd-cd) CD-ROM installs are becoming more and more popular. The CDs are based on the most current tarball at release time. See [[Distrib/CDNotesHome]] for more info.
+4. The [crosshurd](http://packages.debian.org/crosshurd/) Debian package, which can be used instead of a tarball to install the base system. This is the recommended way to proceed.
+
+* References to a `cross-install` script can nowadays be completely ignored by anyone not a maintainer. It is only used when creating a new tarball.
+
+## <a name="2_Real_Estate_or_Finding_A_Home"> 2. Real Estate or Finding A Home </a>
+
+For those who do not happen to have an available partition or an extra hard drive, this can be the longest step. In this case, we will need to repartition the hard drive. One solution is to use GNU's partition editor, Parted. It features not only basic partition editing, but also partition resizing and moving functions. It can be found at <http://www.gnu.org/software/parted>. The manual is quite complete and includes several tutorials. Also there's a frontend called [nparted](http://packages.debian.org/unstable/utils/nparted.html) to simplify usage.
+
+The Hurd can only support partition sizes of up to approximately one gigabyte; anything much larger than this will not work. This limitation is a design decision that was made several years ago in which the file system server maps the entire partition into virtual memory. As the amount of virtual memory available on an ia32 is only four gigabytes of which only two gigabytes are available to the application and, of that, a significant portion is reserved for the code, the stack and the heap, the final, maximum contiguous virtual memory area that is left is generally about one gigabyte. This limitation is scheduled to be remove. Several other items, however, currently have a slightly higher priority.
+
+Having said that, a single one gigabyte partition is more than enough for a working system. Many, however, prefer at least two partitions: one for a root partition and another for a home partition. This latter scheme is highly advised for developers interested in debugging Hurd servers.
+
+The Hurd supports several extensions to the ext2fs file system format. Foremost among these are passive translators and a fourth set of permission bits for unknown users. In order to take advantage of these features, however, the owner of the partition must be set to Hurd. `mke2fs`, unless specifically overridden on the command line, will set the owner to whatever system core it is running on. As the Hurd will diligently respect this setting, we must be careful to set this appropriately or the Hurd may fail in subtle ways. Be aware that even if a file system is owned by a particular system core, others may still use it; they just may not be able to use certain extensions.
+
+To create a file system, we use `mke2fs` and pass it `-o hurd` to designate the Hurd as the owner of the new file system. For instance:
+
+ mke2fs -o hurd /dev/DEVICE
+
+**_Note:_** You may wish to add a `-b 4096` option to `mke2fs` (the default is chosen depending on the size of the partition, and the support for block size 1024 is buggy). The command to check the block size is `tune2fs -l /dev/hda9` under GNU/Linux.
+
+## <a name="3_The_Boot_Loader_Getting_GRUB"> </a> 3. The Boot Loader - Getting GRUB
+
+GRUB is the bootloader of the GNU system, and it's currently the only one that supports the multiboot standard, necessary to boot the Hurd.
+
+A word about GRUB. Unlike traditional boot loaders on the x86, such as LILO, GRUB is very powerful. It has a command line interface, bootp, dummy terminal support and a plethora of other features. In addition, it can boot most any operating system. If you have ever booted an alpha or sparc, you will understand what GRUB can do. Therefore, do not be scared: GRUB is better. You will like it. You will not go back.
+
+To find GRUB, visit <ftp://alpha.gnu.org/gnu/grub>. Here, there is a source tarball and a floppy image. If you choose to download the tarball, it is a normal configure, make and make install. Included is a wonderfully complete manual on how GRUB works. Read it. If, on the other hand, you choose to download the floppy image, it is sufficient to dump it to a floppy disk to get a working GRUB:
+
+ dd if=grub-boot-VERSION.image of=/dev/fd0
+
+You can always install GRUB onto your hard drive at a later date.
+
+For instructions on using GRUB, see either the info documentation or the quick reference notes on this wiki:
+
+* [[Distrib/GrubNotes]] - quick reference
+
+## <a name="4_Cross_Install_Cross_Installing"> </a> 4. Cross Install - Cross Installing GNU
+
+The recommended way to cross install the Hurd is by using the [crosshurd](http://packages.debian.org/crosshurd) Debian package. Unfortunately, it's broken right now (2003-10-10), so you'll have to use the old tarball method.
+
+Download the base system `gnu.tar.gz` from <ftp://alpha.gnu.org/gnu/hurd/contrib/robertmh/> or <http://people.debian.org/~rmh/gnu/> .
+
+The tarball is setup to extract everything into the current directory. After mounting the partition and changing to the mount point, we just need to extract the archive. In the following example, we assume that the root partition is mounted on `/gnu`.
+
+ cd /gnu
+ tar --same-owner -xvzpf ~/gnu.tar.gz
+
+**_NOTE:_** This should NOT be confused with the `cross-install` script method. It is only used by maintainers when creating a new tarball.
+
+## <a name="5_Booting_GNU"> </a> 5. Booting GNU
+
+Now things are setup to boot GNU for the first time. Verify that the GRUB boot disk is in the drive and reboot. If all goes well, a GRUB menu will be displayed. Hit c for the GRUB command line.
+
+First, the root file system needs to be set. GRUB uses a partition nomenclature that is a bit different from either GNU or GNU/Linux: both IDE and SCSI drives are named `(hdN)`. `N` is the drive number (zero based) as reported by the BIOS. That is, GRUB makes no distinction between IDE and SCSI disks. The partitions, like the disks, are also indexed numerically from zero: `(hdN,M)`. If this sounds bad, relax: GRUB is also helpful.
+
+To determine on which file system a particular file resides, one method is to use the find command. When issued this command, GRUB searches on each file system for the specified file and prints where is was found. Here we search for the kernel, `/boot/gnumach.gz`.
+
+ grub> find /boot/gnumach.gz
+ (hd0,0)
+
+As we can see, GRUB is indicating that `/boot/gnumach.gz` is on `(hd0,0)`. Thus, we set the root respectively:
+
+ grub> root (hd0,0)
+ Filesystem type is ext2fs, partition type 0x83
+
+Next, GNU Mach needs to be loaded. In addition to loading the binary, at least one option, the root partition, must be specified. This will be used by the Hurd itself. As such, it must be in terms that the Hurd can understand.
+
+GNU Mach labels disks starting at zero. IDE drives are prefixed with hd, while SCSI disks are prefixed with sd. Like GNU/Linux, drives are number by their position on the controller. For instance, the primary master is `hd0` and the secondary slave is `hd3`. Partitions use the BSD slice naming convention, and append `sM` to the drive name to indicate a given partition. Note that `M` is a one, not zero, based index. The slice number is simple to calculate: just increment what you used for GRUB by one.
+
+Since the Hurd has not yet been configured, it must be run in single user mode. Adding a `-s` to the kernel command line is all that is required.
+
+Thus, continuing with the above example and assuming that the first drive in the master on the secondary controller, we would have:
+
+ grub> kernel /boot/gnumach.gz root=device:hd2s1 -s
+ [Multiboot-elf, ...]
+
+NOTE: If after running this command you see GRUB Error 28, according to the [GRUB Troubleshooting](http://www.gnu.org/software/grub/manual/grub.html#Troubleshooting) documentation, you may need to tell grub that you have more memory by using the uppermem command. For example, if you have 256MB of RAM and running **displaymem** within GRUB shows that you have less memory than that, you can type **uppermem 262144** to tell GRUB about the additional memory.
+
+Next, the root file system server and the exec server must be loaded. This is done using GRUB's boot module capability. The parameters are the semantics by which the kernel passes some important values to the servers.
+
+ grub> module /hurd/ext2fs.static \
+ --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} \
+ --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} -T typed ${root} \
+ $(task-create) $(task-resume)
+
+ [Multiboot-module 0x1c4000, 0x2cfe6a bytes]
+ grub> module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+ [Multiboot-module 0x494000, 0x27afe bytes]
+
+**_Important:_** each module string should be asingle separate line _or_ line wrapped with a backslash at the end of each line. Remember to make sure there are **_no trailing spaces!_** Adding this to GRUB's `menu.lst` file as soon as possible is advised.
+
+Finally, GNU can be booted:
+
+ grub> boot
+
+Sit back and watch the messages. This is actually more important than one might think as there is a bug in GNU Mach whereby hitting a key during the boot process causes the kernel to panic.
+
+If GNU fails to boot, it could be due to shared IRQs: GNU Mach does not play well with these. You can verify your situation by looking at, for instance, the `/proc/interrupts` file under GNU/Linux. Also, as GNU Mach does not support loadable kernel modules, many of the drivers are compiled into the default kernel. If you have old peripherals, this can be a significant problem: a device may respond badly to a probe intended for a different device. Building a new kernel with only the required devices drivers will usually solve this problem. GNU Mach is easily cross compiled. If you are running Debian, try the `gcc-i386-gnu` package.
+
+If this does not help, explore the resources listed at the end of this document. Finally, ask on the appropriate mailing list.
+
+There are some cavaets to the boot process:
+
+* **IMPORTANT!** Remember when first booting into your freshly un-tarred distribution, you must pass the `-s` option to `/boot/gnumach.gz`. Failure to do so means that you won't get single-user mode.
+* **IMPORTANT2!** Add the `--readonly` flag to the file system server in your GRUB `menu.lst` file. This is a work-around to get `fsck` working properly. Don't forget, everything must be on ONE line, or ended with a backslash!
+* **IMPORTANT3!** If you have created the filesystem with a later version of e2fsprogs than the one installed in the tarball, it **might** happen that fsck fails and you can't boot multiuser. The workaround is to copy `/bin/true` into `/sbin/e2fsck` and `/sbin/fsck.ext2`, then boot multiuser and install the latest e2fsprogs.
+
+ title GNU (kernel GNUmach 1.3)
+ root (hdX,Y)
+ kernel /boot/gnumach.gz root=device:hdXs(Y+1)
+ module /hurd/ext2fs.static --readonly \
+ --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} \
+ --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} \
+ -T typed ${root} $(task-create) $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+Where `hdX,Y` is the appropriate hard disk and partition number, in GRUB format. `hdXs(Y+1)` is the GNUmach format - because Mach partitions start at 1, unlike GRUB partitions that start on 0 (zero).
+
+It is important that each module string is only a single separate line, or by escaping the EOL (end of line) with a back slash. Remember though to make sure there are **_no trailing spaces!_**
+
+**_GRUB floppy and iso images:_** These are available from <http://www.copyleft.co.nz/links.html>. These have been built with the correct strings and only the root and boot partitions names need to be editied.
+
+## <a name="6_Native_Install_Finishing_the_I"> 6. Native Install - Finishing the Installation </a>
+
+Once a prompt comes up, and any time that the the Hurd is in single user mode, it is necessary to set the terminal type:
+
+ export TERM=mach
+
+(Repeat this each time you boot in single user mode)
+
+Be warned that CONTROL-C and family will not work in single user mode.
+
+We can now run the native-install script. This will configure the packages and set up several important translators:
+
+ ./native-install
+
+Right before the script terminates, it will indicate that it needs to be run a second time. Follow its instructions and reboot using the reboot command. Again, go into single user mode.
+
+Now it is advisable to enable swap. The mach kernel dislikes running without swap and is unlikely to last through the installation, especially on systems with little physical RAM. Although you can enable swap later on after running `./native-install` for the second time, turning swap on early increases your probability of getting there.
+
+This will start the default pager, create a device corresponding to the swap partition, and turn swap on on that partition:
+
+ /hurd/mach-defpager
+ cd /dev
+ ./MAKEDEV hdXsY
+ swapon /dev/hdXsY
+ cd /
+
+**IMPORTANT!** When enabling swap please be very sure that the partition really is swap. If you point `swapon` to a data partition it will use that for swap, overwriting any data you may have there.
+
+Now run `./native-install` for the second time and go through a series of prompts.
+
+Next, edit `/etc/fstab` to add the home partition and swap space. By default, `nano` is the only editor installed by the the base distribution (not `ae` nor `vi`). It is very important that swap space be used: the Hurd will be an order of magnitude more stable. Note that the Hurd can transparently share a swap partition with Linux, the kernel, but will happily page to any device including a raw partition such as your home partition.
+
+Here is an example `/etc/fstab` file:
+
+ # <file system> <mount point> <type> <options> <dump> <pass>
+ /dev/hd2s1 / ext2 rw 0 1
+ /dev/hd2s2 /home ext2 rw 0 2
+ /dev/hd2s3 none swap sw 0 0
+
+Remember to create any devices using the `MAKEDEV` command.
+
+When you first boot, your `/home` directory will _not_ be auto-mounted. You must set a passive translator on that node to access that partition. The correct syntax for this is: <br />`settrans -p /home /hurd/ext2fs /dev/hd2s2`
+
+To mount an nfs partition, use the nfs translator. When run as non-root, the translator will connect, for obvious reasons, to the nfs server on a port above 1024. For this to succeed under GNU/Linux, the insecure option must be added to the export line. Here is an example `/etc/exports` file:
+
+ /home 192.168.1.2(rw,insecure)
+
+To mount this from a GNU box:
+
+ settrans -cgap /home /hurd/nfs 192.168.1.1:/home
+
+## <a name="7_Configuration_Making_the_Syste"> 7. Configuration - Making the System Usable </a>
+
+**NOTE**: _If you are using the Debian distribution of Hurd, you also **want** to read_ **_[[Distrib/DebianAfterInstall]]_**
+
+* After you install, you'll want to do several _important_ things:
+ * Run `passwd` to give the root user a password. By default, root does not have one.
+ * Run `adduser` to give yourself a user account. _Do not_ use root indiscriminately.
+ * Run `MAKEDEV` to create devices in `/dev` for your hard disk and other required devices.
+ * Since the Hurd does not use `ld.so.conf`, you will want to specify where the X Window System keeps its libraries. Do this by adding the following line to your `/etc/profile`: <br />`export LD_LIBRARY_PATH='/lib:/usr/X11R6/lib'`
+ * run `/etc/cron.daily/find` to allow `locate` to function.
+
+* [[GetNetworkRunning]]
+ * Hopefully Mach will recognize your hardware. If it doesn't you have to recompile in most cases.
+ * copy over your `/etc/resolv.conf` from GNU/Linux to allow your DNS to resolve correctly.
+
+* Prepare system for new packages.If you are running Debian GNU/Hurd:
+ * a recommended `/etc/apt/sources.list`: <br /><code>deb <http://ftp.gnuab.org/debian> unreleased main<br /> deb <ftp://ftp.debian.org/debian> unstable main <br /> deb-src <ftp://ftp.debian.org/debian> unstable main</code>
+ * a newer `/etc/apt/sources.list`:<br /><code>deb <http://mirrors.kernel.org/debian> unstable main contrib<br /> deb-src <http://mirrors.kernel.org/debian> unstable main contrib<br /> deb <http://ftp.gnuab.org/debian> unreleased main<br /> deb-src <http://ftp.gnuab.org/debian> unreleased main</code>
+ * There are some extremely useful cross-platform 'apt' tricks that can be used to get packages when using Debian GNU/Linux (possibly others) for installation on GNU. This is especially useful if your GNUMach doesn't recognize your network card. The steps are covered in the file `/usr/share/doc/apt-doc/offline` which has been used by several Hurd developers successfully.
+ * create an `/etc/apt/apt.conf.offline` like [[AptConfOffline]].
+ * consider setting up a few [[CrossPlatformAliases]] for use under Debian GNU/Linux while the Debian GNU/Hurd partitions are mounted.
+ * select the `apt` method from within dselect.
+
+* [[Xfree86]]
+
+* New packages - Hopefully you are able to get your network working but since the default GNUMach is only configured for a few ethernet cards you may need to recompile your GNUMach to get it working with your network hardward.
+ * Install these extremely useful packages
+ * `dialog` -- Debconf uses this for interactivity. You should install this first to allow you to configure other packages as they are installed.
+ * It's a very good idea to bring your packages up to date by running: `apt-get update && apt-get dist-upgrade`
+ * Some recommended packages
+ * `screen` -- A terminal multiplexer is important because the Hurd does not yet have virtual consoles. Runs with GNU/Linux too.
+ * `anacron` -- good to run cron jobs for a machine that is not on all the time.
+ * `emacs21` -- a powerful editor.
+ * `cvs` -- Concurrent Version System, you'll probably need this soon.
+ * `bzip2, zip, unzip` -- compression tools.
+ * `build-essential` -- preparing to build software.
+ * `gnu-standards` -- GNU coding and package standards.
+
+* Some packages use an erroneous dependency on `libc6-dev`. This is incorrect because libc6 is specific to GNU/Linux. The corresponding package for GNU is `libc0.3-dev`. If you find a package that is uninstallable due to a `libc6[-dev]` dependency, please send a bug report with a patch that fixes it. It is important that you don't hack your package system to workaround such problems, because that way you won't be able to spot them when they arrive. See the [[Distrib/PortingIssues]] for details about the problem and [[Distrib/BtsFiling]] for details on sending bug reports.
+* Edit your `/etc/inetd.conf` and comment out all the services you don't need. Services that probably don't need to be running are `ftp`, `telnet`, `shell`, `login`, and `exec`.
+* There appears to be a bug in `libnss-db` that causes networking to fail. To work around this edit `/etc/nsswitch.conf` and remove the `db` entries. (See <http://www.geocrawler.com/archives/3/333/2001/1/50/4907699/> )
+
+## <a name="8_Final_Words_The_FAQ"> </a> 8. Final Words - The FAQ
+
+* [[FrequentlyAskedQuestions]] - More than frequently asked questions
+
+* [Hurd FAQ](http://web.walfield.org/papers/hurd-faq/)
+
+* [[KnownHurdLimits]] - Limitations of the GNU operating system
+
+## <a name="9_Works_Cited_Referenced_Materia"> 9. Works Cited - Referenced Materials </a>
+
+On Sept 20, 2002 [[Main/DeepakGoel]] (a self-proclaimed newbie) posted a link to his personal [step-by-step installation](http://24.197.159.102/~deego/pub/hurd/install-guide/install.txt). The parent directory has additional material.
+
+Tarball Notes: [[Distrib/TarballNotes20020816]] [[Distrib/TarballNotes20020523]]
+
+CD-ROM Notes: [[Distrib/CDNotesJ2]]
+
+Others who wish to post summaries of their installation experiences are encouraged to do so. The installer methods, package dependencies and file locations frequently do change without warning.
+
+----
+
+## <a name="Licensing"> Licensing </a>
+
+ This work is based on the hard work by [countless Hurd users](http://web.walfield.org/papers/hurd-installation-guide/THANKS), documented and maintained by Neal H. Walfield. See the original for both reference and its licensing at <http://web.walfield.org/papers/hurd-installation-guide/>
+
+The license for Neals work is under the [GNU GPL](http://web.walfield.org/papers/hurd-installation-guide/COPYING). However, in the Hurd Wiki license all content under the GNU FDL. (Unless the topic is mostly code or otherwise stated in the text.)
+
+There are currently issues to be resolved around this matter, as far as I understand at least. Until an agreement can be reached this text, and the unclear status of this topic, will remain. The suggestion is to do something like this:
+
+<dl>
+ <dt>[[InstallGuide]]</dt>
+ <dd> Neals Install Guide in its original form </dd>
+ <dt>[[InstallNotes]]</dt>
+ <dd> Or [[InstallGuideErrata]] with all user input and additions </dd>
+</dl>
+
+There are several obvious issues with this as I can see
+
+1. The [[InstallGuide]] must be kept editable by a select few people to avoid the current situation from repeating itself.
+2. This loops back and kicks us in the butt because then we get:
+ 1. Synchronization problems with the original work
+ 2. Bottle necks: The people with edit access are too busy to synchronize with Neals guide
+ 3. Diverging guides
+3. Annoyed users, we break the tradition of freely editable wiki content and we also have two guides saying different things.
+
+-- [[Main/JoachimNilsson]] - 29 Dec 2002
+
+## <a name="Blame_annotations"> Blame annotations </a>
+
+ -- [[Main/SimonLaw]] - 29 May 2002 <br /> -- [[Main/GrantBow]] - 13 Oct 2002 <br /> -- [[Main/JoachimNilsson]] - 14 Nov 2002 <br /> -- [[Main/RobertMillan]] - 21 Nov 2002 <br />
+
+First effort at straightening out the formatting mess ... added references to Neals' original, which this topic has become heavily based on.
+
+-- [[Main/JoachimNilsson]] - 19 Dec 2002 <br />
+
+Updated to the latest short-comings in the Hurd.
+
+-- [[Main/OgnyanKulev]] - 11 Oct 2003
+
+-- [[Main/TWikiGuest]] - 07 Dec 2003 (<r2q2@rocketmailNOSPAM.com>)
+
+Updated iso information
diff --git a/Hurd/InstallationExperiences.mdwn b/Hurd/InstallationExperiences.mdwn
new file mode 100644
index 00000000..e4905a5d
--- /dev/null
+++ b/Hurd/InstallationExperiences.mdwn
@@ -0,0 +1 @@
+[1] Here's a step-by-step example-installation being done by one newbie --&gt; <http://24.197.159.102/~deego/pub/hurd/install-guide/install.txt>. The parent directory has more hurd stuff.-- [[Main/DeepakGoel]] - 20 Sep 2002
diff --git a/Hurd/InteractiveTranslators.mdwn b/Hurd/InteractiveTranslators.mdwn
new file mode 100644
index 00000000..9a0ca7e2
--- /dev/null
+++ b/Hurd/InteractiveTranslators.mdwn
@@ -0,0 +1,31 @@
+The following text is from mail by Hurd architect Thomas Bushnell:
+
+> Thread moved over to bug-hurd since it's about design and not Debian GNU/Hurd per se. Alfred Szmidt had pointed out that a dpkg installation translator (one where you copy a .deb into a directory to install it into the system) cannot be easily written, because Debian package installation scripts are sometimes interactive.
+>
+> I said that this was a deficiency in the design of the Hurd, and that it would be good to fix it (ultimately) by creating user interaction context widgets which can be passed to servers so that they can safely and securely interact with the user when necessary.
+>
+> Alfred M. Szmidt writes:
+>
+> > I think you mean that it is a shortcoming in the design of things that are not or cannot be interactive, filesystems being one such example. I can see it infront of me: stat() poping up a dialog asking me to do something each time it gets called...
+>
+> No, it's a shortcoming in the design of the Hurd, because many times it **can** be interactive. Of course we don't want stat prompting you ever time it's called, but that's not an excuse for preventing stat from ever prompting you at all. We use all kinds of programs that can be interactive, and needless prompts are bugs, easily fixed.
+>
+> Please, don't lecture me about the Hurd being perfect; it's not. And this is a shortcoming that can someday be fixed, so we shouldn't pretend it's not a problem. It is. A friend at the AI lab once gave the following dream as an example of a well-functioning system:
+>
+> You walk up to the workstation and start a complex memory intensive ray-tracing program. It runs out of memory and swap space on the workstation. A dialog pops up informing you of the situation and giving several options: suspend the job until later, kill it, and so forth. (Notice that Unix and the Hurd both simply kill the process or the system here, because the discovery that swap is gone happens so low down that all context has been lost.)
+>
+> You put a disk in the drive. After putting the disk in, without you doing anything in the dialog, a new option comes up, "I notice you just put a disk in; do you want to use this for additional swap?" You say yes. The process now continues, with part of the swap being on the disk. (Notice that Unix and the Hurd don't make connections like this, having one driver know that something **else** in the system might be waiting for this resource and offering it for use.)
+>
+> In the middle of the task, you hit the button on the drive and out pops the disk. A notifier pops up on the screen, saying that the necessary swap for your process has been removed from the system, and so the job has been suspended until later, and giving you the option of killing it. You say "OK" (that is, you do not say to kill it), and then you log out. (Note that Unix and the Hurd cannot carry on at all in such a case; failure to satisfy a page-in fault results in utter disaster, not clean behavior. Also, neither control carefully which data is paged to which devices, because all interaction context is gone when pageout decisions are being made, so if you have started paging on this disk, you have probably started paging all kinds of essential system services on it too.)
+>
+> A week later, you walk up to a different workstation in the cluster, and pop in your disk. The system says, "I notice you have a suspended job that was using this disk for swap space" and allows you to resume it where you left off. (Notice that this requires close interaction between the workstations in the cluster, combined with more driver-level cleverness.)
+>
+> Now that's a well-functioning system. It requires careful bookkeeping of context, knowledge about how to usefully interact with the user from deep in the bowels of the system, and so forth. The Hurd has the capacity for this kind of thing, because user servers can do arbitrary things, unlike kernel routines in Unix. But we must figure out how to give them all the necessary information about their context.
+>
+> When I designed the filesystem protocols and the structure of the system, I did not consider this kind of flexibility. I had only the simplest kinds of filesystem translators in mind, ones which were just like Unix filesystems but supporting formats like tar and ar in addition to the typical mass-storage types. It was only a little later that I realized union and shadow translators would be a nice thing (and BSD picked up the idea after I explained it at a Boulder BSD conference). Keeping track of who is using which swap space? Now **that** would be clever, and would be very very nice to have.
+>
+> The reason that filesystems do not have user context is because I was not sufficiently far-sighted at the time to realize the full flexibility of the translator concept I had created. Now that we know more about that flexibility, it would be nice to start figuring out how to improve it.
+>
+> Thomas
+
+-- [[Main/OgnyanKulev]] - 21 Mar 2005
diff --git a/Hurd/JoachimNilssonHurdPage.mdwn b/Hurd/JoachimNilssonHurdPage.mdwn
new file mode 100644
index 00000000..e4dde2b9
--- /dev/null
+++ b/Hurd/JoachimNilssonHurdPage.mdwn
@@ -0,0 +1,247 @@
+<table width="100%">
+ <tr>
+ <td>
+ </td>
+ <td align="right"><a href="http://hurd.gnufans.orghttp://LOCATIONHurd/JoachimNilssonHurdPage" target="_top">Edit this page</a></td>
+ </tr>
+ <tr>
+ <td align="right"> %ATTACHURL%/patch_kit.jpg </td>
+ <td align="left"><nop><h2><a name="Table_of_Contents"> Table of Contents </a></h2> %TOC% </nop></td>
+ </tr>
+</table>
+
+## <a name="Introduction"> Introduction </a>
+
+This page serves as a simple project page for me. I use it to list my personal Hurd related projects, currently only OSKit related. If you wish to comment on my work, do so in [[TWiki/GoodStyle]], preferably at the bottom of this page.
+
+The OSKit work is based on the St. Patrick's Day release, snapshot 20020317.
+
+These patches are available through the [Savannah OSKit project](http://savannah.gnu.org/projects/oskit/) Hopefully they will also be integrated into the main tree at Utah.
+
+## <a name="Progress"> Progress </a>
+
+**_2005-02-05:_** Sorry, these pages are now dead. It turned out that my spare time actually was limited. I have a family with a second child due in August — so it's unlikely that I'll ever go back to working with these patches. However, I plan on joining the [[HurdOnL4]] project, possibly to help with drivers, since that's what I do at work mostly.
+
+**_2003-04-17:_** I've become a bit distracted lately from my Hurd related projects. My work has consumed a lot of time, as have my personal life (I'm about to become a dad! :). But don't worry, I have been working quietly in the background anyway - the OSKit patches have been integrated into the Savannah OSKit project and a new [[TWiki/GnuSkin]] release has been made.
+
+There is one thing now, only one little thing that I want to have finished before the summer. My Promise ATA-100 controller - support for it in [[Mach/OskitMach]]. Any spare time I find I'll spend on getting that one up and running.
+
+## <a name="Current_Project"> Current Project </a>
+
+I'm working on importing the Linux ATA-100 drivers to the OSKit. Using patches by Linux ATA guy, Andr� Hedrick. [ATA-100 patches](http://www.kernel.org/pub/linux/kernel/people/hedrick/ide-2.2.20/).
+
+At my help I now have [[Main/OgnyanKulev]], he will test a few ATA-100 cards he has access to.
+
+[[Main/JoachimNilsson]]:
+
+* HighPoint HPT366 ATA-66
+* Promise PDC202XX ATA-100
+
+[[Main/OgnyanKulev]]:
+
+* Promise PDC202XX
+* Intel 82801BA
+* Silicon Image CMD649
+
+### <a name="OSKit_ATA_100_Support"> </a> OSKit - ATA-100 Support
+
+I have used the Linux 2.2.22 patch as the base and added the Linux ide-2.2.20.01102002 patch on top. Integration is now complete, testing have started. An alpha quality release is available below, if you want to help out with testing or be on the bleeding edge of things, please contact me via email.
+
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <th bgcolor="#99CCCC"><strong>Part</strong></th>
+ <th bgcolor="#99CCCC"><strong>Brief description</strong></th>
+ <th bgcolor="#99CCCC"><strong>DIFF</strong></th>
+ <th bgcolor="#99CCCC"><strong>Date</strong></th>
+ </tr>
+ <tr>
+ <td> 2.2.22-ATA (ALPHA) </td>
+ <td> Adds ATA-100/66 capabilities (alpha release) </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.22-ATA-alpha.diff.gz" target="_top">patch-oskit-linux-2.2.22-ATA-alpha.diff.gz</a></td>
+ <td align="right"> Jan 3, 2003 </td>
+ </tr>
+</table>
+
+**_Comments:_**
+
+* Progress is slow.
+ * Off-board chipsets seem more difficult ...
+ * PIIX chipset works, tuning included.
+
+----
+
+## <a name="Previous_Projects"> Previous Projects </a>
+
+### <a name="OSKit_New_Linux_NIC_drivers"> </a> OSKit - "New" Linux NIC drivers
+
+"New" means simply to add more of the drivers existing in Linux 2.2.X that don't exist in the OSKit today.
+
+To test any of the work in this project you first need to upgrade the OSKit to Linux 2.2.22 (or later) using my patches below. The first stage deals with network drivers, 10 and 100 Mbps. Gigabit ethernet I have no possibility to test ... so they are **not** included.
+
+I may, at a later date, also include updates to drivers by Donald Becker. See the drivers at <http://www.scyld.com/network/>
+
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <th bgcolor="#99CCCC"><strong>Part</strong></th>
+ <th bgcolor="#99CCCC"><strong>Brief description</strong></th>
+ <th bgcolor="#99CCCC"><strong>DIFF</strong></th>
+ <th bgcolor="#99CCCC"><strong>Date</strong></th>
+ </tr>
+ <tr>
+ <td> 2.2.22-NET </td>
+ <td> Adds more Linux NIC drivers </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.22-net.diff.gz" target="_top">patch-oskit-linux-2.2.22-net.diff.gz</a></td>
+ <td align="right"> Dec 26, 2002 </td>
+ </tr>
+</table>
+
+**_Added NICs:_**
+
+* 3Com 3c515
+* D-Link DE-600, DE-620
+* Davicom DM9102(A)/DM9132/DM9801
+* N2k-PCi, NE2000 PCI-based cards
+* PCNet32
+* RealTek RTL8139
+* SiS 900/7016
+* ThunderLAN
+* VIA Rhine
+
+### <a name="OSKit_Upgrade_existing_Linux_dri"> </a> OSKit - Upgrade existing Linux drivers
+
+ The OSKit itslef is currently at Linux version 2.2.12 for most of its drivers. The objective of this project was to upgrade to 2.2.22. I will of course also provide upgrades to upcoming revisions of the 2.2.x series, but they have a low priority right now. Please note:
+
+* The patches are cummulative, i.e., you only need one.
+* The patches only upgrade existing OSKit drivers, they don't add support for new ones. Unlike the corresponding Linux patches.
+
+To build [[Mach/OskitMach]] you also need some other [[Mach/OskitPatches]]. As well as two unofficial GNUmach2 patches. See Daniel Wagners post to bug-hurd, <http://mail.gnu.org/pipermail/bug-hurd/2002-December/011134.html>, or the [[Mach/OskitMachPatches]].
+
+**_Tested NICs:_**
+
+Testbed: Intel AL440LX mobo 128MiB RAM (only 64MiB detected by Grub 0.93).
+
+* Digital Equipment Corp. Etherworks Turbo PCI Controller DE435 - digital Tulip 21040-AA
+* 3Com 3C905B-TXNM Fast Etherlink XL PCI - Parallel Tasking II 3Com 40-0483-004
+* RTL8139
+
+**_Untested NICs:_**
+
+These I have and will test eventually
+
+* Western Digital 10 Mbps ISA - WD8003EBT
+* SMC Ultra 16 ISA
+* NE1000/2000
+
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <th bgcolor="#99CCCC"><strong>Part</strong></th>
+ <th bgcolor="#99CCCC"><strong>Brief description</strong></th>
+ <th bgcolor="#99CCCC"><strong>DIFF</strong></th>
+ <th bgcolor="#99CCCC"><strong>Date</strong></th>
+ <th bgcolor="#99CCCC"><strong>Verified?</strong></th>
+ </tr>
+ <tr>
+ <td> 2.2.13 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.13 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.13.diff.gz" target="_top">patch-oskit-linux-2.2.13.diff.gz</a></td>
+ <td> Oct 27, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.14 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.14 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.14.diff.gz" target="_top">patch-oskit-linux-2.2.14.diff.gz</a></td>
+ <td> Oct 30, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.15 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.15 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.15.diff.gz" target="_top">patch-oskit-linux-2.2.15.diff.gz</a></td>
+ <td> Oct 31, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.16 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.16 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.16.diff.gz" target="_top">patch-oskit-linux-2.2.16.diff.gz</a></td>
+ <td> Oct 31, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.17 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.17 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.17.diff.gz" target="_top">patch-oskit-linux-2.2.17.diff.gz</a></td>
+ <td> Nov 1, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.18 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.18 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.18.diff.gz" target="_top">patch-oskit-linux-2.2.18.diff.gz</a></td>
+ <td> Nov 1, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.19 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.19 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.19.diff.gz" target="_top">patch-oskit-linux-2.2.19.diff.gz</a></td>
+ <td> Nov 4, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.20 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.20 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.20.diff.gz" target="_top">patch-oskit-linux-2.2.20.diff.gz</a></td>
+ <td> Nov 5, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.21 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.21 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.21.diff.gz" target="_top">patch-oskit-linux-2.2.21.diff.gz</a></td>
+ <td> Nov 5, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.22 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.22 </td>
+ <td><a href="http://gnufans.org/joachim/hurd/patch-oskit-linux-2.2.22.diff.gz" target="_top">patch-oskit-linux-2.2.22.diff.gz</a></td>
+ <td> Nov 5, 2002 </td>
+ <td> Yes (1) </td>
+ </tr>
+ <tr>
+ <td> 2.2.23 </td>
+ <td> Upgrade from Linux 2.2.12 to 2.2.23 </td>
+ <td> [[][patch-oskit-linux-2.2.23.diff.gz]] </td>
+ <td> Not yet </td>
+ <td>   </td>
+ </tr>
+</table>
+
+**_Notes:_**
+
+1. Yes, the patch has been tested using the latest CVS version (HEAD) of GNUmach. Verified means that I have verified that GNUmach can be built, booted successfully (using IDE and various NICs).
+
+## <a name="Future_Work"> Future Work </a>
+
+1. Try to enable GNUmach to use the [[TWiki/FreeBSD]] drivers in the OSKit.
+2. Port a simple DHCP client (udhcp perhaps?).
+3. Enable the sound drivers in the OSKit -- port a useful sound daemon.
+4. SMP support for GNUmach2 - Current OSKit is broken.
+
+### <a name="TWiki_FreeBSD_NIC_drivers_for_GN"> </a> [[TWiki/FreeBSD]] NIC drivers for GNUmach
+
+ I have looked into this a bit. The PCI drivers are initialized from the PCI probe. GNUmach v2 uses the Linux PCI stuff which means the [[TWiki/FreeBSD]] probe will not run - this is probably solved in some ingenious way in the OSKit, maybe the COM interfaces, but I've yet to find out more about that.
+
+----
+
+ Feel free to contact me if you have any comments or suggestions.
+
+-- [[Main/JoachimNilsson]] - Feb 19th 2003
+
+## <a name="Comments"> Comments </a>
+
+Go Joachim! Great work!
+
+-- [[Main/GrantBow]] - 11 Nov 2002
diff --git a/Hurd/JuanAlvarezHurdPage.mdwn b/Hurd/JuanAlvarezHurdPage.mdwn
new file mode 100644
index 00000000..60720a38
--- /dev/null
+++ b/Hurd/JuanAlvarezHurdPage.mdwn
@@ -0,0 +1,3 @@
+Hurd information - Juan Alvarez
+
+-- [[Main/JuanAlvarez]] - 08 Jun 2002
diff --git a/Hurd/KbdTranslator.mdwn b/Hurd/KbdTranslator.mdwn
new file mode 100644
index 00000000..708c2308
--- /dev/null
+++ b/Hurd/KbdTranslator.mdwn
@@ -0,0 +1 @@
+-- [[Main/LoganadenVelvindron]] - 11 Dec 2004
diff --git a/Hurd/KernelCousinDebianHurd.mdwn b/Hurd/KernelCousinDebianHurd.mdwn
new file mode 100644
index 00000000..1ff8a698
--- /dev/null
+++ b/Hurd/KernelCousinDebianHurd.mdwn
@@ -0,0 +1,3 @@
+[Kernel Traffic](http://www.kerneltraffic.org/) publishes newsletters that track the technical developments of various projects of the Free and Open Source world. [Newsletters for the Hurd development](http://www.kerneltraffic.org/debian-hurd/archives.html) were published, but not anymore.
+
+Updated status. -- [[Main/OgnyanKulev]] - 18 Sep 2004
diff --git a/Hurd/KnownHurdLimits.mdwn b/Hurd/KnownHurdLimits.mdwn
new file mode 100644
index 00000000..9842903b
--- /dev/null
+++ b/Hurd/KnownHurdLimits.mdwn
@@ -0,0 +1,42 @@
+## <a name="Known_Limitations_and_Fixes"> Known Limitations and Fixes </a>
+
+When comparing the Hurd (and its GNUMach microkernel) to alternatives please remember that the last released version number is 0.3. For example, Linux, the kernel, took awhile to mature. The Debian GNU/Hurd system is developing rapidly. Assistance with programming and support tasks is greatly appreciated. The general [Hardware Compatibility Guide](http://www.freesoftware.fsf.org/thug/gnumach_hardware.html) is another good reference.
+
+Now, the list of known limitations of the Hurd.
+
+* ~1.5+ GB ext2 partition size limit
+ * See [[ExtTwoSize]]
+ * The problem is fixed in the Debian GNU/Hurd distribution
+
+* Missing device drivers.
+ * Current GNUMach drivers are from Linux 2.0.
+ * [[Mach/OskitMach]] currently has Linux 2.2 drivers.
+
+* Swap is [highly recommended](http://www.gnu.org/software/hurd/faq.en.html#q2-7), like on UNIX systems.
+
+* Minimum of 8 MB RAM has been reported to work, but 32 MB is more realistic. Don't forget to use plenty of swap space.
+
+* Random devices, /dev/random and /dev/urandom, are not in the main distribution yet. These are needed by, for instance, OpenSSH.
+ * In progress, see [[RandomDevice]]
+
+* No DHCP client will work yet.
+ * See [[DhcpClient]] - need to update TCP/IP server.
+
+* There are some [[Distrib/SystemAPILimits]]
+
+* Sound support missing
+ * [[Mach/OskitMach]] can provide, but no work yet
+
+* PPP support, e.g., um-pppd missing.
+ * See [[PppDaemon]]
+
+* USB support is missing
+
+* `fatfs` translator is stabilizing, and it does not have partition limits that get in the way. ([0\.4 released Oct 6, 2002](http://mail.gnu.org/pipermail/bug-hurd/2002-October/010576.html))
+
+* [Ext3 implementation](http://debian.fmi.uni-sofia.bg/~ogi/hurd/ext3fs/) is very unstable.
+
+* Portability between alternate microkernels, e.g., [darwin](http://developer.apple.com/darwin/) &amp; [L4](http://os.inf.tu-dresden.de/L4/)
+
+* Stability issues
+ * [[ZallocPanics]]
diff --git a/Hurd/KnownLimitForm.mdwn b/Hurd/KnownLimitForm.mdwn
new file mode 100644
index 00000000..7650171d
--- /dev/null
+++ b/Hurd/KnownLimitForm.mdwn
@@ -0,0 +1,27 @@
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <th bgcolor="#99CCCC"><strong>Name</strong></th>
+ <th bgcolor="#99CCCC"><strong>Type</strong></th>
+ <th bgcolor="#99CCCC"><strong>Size</strong></th>
+ <th bgcolor="#99CCCC"><strong>Values</strong></th>
+ <th bgcolor="#99CCCC"><strong>Tooltip message</strong></th>
+ </tr>
+ <tr>
+ <td>[[LeadDeveloper]]</td>
+ <td> Text </td>
+ <td> 25 </td>
+ <td>   </td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td>[[NeedsHelp]]</td>
+ <td> Radio </td>
+ <td> 2 </td>
+ <td> Yes, No </td>
+ <td>   </td>
+ </tr>
+</table>
+
+This TWiki form is for the pages that link to [[KnownHurdLimits]].
+
+-- [[Main/GrantBow]] - 20 Oct 2002
diff --git a/Hurd/LeadDeveloper.mdwn b/Hurd/LeadDeveloper.mdwn
new file mode 100644
index 00000000..1d80376f
--- /dev/null
+++ b/Hurd/LeadDeveloper.mdwn
@@ -0,0 +1,5 @@
+This is the name of the Developer who should act as a central point of contact regarding status or proposed changes.
+
+-- [[Main/GrantBow]] - 20 Oct 2002
+
+TODO - add search to show developoers that have been assigned at least one item so far.
diff --git a/Hurd/LiveCD.mdwn b/Hurd/LiveCD.mdwn
new file mode 100644
index 00000000..7b80b79a
--- /dev/null
+++ b/Hurd/LiveCD.mdwn
@@ -0,0 +1,14 @@
+# <a name="GNU_Hurd_Live_CD"> </a> GNU/Hurd Live-CD
+
+It would be nice if we had a bootable Hurd [LiveCD](http://en.wikipedia.org/wiki/LiveCD) like Knoppix, Morphix or Damn Small Linux. It would be useful for those who want to try out the Hurd before they commit to installing it on their hard disks. In addition to that, a bootable Hurd CD would enable us to have a native installer instead of relying on Linux.
+
+* [[RequirementsForLiveCD]]
+* [[BuildingHurdLiveCD]]
+
+You can download a gzipped iso of a Hurd Live CD at:
+
+* <http://www.superunprivileged.org/hurd/live-cd/>
+
+The Superunpriveleged crew also offers a tiny Hurd Live CD that is under 10 megabytes:
+
+* <http://www.superunprivileged.org/hurd/tiny-cd/>
diff --git a/Hurd/LiveCd.mdwn b/Hurd/LiveCd.mdwn
new file mode 100644
index 00000000..82f4d172
--- /dev/null
+++ b/Hurd/LiveCd.mdwn
@@ -0,0 +1 @@
+See [[LiveCD]]
diff --git a/Hurd/LuisBustamanteHurdPage.mdwn b/Hurd/LuisBustamanteHurdPage.mdwn
new file mode 100644
index 00000000..abbf1531
--- /dev/null
+++ b/Hurd/LuisBustamanteHurdPage.mdwn
@@ -0,0 +1,11 @@
+Nothing much to see right now, I'll add some stuff I'm working in the near future! :)
+
+Cheers,
+
+-- [[Main/LuisBustamante]] - 16 May 2002
+
+After making some trivial/incorrect patches (thanks Neal :) for building um-pppd with gcc 3.0.4 in Debian (see [\#147085](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=147085&repeatmerged=yes)) this weekend I'll finally give it a try, I got an external modem... anyway serial drivers seem to be broken in GNUmach iirc, I won't get much more than 300b/s :).
+
+Keep Hurding!
+
+-- [[Main/LuisBustamante]] - 17 May 2002
diff --git a/Hurd/MagicTranslator.mdwn b/Hurd/MagicTranslator.mdwn
new file mode 100644
index 00000000..c2774d19
--- /dev/null
+++ b/Hurd/MagicTranslator.mdwn
@@ -0,0 +1,11 @@
+The magic translator provides /dev/fd.
+
+ $ showtrans /dev/fd
+ /hurd/magic --directory fd
+
+The /dev/fd directory holds the open file descriptors for your current process. You can't see them with \`ls -l /dev/fd/' but you can see them individually like this:
+
+ $ ls -l /dev/fd/0
+ crw--w---- 1 bing tty 0, 0 Nov 19 18:00 /dev/fd/0
+
+-- [[Main/BenAsselstine]] - 19 Nov 2006
diff --git a/Hurd/MailLists.mdwn b/Hurd/MailLists.mdwn
new file mode 100644
index 00000000..f28a53a2
--- /dev/null
+++ b/Hurd/MailLists.mdwn
@@ -0,0 +1,49 @@
+## <a name="Mailing_Lists"> Mailing Lists </a>
+
+Lists are unmoderated and hosted on <http://mail.gnu.org> unless otherwise marked.
+
+<dl>
+ <dt><a href="http://mail.gnu.org/mailman/listinfo/hurd-devel" target="_top">hurd-devel</a></dt>
+ <dd> web <a href="http://mail.gnu.org/pipermail/hurd-devel/" target="_top">archives</a> - main technical list. This is <em>moderated</em> and <em>restricted</em>; subscribe to <code>hurd-devel-readers</code> instead. The Hurd is being ported to the L4 microkernel and most technical activity can be found in the <code>l4-hurd</code> list. </dd>
+ <dt><a href="http://mail.gnu.org/mailman/listinfo/hurd-devel-readers" target="_top">hurd-devel-readers</a></dt>
+ <dd><em>read only</em> version of <code>hurd-devel</code>. To avoid duplication with the <code>hurd-devel</code> archives, the <code>hurd-devel-readers</code> archives are turned off. </dd>
+ <dt><a href="http://mail.gnu.org/mailman/listinfo/help-hurd" target="_top">help-hurd</a></dt>
+ <dd> web <a href="http://mail.gnu.org/pipermail/help-hurd/" target="_top">archives</a> - ask <strong>Hurd specific</strong> questions here. </dd>
+ <dt><a href="http://mail.gnu.org/mailman/listinfo/bug-hurd" target="_top">bug-hurd</a></dt>
+ <dd> web <a href="http://mail.gnu.org/pipermail/bug-hurd/" target="_top">archives</a> - technical debugging and discussion. </dd>
+ <dt> hurd-private</dt>
+ <dd> it's private, no archives are available. </dd>
+</dl>
+
+<dl>
+ <dt><a href="http://www.debian.org/MailingLists/subscribe" target="_top">debian-hurd</a></dt>
+ <dd> web <a href="http://lists.debian.org/debian-hurd/" target="_top">archives</a> - general system discussion, packaging, integration. Ask <strong>general</strong> questions here. <em>Debian hosted</em>. </dd>
+</dl>
+
+<dl>
+ <dt><a href="http://mail.gnu.org/mailman/listinfo/thug" target="_top">thug</a></dt>
+ <dd> web <a href="http://mail.gnu.org/pipermail/thug/" target="_top">archives</a> - Toronto-area Hurd Users Group and discussion. </dd>
+</dl>
+
+<dl>
+ <dt><a href="http://mail.gnu.org/mailman/listinfo/web-hurd" target="_top">web-hurd</a></dt>
+ <dd> web <a href="http://mail.gnu.org/pipermail/web-hurd/" target="_top">archives</a> - discussion of web pages at <a href="http://hurd.gnu.org" target="_top">http://hurd.gnu.org</a>. </dd>
+ <dt><a href="http://mail.gnu.org/mailman/listinfo/l4-hurd" target="_top">l4-hurd</a></dt>
+ <dd> web <a href="http://mail.gnu.org/pipermail/l4-hurd/" target="_top">archives</a> - theoretical kernel development. </dd>
+</dl>
+
+<dl>
+ <dt><a href="http://mail.gnu.org/mailman/listinfo/bug-grub" target="_top">bug-grub</a></dt>
+ <dd><em>moderated list</em>, web <a href="http://mail.gnu.org/pipermail/bug-grub/" target="_top">archives</a> - technical debugging and discussion. </dd>
+</dl>
+
+[Hurd Traffic](http://www.kerneltraffic.org/debian-hurd/).
+
+ P.S.
+ There does not exist any "stupid" questions!
+ We have all been beginners.
+ D.S.
+
+The discussion reference page is <http://www.gnu.org/software/hurd/help.html>
+
+See also the [[Hurd/HurdIRC]] topic.
diff --git a/Hurd/MakeImage.mdwn b/Hurd/MakeImage.mdwn
new file mode 100644
index 00000000..95b928c4
--- /dev/null
+++ b/Hurd/MakeImage.mdwn
@@ -0,0 +1,60 @@
+## <a name="Make_a_disk_image"> Make a disk image </a>
+
+This is just a reminder to myself currently.
+
+ /bin/dd if=/dev/zero of=gnu.img count=224000
+ /sbin/sfdisk -C 58 -H 16 -S 63 -D gnu.img<<EOT
+ ,,83,*,0,1,1
+
+ EOT
+ losetup -o 32256 /dev/loop0 gnu.img
+ mke2fs -o hurd -L GNU -b 4096 /dev/loop0
+
+## <a name="Install_GNU_Hurd"> </a> Install GNU/Hurd
+
+ mkdir image
+ mount /dev/loop0 image
+ cd image/
+ /usr/share/crosshurd/makehurddir.sh `pwd` i386 gnu
+ cd ..
+ umount image
+ losetup -d /dev/loop0
+
+## <a name="Make_Boot_ISO"> </a> Make Boot ISO
+
+I use this for testing OSKit...
+
+ mkdir -p iso/boot/grub
+ cp /lib/grub/i386-pc/stage2_eltorito iso/boot/grub/
+ cp oskit-mach.gz iso/boot/
+ cat >iso/boot/grub/menu.lst << EOF
+ title GNUmach 2.0 (OSKit-Mach)
+ root (cd)
+ kernel /boot/oskit-mach.gz root=device:hd0s1 --
+ root (hd0,0)
+ module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} -T typed ${root} $(task-create) \
+ $(task-resume)
+ module /lib/ld-2.3.2.so /hurd/exec $(exec-task=task-create)
+
+ title GNU/Hurd (GNUmach 1.3)
+ root (hd0,0)
+ kernel /boot/gnumach.gz root=device:hd0s1
+ module /hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} \
+ --host-priv-port=${host-port} --device-master-port=${device-port} \
+ --exec-server-task=${exec-task} -T typed ${root} $(task-create) \
+ $(task-resume)
+ module /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+ EOF
+ mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 \
+ -boot-info-table -o grub.iso iso
+
+## <a name="Booting_Qemu"> Booting Qemu </a>
+
+ qemu -user-net -isa -boot d -cdrom grub.iso -hda gnu.img
+
+The switch `-isa` is for current gnumach.gz on hda.
+
+-- [[Main/JoachimNilsson]] - 11 Apr 2005
diff --git a/Hurd/ManuelValderramaHurdPage.mdwn b/Hurd/ManuelValderramaHurdPage.mdwn
new file mode 100644
index 00000000..d8d4cc00
--- /dev/null
+++ b/Hurd/ManuelValderramaHurdPage.mdwn
@@ -0,0 +1,11 @@
+-- [[Main/ManuelValderrama]] - 02 Aug 2002
+
+Manuel Pav�n Valderrama, a hurd user; I'm actually writing some documents about the hurd, mostly in spanish. You can find them at:
+
+<http://es.gnu.org/~mvalderrama>
+
+I also contribute from time to time in the preparation of a spanish hurd-wiki:
+
+[http://www.es.gnu.org/cgi-bin/hurdeswiki.pl?Wiki\_HURDes](http://www.es.gnu.org/cgi-bin/hurdeswiki.pl?Wiki_HURDes)
+
+----
diff --git a/Hurd/MicroKernelFUD.mdwn b/Hurd/MicroKernelFUD.mdwn
new file mode 100644
index 00000000..b48d2c96
--- /dev/null
+++ b/Hurd/MicroKernelFUD.mdwn
@@ -0,0 +1 @@
+This page has moved to a [[Mach/MicroKernelFUD]].
diff --git a/Hurd/MicrokernelCoyotos.mdwn b/Hurd/MicrokernelCoyotos.mdwn
new file mode 100644
index 00000000..40fd6e9d
--- /dev/null
+++ b/Hurd/MicrokernelCoyotos.mdwn
@@ -0,0 +1,9 @@
+# <a name="The_Coyotos_microkernel"> The Coyotos microkernel </a>
+
+[Coyotos](http://www.coyotos.org/index.html) is a microkernel and OS and the successor of EROS, that itself is the successor of KeyKOS. A more complete history can be found [here](http://www.coyotos.org/history.html). It's main objectives are to correcte some shortcomings of EROS, demonstrate that an atomic kernel design scales well and to completely formally verify both the kernel and critical system components by writing them in a new language called bitc.
+
+Coyotos is an orthogonally persistent pure capability system. It uses continuation based unbuffered asynchronous IPC (actually it's synchronous IPC whith asynchronous syscalls).
+
+TODO: explain these terms and (more important) their consequences on system design.
+
+The coyotos microkernel specification can be found [here](http://www.coyotos.org/docs/ukernel/spec.html)
diff --git a/Hurd/NeedsHelp.mdwn b/Hurd/NeedsHelp.mdwn
new file mode 100644
index 00000000..12a481cd
--- /dev/null
+++ b/Hurd/NeedsHelp.mdwn
@@ -0,0 +1,5 @@
+Even if there is a lead developer this person may not have enough time or technical bandwidth to handle all issues relating to this issue. If you are a developer and would like to help with overcoming this limit please contact the developer or the <bug-hurd@gnuNOSPAM.org> mail list.
+
+-- [[Main/GrantBow]] - 20 Oct 2002
+
+TODO - search showing features that need help.
diff --git a/Hurd/NeighborHurd.mdwn b/Hurd/NeighborHurd.mdwn
new file mode 100644
index 00000000..5a9020fc
--- /dev/null
+++ b/Hurd/NeighborHurd.mdwn
@@ -0,0 +1,3 @@
+<http://www.gnu.org/software/hurd/howto/subhurd.html>
+
+-- [[Main/GrantBow]] - 21 Jan 2003
diff --git a/Hurd/NewbieQuestions.mdwn b/Hurd/NewbieQuestions.mdwn
new file mode 100644
index 00000000..8b95b4ad
--- /dev/null
+++ b/Hurd/NewbieQuestions.mdwn
@@ -0,0 +1,3 @@
+This page has moved to [[FrequentlyAskedQuestions]]. :-)
+
+-- [[Main/GrantBow]] - 22 Dec 2002
diff --git a/Hurd/NextHurd.mdwn b/Hurd/NextHurd.mdwn
new file mode 100644
index 00000000..266ee9ea
--- /dev/null
+++ b/Hurd/NextHurd.mdwn
@@ -0,0 +1,82 @@
+# <a name="Next_Hurd"> Next Hurd </a>
+
+There is an effort to create a completely new system design (for now called ngHurd, or Hurd-ng or HurdNG), which originated from the Hurd/L4 port.
+
+The original Hurd/L4, which was meant to be mostly a direct port of the existing Hurd design to a new microkernel, has been abandoned by it's main developers, because some technical issues with the L4 Pistachio kernel turned out to be very fundamental. While reeveluating the design (and upcoming new L4 variants), the developers picked up some new ideas, and decided that now they rather want to work on a completely different design, which combines some of the original Hurd ideas with concepts from Jonathan Shapiro's high security EROS and Coyotos systems.
+
+There has been numerous endless discussions on the l4-hurd mailing list about these new ideas. This page tries to sum up the major discussions.
+
+## <a name="Why_ngHurd"> Why ngHurd </a>
+
+This section explains the motivations behind the new design:
+
+* [[IssuesWithMach]]
+* [[IssuesWithL4Pistachio]]
+* [[LimitationsOfOriginalHurdDesign]]
+
+## <a name="Work_already_done"> Work already done </a>
+
+A [position paper](http://walfield.org/papers/20070104-walfield-access-decomposition-policy-refinement.pdf) by Marcus Brinkmann and Neal H. Walfield can be found.
+
+A draft specification of the Hurd-NG interfaces has been, but is no longer, available.
+
+A [critique](http://walfield.org/papers/20070111-walfield-critique-of-the-GNU-Hurd.pdf) of the original Hurd is work is available.
+
+## <a name="Subjects"> Subjects </a>
+
+### <a name="Design_processus"> Design processus </a>
+
+* [[DesignGoals]]
+* [[RequirementsForUser]]
+* [[DesignPrinciples]]
+* [[Philosophy]]
+
+### <a name="Concepts"> Concepts </a>
+
+* [[CapabilityBasedMicrokernel]]
+* [[FirstClassReceiveBuffer]]
+* [[PowerBox]]
+* [[WhatIsACapability]]
+* [[WhatIsAConstructor]]
+* [[WhatIsASpacebank]]
+* [[TrivialConfinementVsConstructorVsFork]]
+* [[CopyVsRevocableCopyVsMap]]
+* [[SetuidVsConstructor]]
+* [[HurdishApplicationsForPersistence]]
+* [[WhatsInAGroup]]
+* [[ThePolycastInterface]]
+* [[PermissionBits]]
+* [[CancellationForwarding]]
+
+### <a name="Problems_to_solve"> Problems to solve </a>
+
+* [[HowMuchConfinementDoWeWant]]
+* [[SharedLibraries]]
+* [[PathMax]]
+
+### <a name="Implementation"> Implementation </a>
+
+* [[ChoiceOfMicrokernel]]
+* [[HurdInterafaces]]
+* [[PosixLayer]]
+* [[SystemStructure]]
+
+### <a name="Use_Cases"> Use Cases </a>
+
+_please move me somewhere better! [[SamMason]]_
+
+* [[UseCaseUserFileSystem]]
+* [[UseCasePrivateKeys]]
+
+### <a name="Organization"> Organization </a>
+
+Summaries should obey the following structure:
+
+* if there is a consensus, it is clearly described
+* if controversial points remain, there are also described after the consenus
+* if no choice has been clearly made, all valid positions are descrbied
+* withdrawed and invalid positions (prooved wrong, unrealistic, contradictory to some design principle, etc.) should be described only very briefly, and developed in a separate article
+
+Each time a point seems to be overly long with respect to the rest of the article, it should be summarized in place and developed in a separate article.
+
+-- [[Main/NowhereMan]] - 21 Apr 2006
diff --git a/Hurd/OpenSource.mdwn b/Hurd/OpenSource.mdwn
new file mode 100644
index 00000000..e51aa9f7
--- /dev/null
+++ b/Hurd/OpenSource.mdwn
@@ -0,0 +1,15 @@
+# <a name="Brief_summary"> Brief summary </a>
+
+As stated by the Open Source Initiative on their home page:
+
+"The basic idea behind open source is very simple: When programmers can read, redistribute, and modify the source code for a piece of software, the software evolves. People improve it, people adapt it, people fix bugs. And this can happen at a speed that, if one is used to the slow pace of conventional software development, seems astonishing.
+
+We in the open source community have learned that this rapid evolutionary process produces better software than the traditional closed model, in which only a very few programmers can see the source and everybody else must blindly use an opaque block of bits."
+
+-- <http://www.opensource.org/>
+
+Unlike [[FreeSoftware]], [[OpenSource]] does not put as much emphasis into the issue as the [Free Software Foundation](http://www.fsf.org). Several open source licenses exist, including the traditional [[GeneralPublicLicense]], GPL.
+
+In the spirit of keeping things short, please read up on the various licenses on their respective home pages.
+
+-- [[Main/JoachimNilsson]] - 11 May 2002
diff --git a/Hurd/OskitL4.mdwn b/Hurd/OskitL4.mdwn
new file mode 100644
index 00000000..95277e3f
--- /dev/null
+++ b/Hurd/OskitL4.mdwn
@@ -0,0 +1,3 @@
+This page has been moved to [[Trash/PortToL4]].
+
+-- [[Main/GrantBow]] - 03 Nov 2002
diff --git a/Hurd/OskitMach.mdwn b/Hurd/OskitMach.mdwn
new file mode 100644
index 00000000..e6366875
--- /dev/null
+++ b/Hurd/OskitMach.mdwn
@@ -0,0 +1,3 @@
+This page has moved to a [[Mach/OskitMach]].
+
+-- [[Main/GrantBow]] - 07 Dec 2002
diff --git a/Hurd/OskitMachStatusList.mdwn b/Hurd/OskitMachStatusList.mdwn
new file mode 100644
index 00000000..ef20d250
--- /dev/null
+++ b/Hurd/OskitMachStatusList.mdwn
@@ -0,0 +1,3 @@
+This page has moved to a [[Mach/OskitMachStatusList]].
+
+-- [[Main/GrantBow]] - 07 Dec 2002
diff --git a/Hurd/Part1OwnershipAndContracts.mdwn b/Hurd/Part1OwnershipAndContracts.mdwn
new file mode 100644
index 00000000..a5260bc6
--- /dev/null
+++ b/Hurd/Part1OwnershipAndContracts.mdwn
@@ -0,0 +1,163 @@
+# <a name="Part_1_Ownership_And_Contracts"> Part 1: Ownership And Contracts </a>
+
+This is the first in a series of notes that will serve to formulate my position from ground-up. The way will not be straight-forward. I can not give you one particular, technical argument that addresses all my concerns. Instead, the evaluation involves a step of personal judgement (but only one). In this note, I will explain why I believe that this is necessarily the case, what this step is and what my stance on it is.
+
+This mail took me 5 hours to write, which means 1.5 lines per minute. It contains only a tiny part of my argument. I hope that this removes any doubts about my sincerity to address all issues, but also makes apparent the technical constraints in doing so "immediately", as has been requested from me several times. I have to ask for patience. As everybody else, I am doing this in my spare time.
+
+Let me jump right in at the technical level: I claim that every relationship between two processes falls into one of four categories. These four coarse categories provide a differentiation that is sufficient for my argument:
+
+## <a name="Process_Relationship_Categories"> Process Relationship Categories </a>
+
+0. It is not possible for the processes to communicate via direct IPC.
+
+In all other categories, it is possible for the processes to communicate via direct IPC, because one of the processes, let me call it process A, has a capability to the other process, let me call it B.
+
+1. The collective authority of process B, immediately[1] after the time it was instantiated, is necessarily a strict subset of the collective authority hold by process A at that time.
+
+[1] See my challenge-email to find a definition of the window of time that gives meaning to the word "immediately" in the case where process B is instantiated indirectly or directly because of an action in process A. If process B is instantiated independent of process A, just assume that the collective authority hold by process A is the empty set.
+
+2. The set of collective authority of process B, immediately after the time it was instantiated, minus the collective authority of process A (if it existed), is necessarily not empty. Some of the capabilities in this non-empty set provide the ability to write-out.
+
+3. The set of collective authority of process B, immediately after the time it was instantiated, minus the collective authority of process A (if it existed), is necessarily not empty. None of the capabilities in this non-empty set provide the ability to write-out.
+
+This categorization does not say anything about encapsulation. However, it is to be understood from the description that in category 0, 2 and 3, process B is encapsulated. If it were not, the collective authority that is hold by A would include the authority of B by transition. In category 1, it is to be understood that process B, in principle, can not be successfully encapsulated (to see this, pay attention to the fact that process A could pre-arrange its authority so that no capability it has provides the possibility for encapsulation).
+
+This categories provide a complete categorization for two important system structures: The EROS/Coyotos model, which relies on categories 0, 2 and 3, while making category 1 possible. And my recursive system structure model, which relies on categories 0, 1, and 2, but rejects 3.
+
+## <a name="Agenda"> Agenda </a>
+
+This provides the basis for a goal-based analysis. The agenda can be:
+
+1) It has to be demonstrated that the goals of the Hurd can be met by relying on the process relationships described by 0, 1 and 2. This of course must include an analysis of the goals of the Hurd.
+
+2) It is useful to reason about the rejection of category 3. What do we lose by omitting it? What goals can not be achieved by the Hurd if it rejects category 3?
+
+This sets the background. I will start with the second item on the list, and then work my way up. It would not be unreasonable to do it the other way around: I could state the goals of the Hurd, then demonstrate that we can achieve them by using the model I described earlier, and then look at the interaction with category 3 relationships. This would be the straighter way. However, a discussion of the goals of the Hurd can be easier followed if the background is set. So, let me finish this note with some general arguments about the properties of category 3, and what the factors can be that determine how you think about it.
+
+## <a name="Encapsulation_and_Confinement"> Encapsulation and Confinement </a>
+
+What is the exact nature of the relationship between process A and process B, where communication can (and does) occur, but process B is both encapsulated and confined? To discuss this, we have to define what we mean by the nature of process relationships. Two concepts come into my mind: Ownership and contracts. What do these words mean?
+
+In the course of the discussion, I will make use of citations from Hegel's Philosophy of Right. I am not relying on his argumentation, it is just a convenient source for some definitions, from which I want to work.
+
+## <a name="Ownership"> Ownership </a>
+
+Ownership is not a complicated concept. You can look it up in encyclopedias or dictionaries, or you can study philosophy. Hegel defines ownership this way (Paragraph 61):
+
+"Since the substance of the thing which is my property is, if we take the thing by itself, its externality, i.e. its non-substantiality --- in contrast with me it is not an end in itself (see � 42) and since in my use or employment of it this externality is realised, it follows that my full use or employment of a thing is the thing in its entirety, so that if I have the full use of the thing I am its owner. Over and above the entirety of its use, there is nothing left of the thing which could be the property of another."
+
+A shorter definition is that ownership is the exclusive right of a person to possess, use and dispose of a thing. Note that the right must be exclusive. It must also be complete. Also note that ownership refers to human beings, not things. Things can not own other things. Paragraph 42 in Hegel's work defines:
+
+"What is immediately different from free mind is that which, both for mind and in itself, is the external pure and simple, a thing, something not free, not personal, without rights."
+
+## <a name="Contracts"> Contracts </a>
+
+Hegel describes the transition from ownership to contracts in paragraph 71 this way:
+
+"One aspect of property is that it is an existent as an external thing, and in this respect property exists for other external things and is connected with their necessity and contingency. But it is also an existent as an embodiment of the will, and from this point of view the 'other' for which it exists can only be the will of another person. This relation of will to will is the true and proper ground in which freedom is existent. --- The sphere of contract is made up of this mediation whereby I hold property not merely by means of a thing and my subjective will, but by means of another person's will as well and so hold it in virtue of my participation in a common will."
+
+A contract is thus an agreement among agents to hold a property by means of a common will.
+
+## <a name="Mediating_Actors"> Mediating Actors </a>
+
+In the case of confinement and encapsulation, there are not just two agents engaging in a contract, there are three (at least). There must be three, because encapsulation and confinement means that neither the party that is encapsulated, nor the party that is confined comes to hold the other parties property. So, there must be a third agent which does hold both parties property, and which implements the common will of the participants.
+
+To find this agent, we just have to look for somebody who comes to hold the other parties property. In computer systems without "trusted computing" components, this is the owner of the machine (and/or the system administrator). In computer systems with "trusted computing" components, the mediating agent are the people or companies designing and building the "trusted computing" hardware.
+
+In either case, the mediating agent uses tools to implement the common will. In either case, the mediating agent has, not exclusive, but still quite complete ownership over the property that is part of the contract (possession, use and disposal). In either case, implementation of the common will depends on the well-behaviour of the mediating agent.
+
+## <a name="Contract_Requires_Consent"> Contract Requires Consent </a>
+
+If the mediating agent is supposed to implement the common will of the participants in a contract, it needs to know what the common will is. If a participant wants to engage in a contract, it needs to know what the contract means before the participant can make a proper judgement about participation.
+
+In the process of entering a contract, you are giving up, at least temporarily, possession of a thing you own. This is why entering a contract requires careful consideration and explicit consent.
+
+## <a name="Contracts_Are_Not_Private"> Contracts Are Not Private </a>
+
+I can not make the transition here from the rights of individuals to the structure and legitimation of civil societies. This is the subject matter of state philosophy. However, it suffices to say that the universal rights of individuals find (often, not always) expression in the laws of the civil society, and that it is civil society which is bestowed to resolve conflicts between the perceived particular rights of individuals.
+
+Because civil societies exist, and we live in them, and contracts are fundamental to the function of a society, every society has extensive and complex laws about how contracts are made, and what they can entail, and what their limitations are. The German Civil Code contains 2385 articles on 433 pages, and this is only one of the many laws that has something to say about the matter. There are other laws specific to contractual labor, anti-trust, publicly traded companies, publications, etc etc.
+
+## <a name="A_Matter_Of_Judgement"> A Matter Of Judgement </a>
+
+It is now appropriate to look again at the proposed system structures in their extremes (there are shades of gray, but they have not been seriously discussed so far).
+
+In my model, the computer remains the property of its owner. This property right is strongly protected. The system will not allow, by default, operations that let the owner unintentionally enter into a contract between two parties. Any such contract requires explicit consent. It also requires, every time that a contract is made, to explicitly choose the mediator and scope of the contract. In other words, the owner must be explicit about his particular will that should be part of the common will of the contract.
+
+In the EROS/Coyotos model employing "trusted computing", only part of the computer is the property of the owner. Another part of the computer is owned by the manufacturer of the "trusted computing" component. The system will, by design, perpetually give away possession of parts of the computer to other agents, by engaging constantly in contracts with them. The nature of these contracts is built firmly into the system structure: The mediator is always the agent that designed and implemented the "trusted computing" component. The default "common will" is to alienate all rights to the property, except the right to destroy it.
+
+These seem to me the only serious proposals. I recognize that my model makes it harder for people to engage into contracts when they want to. In my opinion, this is justified: Negotiating and implementing a contract is a fundamental process that can not be overly simplified. In fact, in any serious business, developing the contracts between collaborating agents is a very serious and essential part of the process. Business holders are acutely aware of the risks involved in engaging into a contract, and spent significant personnel and financial resources to limit their risks.
+
+There may be, in principle, a system that makes it convenient for users to engage in standard contracts selectively, explicitely and safely. For this, however, the mechanisms involved must allow for a broad range of expressions that reflects the structure of the existing society, and the user must be able to decide if the contract actually reflects the common will of the involved agents. This is far beyond what we can technically achieve, at least today, maybe forever.
+
+## <a name="On_The_Non_Technicality_Of_The_C"> On The Non-Technicality Of The Choice </a>
+
+Currently, we only know about the two possible extreme positions described above. There is an outstanding description of the properties of my model, and how they can be achieved. However, my claim is that the choice between these two options can not be made on technical grounds. Each system is self-consistent and provides an adequate solution to the task that it tries to solve.
+
+The choice therefore comes down to a personal preference, which may either be based on personal needs, or on a speculation on the future.
+
+However, let me raise some cautions that illustrate why I have made my choice the way I did. These cautions do not constitute an exhaustive list of my arguments. It is not necessary for me to give an exhaustive list. In the end, what system one would prefer to use is a personal decision that everybody has to make on their own grounds.
+
+## <a name="On_The_Effect_Of_Perpetual_Alien"> On The Effect Of Perpetual Alienation </a>
+
+Hegel remarks on the effect of perpetual alienation (my terminology) (paragraph 67):
+
+"Single products of my particular physical and mental skill and of my power to act I can alienate to someone else and I can give him the use of my abilities for a restricted period, because, on the strength of this restriction, my abilities acquire an external relation to the totality and universality of my being. By alienating the whole of my time, as crystallised in my work, and everything I produced, I would be making into another's property the substance of my being, my universal activity and actuality, my personality."
+
+He then continues to add a comparison to the nature of being a slave:
+
+"The distinction here explained is that between a slave and a modern domestic servant or day-labourer. The Athenian slave perhaps had an easier occupation and more intellectual work than is usually the case with our servants, but he was still a slave, because he bad alienated to his master the whole range of his activity."
+
+It is undisputed (I hope) that computers occupy more and more of our personal life. By doing so, they start to embody significant parts of our personality. We, as domain experts, are miles ahead of the general public in this regard, and it is our obligation to foresee such developments. By losing control over our computers, we risk losing the ability to act universally. This finds correspondence in the risk of losing general-purpose computers to [[TiVo]]-ized locked down embedded systems.
+
+## <a name="Passive_Defense_Is_Not_Sufficien"> Passive Defense Is Not Sufficient </a>
+
+The passive defense against this risk is not sufficient. You may hold the opinion that the "trusted computing" component is optional. The machine owner can switch it off, and ignore it. This is true, but it is true in the same way that people are free not to click on email attachments if they do not want to risk getting a virus. Security threats, and the risk of losing the substance of one's being is probably the biggest security threat of them all, requires active defense at all levels of the computer system.
+
+There have already been proposals for US law to require all computers to support "trusted computing", and to enforce its use when connecting to the internet. There are other methods of coercion as well. One method is to introduce a less harmful variant of control, and then change the conditions after it is widely established. Another method is the exploitation of a monopoly, or conspirations among large companies to ensure that there is no feasible alternative. Yet another method is to spread false information on how the technique will be used. All of these techniques and more have already been used, so these are not speculations, they are facts.
+
+Once you accept the loss of the substance of one's being as a security threat (I am not saying you need to accept that, but if you do, you will be able to follow my argument), all the same techniques and considerations apply to this security threat as to other security threats. And it is universally recognized (I hope) that passive defense is not sufficient in the context of active security threats.
+
+## <a name="Radical_Paradigm_Shifts"> Radical Paradigm Shifts </a>
+
+The "trusted computing" model embodies radical paradigm shifts in how some people think about ownership and contracts. Richard Stallman remarks (<http://www.gnu.org/philosophy/can-you-trust.html>):
+
+"A previous statement by the palladium developers stated the basic premise that whoever developed or collected information should have total control of how you use it. This would represent a revolutionary overturn of past ideas of ethics and of the legal system, and create an unprecedented system of control. The specific problems of these systems are no accident; they result from the basic goal. It is the goal we must reject."
+
+The idea that the agent who developed or collected information should be the sole arbitrator of how the information is used by other agents is in direct conflict with several social contracts on fair use, temporal boundaries on copyright protection, obligation to preserve information (for example audits, or evidence of a crime), and more.
+
+In short, the mediating agent (the implementors of the "trusted computing" component) is overreaching, in direct conflict to established laws. At the same time, for most people, organizations, businesses and in fact, quite a number of governments as well, the mediating agent will be unaccountable, because not only it will be represented by large companies that have assets at their disposal comparable to some of the smaller nations on the globe, but also, because the way the technology is implemented, it will be able to convincingly deny its own involvement (also, nominally, it is the only party which could have been involved in the matter at all).
+
+## <a name="On_The_Imbalance_Of_Defaults"> On The Imbalance Of Defaults </a>
+
+In the encapsulated, confined example, the confined party risks, by default, nothing, and the encapsulated party risks, by default, all the resources that is giving up temporarily, for the whole time of the contract, without any guarantee for a result.
+
+This is an imbalance of defaults from which a balanced, negotiated contract is difficult to achieve. I see no reason why it should be easier or harder to achieve a balanced, negotiated contract in either system. They start from two extremes, and the right solution is somewhere in the middle. However, my system does not contain a comparable mechanism which is imbalanced by default. Instead, every agent is in the same situation. Practically, I think that a balanced contract is more likely to be the result of equal starting conditions than from unequal starting positions.
+
+## <a name="Conservative_Choices"> Conservative Choices </a>
+
+In the above sense, my model is really ultra-conservative. The only assumption is that it is the owner of the computer who should be in control over it. This is in fact, a logical tautology. I do not make any further assumptions about what should be imposed.
+
+## <a name="The_Choice_Of_A_GNU_Generation"> </a> The Choice Of A GNU Generation
+
+If you read carefully the text by RMS on <http://www.gnu.org/philosophy/can-you-trust.html> you will find out that, although the text focusses on DRM, it really anticipates a much broader class of problems. The free software movement depends on the free software philosophy, it is its heart and soul. Even if you do not subscribe to the free software philosophy, you should be able to agree with the following statement:
+
+Every person on earth should be able to write useful computer programs and share them with their friends without fees.
+
+For this, several things are required: We must have access to hardware that obeys our command. If it doesn't, or even if it only makes it very hard, we can not write programs for it. We must have access to information about how to write useful programs. For this, we must learn, and one way to learn is to observe how the programs that our friends wrote work. Also, to write programs that are useful in the real world, we must be able to reverse-engineer other proprietary programs. We must be able to publish our own, original work unencumbered by legal problems like patents.
+
+All of these things must be easy, or otherwise our ability to do our work is in danger. In the context of this discussion, my model supports these operations easily. The "trusted computing" model puts them at such a high risk that it threatens the mere survival of free software.
+
+This is something that is very important to understand. It is highly unlikely that the GNU project would accept a technology that threatens its own survival. So, if you want to propose a use case for this technology for a GNU project, you have to demonstrate more than just that there are people who want to do this. You would have to demonstrate that the benefits compensate the risk. Because the risk is very serious and very great, the compensating benefit would have to be equally big. Because this is a GNU mailing list spawned off a GNU project with the intent to write an operating system for the GNU project, I think it is appropriate to point this out.
+
+This does not mean that I am not, personally, interested in hearing your ideas. Furthermore, and this is also important to understand, I do not believe anymore that there is a conflict between the free software philosophy and the goal of writing a secure and useful operating system. The possibility that there might be such a conflict has been a great concern of mine in the last half year. However, once I had resolved two important use cases (suid programs and cut&amp;paste), I was able to see what parts of the security infrastructure were actually important to me, and which parts I think are a separable concern. From there, it was not difficult to generalize to the above analysis of ownership and contracts.
+
+## <a name="Outlook"> Outlook </a>
+
+This then, is my motivation for closely examining how (1) my model can be technically described, and (2) what its properties are, and (3) what its justifying design principles are. This sets the agenda for upcoming mails, so let me insert a breaking point here.
+
+Thanks, Marcus
+
+----
+
+Note: this document has an [[Part1OwnershipAndContractsAddendum]].
diff --git a/Hurd/Part1OwnershipAndContractsAddendum.mdwn b/Hurd/Part1OwnershipAndContractsAddendum.mdwn
new file mode 100644
index 00000000..d64d9179
--- /dev/null
+++ b/Hurd/Part1OwnershipAndContractsAddendum.mdwn
@@ -0,0 +1,31 @@
+this is an addendum to my first note. It provides one more concern about the "trusted computing" model, an important clarification of the nature of my objection, and a retraction on the need for a new design principle.
+
+## <a name="Monoculture_Of_Service"> Monoculture Of Service </a>
+
+In the "trusted computing" model, it is suggested that all contracts, by default, use the same mediating agent. This introduces a single point of failure into the system architecture. It also concentrates social and political power into the hands of the mediating agent, which can (and will) be abused.
+
+In my model, all contracts have to be established explicitely, and there is no default mechanism. This will naturally cause people to choose a variety of contracts. For example, many contracts do not require a mediating agent at all, but the common will can be implemented by either of the involved parties. Often, there already is a suitable, local mediating agent available.
+
+## <a name="Quantitative_Differences_Cause_Q"> Quantitative Differences Cause Qualitative Differences </a>
+
+My main objection is thus that the pervasive use of the confined+encapsulated design pattern in the system architecture leads to a new qualitative difference between the systems. Every single contract in isolation may appear innocent. Their sum creates emerging behaviour that I consider a threat.
+
+It is an open question to me if the individual contracts indeed are innocent. In every civil society, there are some contracts that are invalid, even if you sign on to them. Some rights are well-recognized as inalienable. If such an inalienable right is contained in the confined+encapsulated design pattern or not is a difficult question that requires a much more careful analysis than I have attempted so far.
+
+However, even if every such individual contract is innocent, my objection still stands, because it is grounded not in the nature of the individual contract, but in the cummulative effect if it is used pervasively in the system architecture.
+
+In fact, it is not hard to see that if we take an individual contract of the confined+encapsulated sort, it can be straightforwardly implemented in my model with only one requirement beyond what I have already planned for: The user would need to be able to create a space bank that provides encapsulation. (Some more features are required to make it possible to create such services automatically without human inspection, but that is a minor point). However, the presence of this feature is a local property of the system architecture, not a global property.
+
+It is thus difficult for me to understand why it has been argued that not using this form of contract in the system architecture constitutes a de-facto ban of the ability to engage in such a contract. Quite the opposite, I think that engaging in such a contract is very well possible with only local, non-intrusive changes to the operating system to support some very specific functions. Maybe (I have not analyzed this) it does not make sense to engage in only one such contract with limited scope, maybe the very nature of the contract requires its pervasive use in the system architecture. If this is true (again, I do not know if this is true or not), this could be a first indication that this particular form of contract is not as innocent as it appears.
+
+## <a name="A_New_Design_Principle_"> A New Design Principle? </a>
+
+I have suggested before that I have formed a new design principle that provides a taxometer for the use of the confined+encapsulated design pattern. However, after having written my note I do not think that a new design principle is necessary.
+
+The only decision that has to be made is if the risk of losing the "substance of ones being", as it applies to the realm of one's computers, is a security threat or not. The rest follows quite logically from standard principles on how to design secure operating systems.
+
+The substance of my argument can thus be summarized in four simple words:
+
+**Ownership must be secured**.
+
+Thanks, Marcus
diff --git a/Hurd/Part2SystemStructure.mdwn b/Hurd/Part2SystemStructure.mdwn
new file mode 100644
index 00000000..4ce8026f
--- /dev/null
+++ b/Hurd/Part2SystemStructure.mdwn
@@ -0,0 +1,111 @@
+This is part 2 in a small series of notes explaining my opinion on what is a good system structure for the Hurd. While the ideas in part 1 motivate the system structure presented here, the feasibility of this system structure in turn justifies my opinion as presented in part 1. However, either part can also be taken individually. There will probably not be a third part.
+
+# <a name="Part_2_System_Structure"> Part 2: System Structure </a>
+
+I will start with presenting the process hierarchy, explain some abstract design patterns, and then show some specific applications.
+
+Note that within this document, I will limit myself to certain types of operations and features. This does not mean that the system itself, by design, contains any measures to forbid or ban other types of operations.
+
+## <a name="Process_Hierachy"> Process Hierachy </a>
+
+A process is a protection domain. The initial configuration of the machine contains one or more processes with specific, but unspecified, relationships. These processes are called the "root processes". From the initial configuration, processes can be created and destroyed.
+
+## <a name="Resource_Management"> Resource Management </a>
+
+I do not make a disctinction between data and capability pages. Both are, for the course of this discussion, memory pages.
+
+Processes require at the very least some memory resources to keep the process state. Memory is allocated from containers, which therefore provide an abstraction for memory reserves. It is required that one of the root processes is a server implementing container objects.
+
+A container provides an interface that allows to allocate and return memory frames, and to create new containers with a new reserve limit (thus, containers form a hierarchy). Any successful allocation and deallocation from such a derived container will also be accounted for in all containers from which it is derived. A container can be destroyed, which will return all memory frames allocated from it, and thus recursively destroy all containers derived from it as well.
+
+## <a name="Process_Creation_And_Destruction"> Process Creation And Destruction </a>
+
+Any process which has access to a container from which a sufficient amount of memory can be allocated, can convert this memory into a process. The process is destroyed by deallocating the memory from which it was created.
+
+## <a name="Filling_In_the_Gaps"> Filling In the Gaps </a>
+
+The above description is actually mostly complete. What is missing is the description of a somewhat unrelated feature which allows process identification, a description of what the default mechanisms are in the system to support common design patterns, and an illustration that these design patterns are sufficient.
+
+## <a name="Canonical_Invariances"> Canonical Invariances </a>
+
+By default, every process is associated with one memory container, the primary container of the process. This is the container from which the process is allocated, and from which the process does all allocations for its own needs. Primary containers are by default not shared.
+
+## <a name="Canonical_Process_Creation"> Canonical Process Creation </a>
+
+To create a new process, by default, a process, the parent, creates a new container from its primary container, allocates some memory from it and converts it into a new process, the child. It then prepares the process to get it into a runnable state. This includes the following steps: First, a special executable image (allocated from the primary container of the child) is installed into the child's address space, which runs a cooperative protocol with the parent. Then, the parent provides the primary container of the child, and any other initial state that the child should receive, to the startup code. The startup code finally installs this initial state and starts to execute it.
+
+It is clear from this description that the child's existance is completely determined by the parent.
+
+## <a name="Canonical_Process_Destruction"> Canonical Process Destruction </a>
+
+Process destruction can be done either cooperatively, or forcibly. The difference corresponds approximately to the difference between SIGTERM and SIGKILL in Unix. To destroy a process cooperatively, a request message is sent to a special capability implemented by the child process. The child can then begin to tear down the program, and at some time send a request back to the parent process to ask for forced process destruction.
+
+Forced process destruction can be done by the parent process without any cooperation by the child process. The parent process simply destroys the primary container of the child (this means that the parent process should retain the primary container capability).
+
+Because container destruction works recursively, forced process destruction works recursively as well.
+
+## <a name="Process_Hierarchy"> Process Hierarchy </a>
+
+From the above description it should be clear that containers and processes are organized in the same hierarchical tree structure, where every node corresponds to a process and its primary container, and every edge corresponds to a parent-child relationship.
+
+## <a name="Isolation"> Isolation </a>
+
+The ability to subdivide the container's resource reserves provides the ability to completely isolate sibling processes in the process hierarchy. By default, two processes, where neither is an ancestor of the other process, are completely isolated. Also, an ancestor is partially isolated from its child. To overcome this isolation, the two processes need the cooperation of at least all their respective ancestors up to the first common ancestor in the tree. An example should illustrate that:
+
+ A
+ / \
+ B C
+ / \
+ D E
+
+In this picture, A is the direct parent of B and C, and C is the direct parent of D and E. A is a common ancestor of B, C, D and E. C is a comon ancestor of D and E. The isolation is by default complete between (B C), (B D), (B E), and (D E). There is partial isolation between (A B), (A C), (A D), (A E), (C D) and (C E). The isolation properties of A are, if it is a root node, defined by the initial configuration.
+
+If, for example, B and D should be able to communicate, the explicit or implicit permission needs to be provided by both A and C.
+
+## <a name="Confinement"> Confinement </a>
+
+Because of the recursive nature of the process hierarchy, and because the existance of a child is completely determined by its direct parent (which existance is completely determined by _its_ direct parent, etc), processes can be confined, and the confinement extends to all their child processes as well.
+
+In the above example, A confines B, C, D and E. C confined D and E. Thus, B and C are only confined by A, whereas D and E are confined by A and C.
+
+## <a name="Meaning_Of_Words_Such_As_Secure_"> Meaning Of Words Such As Secure, Want, External, etc </a>
+
+Because the existance of a child process is completely defined by its parent, its understanding of what is secure, what its needs are, what is "external" to itself and what is internal, etc, is completely defined by the parent as well. It therefore does not make sense to object to the above model by claiming that the child can not do what it wants to do, because what the child wants to do is completely defined by the parent, as are its abilities to do it. It also does not make sense to object that the child can not determine if a capability it got from the parent is safe to use, because it is the parent which defines for the child if a capability is safe to use or not.
+
+Any such objection has, at its root, some assumption that is different from the assumptions made in this model, and thus needs to be analysed and reasoned about outside of the model.
+
+## <a name="Identify_Operation"> Identify Operation </a>
+
+An branding operation exists which, at the micro-level, allows a server process to check if a certain capability is implemented by itself. The server can then provide an identify operation to its clients, which allow the clients to check with the server if a certain capability is implemented by it. The client can then refuse to use the capability if it is not authentic.
+
+## <a name="Applications"> Applications </a>
+
+I will now describe some common applications that need to be supported, and how they can be supported in the above system structure. To make this brief, I only include applications that have any significance in the confined+isolated discussion. There are other applications (pipes, daemonization, process management), which are important to discuss, but can be solved in identical ways in both types of system structures, so I am excluding them here.
+
+## <a name="System_Services"> System Services </a>
+
+Unix-style suid applications have been proposed as one application for alternative process construction mechanisms. However, suid applications in Unix are, from the perspective of the parent, not confined, only isolated. Thus, they are readily replaced by a system service that is created by the system software, and that runs as a sibling to any user process. Only the ability to invoke the system service needs to be given to the user, not the ability to instantiate it.
+
+In fact, no gain can derived from letting the user instantiate system services. In Unix, system services run on durable resources, which the user can not revoke. Thus, the system service needs to acquire its resources from a container that is not derived from the user's primary container.
+
+## <a name="Cut_amp_Paste"> Cut &amp; Paste </a>
+
+In "[Design of the EROS Trusted Window System](http://www.eros-os.org/papers/usenix-sec2004.ps)", Shap et al describe a uni-directional communication mechanism that can be used for a cut&amp;paste operation in a window manager, that is guaranteed to not allow backflow of information. The main challenge to do this is format conversion, which traditionally requires negotiation between the two parties. In the mechanism proposed, confined constructors are used to allow the sending party to provide format converters that can be used by the receiving party to convert into a format it understands.
+
+I think that in the context of a free software operating system, and considering the threat caused by proprietary document formats, it is fully sufficient and in fact appropriate for our needs to replace this mechanism with one in which the format converters are not provided as isolated programs, but where instead at least the binary image of the format converter is provided in read-only fasion to the receiver.
+
+Accepting this means, in practice, that in the proposed protocol, the format converter constructor capability can be replaced by the vector of capabilities, which must be transitive read-only, which is put into the constructor by the sending party before sealing. The sending party then can instantiate these programs itself.
+
+This alternative mechanism breaks with the principle of least authority, because it values other principles with a higher priority.
+
+## <a name="Suspicious_Collaboration"> Suspicious Collaboration </a>
+
+Two agents in the system can collaborate suspiciously by means of a third agent. In the process, they rely on the third agent to implement the common will. This third agent can even be a constructor-like service. The validity of the service can either be established by the abovely described "Identify" operation, or, in principle, if the underlying operating system exposes the functionality of a "trusted computing" component, the two agents can even get all the guarantees and restrictions imposed by such a component. There is nothing in the system structure above that can prevent this[1]. The changes needed in the underlying operating system are purely local changes with no effect on the overall system structure.
+
+[1] I should add here that my analysis is limited to technical constraints. There may be further legal constraints imposed by software licenses such as the upcoming GPL v3, which draft has an anti-DRM provision.
+
+I said earlier that this makes it hard for me to understand why it has been said that the above system structure constitutes a "ban" on this mechanism. I believe, without having inquired further, that the reason must be that the suspicious collaboration in the above sense is a contract with limited scope. Any information that is passed from the mediating agent to either of the two parties will subsequently not be controlled further. This is in fact always true. The only difference is what the scope of the mediating agent is.
+
+In "locked down" computer systems, the mediating agent has a scope that extends to all of the operating system. For example, the window manager would be part of the mediating agent, and conspire with other components to not allow some information displayed to be read out or modified. Or it could reduce the quality of the information if such a read out occurs (as is required by HDCP licenses, for example). In the danger of repeating myself here, the differences that surfaced in the discussion are probably rooted in the issue of scope. The scope problem is not visible under a microsope, but is only revealed as emergent behaviour by a macroscopic analysis of the resulting system.
+
+Thanks, Marcus
diff --git a/Hurd/PathMax.mdwn b/Hurd/PathMax.mdwn
new file mode 100644
index 00000000..1c792937
--- /dev/null
+++ b/Hurd/PathMax.mdwn
@@ -0,0 +1,3 @@
+TBD, see <http://lists.gnu.org/archive/html/l4-hurd/2005-11/msg00038.html> and [Vulnerabilities in Synchronous IPC Designs](http://citeseer.ist.psu.edu/shapiro03vulnerabilities.html)
+
+-- [[Main/TomBachmann]] - 20 Jun 2006
diff --git a/Hurd/PermissionBits.mdwn b/Hurd/PermissionBits.mdwn
new file mode 100644
index 00000000..1e1493df
--- /dev/null
+++ b/Hurd/PermissionBits.mdwn
@@ -0,0 +1,3 @@
+TBD, see: <http://lists.gnu.org/archive/html/l4-hurd/2006-04/msg00231.html>
+
+-- [[Main/TomBachmann]] - 20 Jun 2006
diff --git a/Hurd/PersonalHurdPages.mdwn b/Hurd/PersonalHurdPages.mdwn
new file mode 100644
index 00000000..ae1d416b
--- /dev/null
+++ b/Hurd/PersonalHurdPages.mdwn
@@ -0,0 +1,10 @@
+Here's a place for pages with Hurd information. Add your WikiNameHurdPage.
+
+* [[Hurd/AlejandroSanchezHurdPage]]
+* [[Hurd/DeepakGoelHurdPage]]
+* [[Hurd/GrantBowHurdPage]]
+* [[Hurd/JoachimNilssonHurdPage]]
+* [[Hurd/RikWadeHurdPage]]
+* [[Hurd/LuisBustamanteHurdPage]]
+* [[Hurd/JuanAlvarezHurdPage]]
+* [[Hurd/ManuelValderramaHurdPage]]
diff --git a/Hurd/Philosophy.mdwn b/Hurd/Philosophy.mdwn
new file mode 100644
index 00000000..1f952017
--- /dev/null
+++ b/Hurd/Philosophy.mdwn
@@ -0,0 +1,8 @@
+Markus Brinkmann made the effort to sketch precisely the principles that motivate his choices about the design of the new Hurd, and particularily those affecting user freedom.
+
+This effort has led to a text in two parts:
+
+* [[Part1OwnershipAndContracts]] ([[Part1OwnershipAndContractsAddendum]])
+* [[Part2SystemStructure]]
+
+See also further commentary made on the l4-hurd list: <http://lists.gnu.org/archive/html/l4-hurd/2006-08/msg00123.html>
diff --git a/Hurd/PosixThreads.mdwn b/Hurd/PosixThreads.mdwn
new file mode 100644
index 00000000..f031b56f
--- /dev/null
+++ b/Hurd/PosixThreads.mdwn
@@ -0,0 +1,21 @@
+## <a name="POSIX_Threads_for_the_Hurd"> </a> POSIX Threads for the Hurd
+
+One of the features the Hurd has been lacking up til now is support for POSIX threads, pthreads. It has been the show stopper for porting many useful applications and has sometimes been pointed out as one of the bigger problems with the GNU operating system.
+
+In 2002 however, all this came to an end when Neal Walfield implemented libpthreads for his work on L4 and decided to also make it work on GNUmach.
+
+Information on the library can be found on Neals web site.
+
+* <http://web.walfield.org/pub/people/neal/hurd/libpthread/>
+
+## <a name="Previous_Attempts"> Previous Attempts </a>
+
+Plans to implement pthreads for the Hurd has existed since, at least, 1999. Mark Kettenis [1] began work that was supposed to be useful on Linux as well. His work was continued by Igor Khavikine [2], who implemented most of it. Igor could however not continue his work so it was picked up by Jeroen Dekkers [3] and Ryan Golbeck. Their work can be found on Savannah, <http://savannah.gnu.org/projects/pthreads/>.
+
+1. <http://sources.redhat.com/ml/libc-hacker/1999-08/msg00117.html>
+2. <http://lists.debian.org/debian-hurd/2001/debian-hurd-200102/msg00283.html>
+3. <http://mail.gnu.org/pipermail/l4-hurd/2001-October/000310.html>
+
+----
+
+Initial version -- [[Main/JoachimNilsson]] - 03 Nov 2002
diff --git a/Hurd/PowerBox.mdwn b/Hurd/PowerBox.mdwn
new file mode 100644
index 00000000..412d16d3
--- /dev/null
+++ b/Hurd/PowerBox.mdwn
@@ -0,0 +1,19 @@
+# <a name="The_Powerbox"> The Powerbox </a>
+
+## <a name="Rationale"> Rationale </a>
+
+In a [[CapabilityBasedMicrokernel]], an application might be used with the very minimal set of capabilities that is needed to execute it, that is read-only access to it's libraries and files, plus maybe access to a specific IP connection or configuration directory.
+
+Thus when the user asks to open or save a file, the dialog used to choose the file could also serve the purpose of granting the appropriate capabilities to the application.
+
+This dialog is named the powerbox.
+
+## <a name="Links"> Links </a>
+
+* [Plash powerbox](http://plash.beasts.org/powerbox.html)
+* [E and Cap Desk](http://www.combex.com/tech/edesk.html)
+* [Polaris: Toward Virus Safe Computing for Windows XP](http://www.hpl.hp.com/personal/Alan_Karp/polaris.pdf)
+* [The E Language in a Walnut](http://www.skyhunter.com/marcs/ewalnut.html#SEC45) - search for "Powerbox Capability Manager"
+* [The Darpa Browser](http://www.combex.com/papers/darpa-report/html/index.html) - see Appendix 5
+
+-- [[Main/NowhereMan]] - 28 Apr 2006
diff --git a/Hurd/PppDaemon.mdwn b/Hurd/PppDaemon.mdwn
new file mode 100644
index 00000000..f667d449
--- /dev/null
+++ b/Hurd/PppDaemon.mdwn
@@ -0,0 +1,6 @@
+There is no PPP solution present for the Hurd.
+
+* Filed Debian [um-ppp bug](http://bugs.debian.org/cgi-bin/bugreport.cgi?archive=no\&bug=147085)
+* Clemmitt [asked about um-pppd](http://mail.gnu.org/pipermail/help-hurd/2002-October/006664.html) in this thread of 9 posts beginning Oct 10, 2002.
+
+-- [[Main/GrantBow]] - 20 Oct 2002
diff --git a/Hurd/PublicHurdBoxen.mdwn b/Hurd/PublicHurdBoxen.mdwn
new file mode 100644
index 00000000..72c855b0
--- /dev/null
+++ b/Hurd/PublicHurdBoxen.mdwn
@@ -0,0 +1,72 @@
+Here are some Hurd boxes that users have made available to the public:
+
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <th bgcolor="#99CCCC"><strong>Host Name</strong></th>
+ <th bgcolor="#99CCCC"><strong>Operator</strong></th>
+ <th bgcolor="#99CCCC"><strong>Access</strong></th>
+ <th bgcolor="#99CCCC"><strong>Port</strong></th>
+ <th bgcolor="#99CCCC"><strong>Distro</strong></th>
+ <th bgcolor="#99CCCC"><strong>Machine Specs</strong></th>
+ </tr>
+ <tr>
+ <td> flubber.bddebian.com </td>
+ <td>[[BarryDeFreese]]</td>
+ <td> ssh </td>
+ <td> 2250 </td>
+ <td> Debian </td>
+ <td> PII 550Mhz 384Mb </td>
+ </tr>
+ <tr>
+ <td> clubber.bddebian.com </td>
+ <td>[[BarryDeFreese]]</td>
+ <td> ssh </td>
+ <td> 2251 </td>
+ <td> Debian </td>
+ <td> PIII 1Ghz 384Mb </td>
+ </tr>
+ <tr>
+ <td> gnubber.bddebian.com </td>
+ <td>[[BarryDeFreese]]</td>
+ <td> ssh </td>
+ <td> 2254 </td>
+ <td> Debian </td>
+ <td> PII 733Mhz 384Mb </td>
+ </tr>
+ <tr>
+ <td> hurd.nipl.net </td>
+ <td>[[AlastairPoole]]</td>
+ <td> ssh </td>
+ <td> 24 </td>
+ <td> GNU </td>
+ <td> AMD Sempron 2800 </td>
+ </tr>
+</table>
+
+To request an account on the _\*.bddebian.com_ machines either contact **bddebian** or **tschwinge** (other people might also be able to help) in [[HurdIRC]] or send email to <hurd-shell-account@gnuNOSPAM.org>. Also use these contact addresses for requesting support with respect to software installations, etc.
+
+For the _hurd.nipl.net_ host, please see <http://www.nipl.net/>.
+
+To be able to use just `ssh [machine]`, you should append your public SSH key to _~/.ssh/authorized\_keys_ on the remote machine.
+
+And if you don't want to worry about the machines's IP addresses changing (due to dial-up connection) or the host keys changing every now and then (when the machines are re-installed), put something like the following into _~/.ssh/config_ of the machine you connect from:
+
+ Host clubber.bddebian.com clubber
+ HostName clubber.bddebian.com
+ Port 2251
+
+ Host flubber.bddebian.com flubber
+ HostName flubber.bddebian.com
+ Port 2250
+
+ Host gnubber.bddebian.com gnubber
+ HostName gnubber.bddebian.com
+ Port 2254
+
+ Host *.bddebian.com clubber flubber gnubber
+ CheckHostIP no
+ UserKnownHostsFile /dev/null
+ StrictHostKeyChecking no
+ User [username]
+
+-- [[Main/BarryDeFreese]] - 22 Feb 2006
diff --git a/Hurd/QEMU.mdwn b/Hurd/QEMU.mdwn
new file mode 100644
index 00000000..a7e8e72e
--- /dev/null
+++ b/Hurd/QEMU.mdwn
@@ -0,0 +1,3 @@
+See:
+
+\* QEMU
diff --git a/Hurd/QemuImageForL4.mdwn b/Hurd/QemuImageForL4.mdwn
new file mode 100644
index 00000000..515f51bc
--- /dev/null
+++ b/Hurd/QemuImageForL4.mdwn
@@ -0,0 +1,376 @@
+This page is initially taken from <http://perso.ens-lyon.fr/alexandre.buisse/hurd.html> with the following signature:
+
+> 04-02-2005 Alexandre Buisse
+>
+> Send any comments or ameliorations to <Nattfodd@gmailNOSPAM.com>
+
+----
+
+This is a howto on how to get a working image of Hurd/L4 with qemu, on ia32 arch.
+
+# <a name="1_Floppy_image"> 1. Floppy image </a>
+
+You will need the following :
+
+* automake 1.7 (or greater)
+* autoconf 2.53 (or greater)
+* grub
+* the CVS version of hurd-l4, which you can retrieve from the savannah server: `cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co hurd-l4`
+* two flavours of Pistachio, the L4 kernel, which can be found at <http://www.l4ka.org/projects/pistachio/download.php>. Take the demodisk for ia32 (`pistachio-ia32-0.4-demodisk.bin.bz2`), we'll checkout the CVS later (the 0.4 tarball isn't recent enough).
+
+We will begin with the hurd itself (these steps are taken from the `README`).
+
+ $ cd hurd-l4
+ $ autoreconf -f -i -s
+
+You shouldn't have any warnings with this autoreconf. If that is not the case, it probably hasn't used the good version of automake or autoconf. For instance, on Gentoo Linux, you must set WANT\_AUTOCONF to 2.5 and WANT\_AUTOMAKE to 1.7.
+
+ $ ./configure --enable-maintainer-mode --prefix=/l4
+ $ make
+ $ make install
+ $ mkdir /l4/boot
+ $ install -s laden/laden /l4/boot
+ $ install -s wortel/wortel /l4/boot
+ $ install -s physmem/physmem /l4/boot
+ $ install -s task/task /l4/boot
+ $ install -s deva/deva /l4/boot
+ $ install -s ruth/ruth /l4/boot
+
+Now we'll prepare the Pistachio kernel :
+
+ $ cd ..
+ $ cvs -d:pserver:guest:guest@cvs.l4ka.org:/public-cvs login
+ $ cvs -z3 -d:pserver:guest@cvs.l4ka.org:/public-cvs co pistachio
+ $ cd pistachio
+
+We must apply some patchs for it to work properly with The Hurd. They are located in `hurd-l4/README`:
+
+ $ patch -p1 < ../hurd-l4/README
+
+We will first compile sigma0 (and some other tools) :
+
+ $ cd user
+ $ autoreconf -f -i -s
+ $ mkdir BUILDDIR
+ $ cd BUILDDIR
+
+We need to change the linkbase of sigma0 :
+
+ $ ../configure --with-s0-linkbase=0x40000 --prefix=/l4
+ $ make
+ $ make install
+
+And now the kernel itself :
+
+ $ cd ../../kernel
+
+You can use any builddir as long as the directory doesn't yet exist.
+
+ $ make BUILDDIR=/tmp/pistachio-build
+ $ cd /tmp/pistachio-build
+ $ vi Makeconf.local
+
+You should modify the first three lines to :
+
+ ARCH=ia32
+ CPU=i586
+ PLATFORM=pc99
+
+now run:
+
+ $ make menuconfig
+
+Set the options as they fit you but for qemu to work, you must have the following hardware :
+
+ IA32 Basic Architecture
+ Pentium1 Processor Type
+
+You can now:
+
+ $ make
+
+You should obtain a file named ia32-kernel into your build directory.
+
+ $ cp ia32-kernel /l4/boot
+ $ cp /l4/libexec/l4/sigma0 /l4/boot
+
+We now have to modify a little bit the demodisk to use the kernel and servers we just obtained :
+
+ $ mkdir qemu
+ $ mkdir qemu/image
+ $ cd qemu
+ $ cp ~/pistachio-ia32-0.4-demodisk.bin.bz2 .
+ $ bunzip2 pistachio-ia32-0.4-demodisk.bin.bz2
+ $ mount -o loop pistachio-ia32-0.4-demodisk.bin image
+ $ cd image/boot
+ $ cp /l4/boot/* .
+ $ cd grub
+ $ vi menu.lst
+
+Your should edit `menu.lst` to make it look like :
+
+ title GNU Hurd on L4
+ kernel /boot/laden -D -o serial,uart1,speed=9600
+ module /boot/ia32-kernel
+ module /boot/sigma0
+ module /boot/wortel -D -o serial,uart1,speed=9600
+ module /boot/physmem
+ module /boot/task
+ module /boot/deva
+ module /boot/task
+ module /boot/ruth
+
+The two -D are intended for debug, you can delete them if you want. It is possible that filenames are limited to 8 characters, check your image/boot directory for ia32-kernel. If it has been renamed into ia32-ker, modify the according line in menu.lst
+
+When you start qemu, you will have two windows : the shell from which you launched it and a VGA window. You can interact with L4 in both windows (switching with the `config/console` command in the debugger). You can choose to have wortel and laden output to the serial device (the shell), which is default behaviour, or to VGA (change `-o serial,urt1,speed=9600` by `-o vga` in your menu.lst).
+
+The image is now ready :
+
+ $ cd ../../../
+ $ umount image
+
+We can launch qemu:
+
+ $ qemu -dummy-net -serial stdio -fda pistachio-ia32-0.4-demodisk.bin -boot a
+
+Congratulations, you just booted Hurd/L4 ! To start the Kernel Debugger, press `ESC`. To switch the KDB mode from character (I find it unusable) to command line, type
+
+ > c
+ /conf> m
+
+# <a name="2_Disk_Image"> 2. Disk Image </a>
+
+Everything went fine, and Hurd/L4 should have shown you a nice boot on our floppy image. Our next step will be to make banner run and show us its nice ASCII Art on this brand new OS.
+
+However, there is one problem : banner linked with the libc weights about 6MB, and we only have a 1.44MB floppy. We will then begin with making an image of a whole hard disk instead of a simple floppy.
+
+We still will work with qemu, of course, but we'll also use Bochs to install Grub on the image (I have not yet tried with qemu).
+
+To begin with, some mathematics. We'll make a 30MB image but you can adapt this value to your need. A disk is made of heads, cylinders and sectors (we won't go in detail about what these really mean). A sector has a constant size of 512 bytes and there are at most 255 heads and 63 sectors. The total size of a disk is C \* H \* S \* 512. We'll use the maximum capacity for S and 16 sectors and that will give us how much cylinders we need : C = E(30,000,000 / (16 \* 63 \* 512)) = 58. The exact size of our image will then be : 58 \* 16 \* 63 \* 512 = 29,933,568 bytes and we will have 58 \* 16 \* 63 = 58464 pieces of 512 bytes.
+
+Let's create it : we use the magic command `dd` on the special device which contain an infinity of 0.
+
+ $ dd if=/dev/zero of=hurd_l4.img bs=512 count=58464
+ 58464+0 records in
+ 58464+0 records out
+
+We will mount it in loopback :
+
+ $ losetup /dev/loop0 hurd_l4.img
+
+We need now to have it recognized as a hard disk :
+
+ $ fdisk -u -C58 -S63 -H16 /dev/loop0
+ Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
+ Building a new DOS disklabel. Changes will remain in memory only,
+ until you decide to write them. After that, of course, the previous
+ content won't be recoverable.
+
+ Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
+
+ Command (m for help):
+
+We should create a new primary partition (press: `'n'`, `'p'`, `'1'`, default, default) and toggle it bootable (`'a'`, `'1'`). Now, if you press `'p'`, you should see something like :
+
+ Command (m for help): p
+
+ Disk /dev/loop0: 29 MB, 29933568 bytes
+ 16 heads, 63 sectors/track, 58 cylinders, total 58464 sectors
+ Units = sectors of 1 * 512 = 512 bytes
+
+ Device Boot Start End Blocks Id System
+ /dev/loop0p1 * 63 58463 29200+ 83 Linux
+
+If everything is fine (especially check the `Start` and `End` fields), you can press `'w'` to write the table on the disk:
+
+ Command (m for help): w
+ The partition table has been altered!
+
+ Calling ioctl() to re-read partition table.
+
+ WARNING: Re-reading the partition table failed with error 22: Invalid argument.
+ The kernel still uses the old table.
+ The new table will be used at the next reboot.
+ Syncing disks.
+
+You will have noticed that the partition only starts at the 63rd sector. The beginning of the disk contains the MBR which is used for booting. We must then remount the disk making sure that this part is skipped before formating it. We know that a sector uses 512 bytes so we should begin at 63 \* 512 = 32256 :
+
+ $ losetup -d /dev/loop0
+ $ losetup -o32256 /dev/loop0 hurd_l4.img
+
+Now comes time to format it into a decent filesystem :
+
+ $ mke2fs /dev/loop0
+ mke2fs 1.35 (28-Feb-2004)
+ Filesystem label=
+ OS type: Linux
+ Block size=1024 (log=0)
+ Fragment size=1024 (log=0)
+ 7328 inodes, 29200 blocks
+ 1460 blocks (5.00%) reserved for the super user
+ First data block=1
+ 4 block groups
+ 8192 blocks per group, 8192 fragments per group
+ 1832 inodes per group
+ Superblock backups stored on blocks:
+ 8193, 24577
+
+ Writing inode tables: done
+ Writing superblocks and filesystem accounting information: done
+
+ This filesystem will be automatically checked every 22 mounts or
+ 180 days, whichever comes first. Use tune2fs -c or -i to override.
+
+We should now be able to mount it the right way :
+
+ $ mkdir mnt
+ $ losetup -d /dev/loop0
+ $ mount -o loop,offset=32256 hurd_l4.img mnt/
+
+Here comes grub time (I assume you have the grub files in `/boot/grub` and the `menu.lst` we've obtained in the previous section is in `~/`) :
+
+ $ mkdir -p mnt/boot/grub
+ $ cp /boot/grub/stage1 /boot/grub/stage2 /boot/grub/e2fs_stage1_5 mnt/boot/grub/
+ $ cp ~/menu.lst mnt/boot/grub
+
+We will make a grub bootimage and boot it with bochs :
+
+ $ cat stage1 stage2 > grubboot.img
+
+Copy the following into `.bochsrc` (replace the parts in caps by the right info) :
+
+ config_interface: textconfig
+ display_library: x
+ romimage: file=/usr/share/bochs/BIOS-bochs-latest, address=0xf0000
+ megs: 32
+ vgaromimage: /usr/share/bochs/VGABIOS-elpin-2.40
+ floppya: 1_44=PATH_TO_YOUR_GRUBBOOT_IMAGE, status=inserted
+ ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
+ ata1: enabled=0, ioaddr1=0x170, ioaddr2=0x370, irq=15
+ ata0-master: type=disk, path="PATH_TO_YOUR_DISK_IMAGE", cylinders=NUMBER_OF_CYLINDERS, heads=16, spt=63
+ newharddrivesupport: enabled=1
+ boot: a
+
+ log: /dev/stdout
+ panic: action=ask
+ error: action=report
+ info: action=report
+ debug: action=ignore
+ debugger_log: -
+ com1: enabled=1, dev=/dev/ttyS0
+ vga_update_interval: 300000
+ keyboard_serial_delay: 250
+ keyboard_paste_delay: 100000
+ floppy_command_delay: 500
+ ips: 1000000
+ mouse: enabled=0
+ private_colormap: enabled=0
+ fullscreen: enabled=0
+ screenmode: name="sample"
+ keyboard_mapping: enabled=0, map=/usr/share/bochs/keymaps/x11-pc-fr.map
+ i440fxsupport: enabled=0
+
+And start Bochs with this configuration :
+
+ $ bochs -qf .bochsrc
+
+When asked, choose `5. begin simulation`. It is possible that you enter first into a debugger, answer `'c'` to make it continue. You should see a grub commandline. Tell it to install grub on the disk :
+
+ grub> root (hd0,0)
+ Filesystem type is ext2fs, partition type 0x83
+
+ grub> setup (hd0)
+ Checking if "/boot/grub/stage1" exists... yes
+ Checking if "/boot/grub/stage2" exists... yes
+ Checking if "/boot/grub/e2fs_stage1_5" exists... yes
+ Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded. succeeded
+ Running "install /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/boot/grub/stage2/boot/grub/menu.lst"... succeeded.
+ Done.
+
+Quit by pressing `^C q` in the shell from which you launched bochs. Our image is now ready. Copy all the releving files in `mnt/boot` like for the floppy and then umount it and launch qemu :
+
+ $ cp /l4/boot/* mnt/boot/
+ $ umount mnt
+ $ qemu -serial stdio -dummy-net -hda hurd_l4.img -boot c
+
+# <a name="3_Running_Banner"> 3. Running Banner </a>
+
+Still under construction but you should have no problems following `hurd-l4/libc/README` now that the hdd image works.
+
+----
+
+-- [[Main/OgnyanKulev]] - 05 Feb 2005
+
+I didn't bother to licence it as it is so small, but consider it is under some sort of creative commons that allows redistribution and modification. <br /> -- Alexandre Buisse &lt; <nattfodd@gmailNOSPAM.com> &gt;
+
+-- [[Main/JoachimNilsson]] - 05 Feb 2005
+
+Comments from Marcus Brinkmann:
+
+> Thanks a lot for that. Some comments:
+>
+> $ ../configure --with-s0-linkbase=0x40000 --prefix=/l4
+>
+> I'd recommend to explain how to use `--without-com0` here (or whatever it is called, don't remember) to choose VGA output, or how to configure the serial port. If you use vga, no `-o` option to laden and wortel should be used so you get all output on vga (but of course you can also mix it, whatever you want).
+>
+> Serial 1 is currently going to be used for remote debugging of userland apps.
+>
+> QEMU supports up to four serial ports, I use: `-serial stdio` and `-serial pty` and then I get the debugging output and kernel debugger in the terminal I started qemu in, and can use the pty for remote debugging with gdb (the latter doesn't work yet).
+>
+> Next:
+>
+> You should modify the first three lines to :
+> ARCH=ia32
+> CPU=i586
+> PLATFORM=pc99
+>
+> I never did that. I did change the menu item Processor Type to Pentium1 though. Maybe it has the same effect (and then your document would be a bit redundant here).
+>
+> Somebody should at some point document all those menu options, some are quite useful for debugging!
+>
+> Thanks, Marcus
+
+-- [[Main/OgnyanKulev]] - 05 Feb 2005
+
+I've been doing this sort of thing (See also `info grub` for making bootable eltorito grub cd ISOs):
+
+ $ cd /usr/src/controlled/qemu-images
+ $ ls -R l4
+ ls -R l4
+ l4:
+ boot deva ia32-kernel laden physmem sigma0 task wortel
+
+ l4/boot:
+ grub
+
+ l4/boot/grub:
+ menu.lst stage2_eltorito
+
+ $ cd /usr/src/controlled/qemu-images # dir above "l4" dir.
+ $ mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
+ -boot-load-size 4 -boot-info-table \
+ -o /usr/src/controlled/qemu-images/l4.iso l4
+
+ $ qemu -boot d -cdrom /usr/src/controlled/qemu-images/l4.iso
+
+-- [[Main/DerekDavies]] - 07 Feb 2005
+
+You don't need a compiler targeting the Hurd. The above works with a compiler targeting Linux which are quite a bit easier to find. By adding "--target=i686-unknown-linux-gnu" to my configure line, I was able to cross compile hurd-l4 from Cygwin.
+
+-- [[Main/MichaelAdams]] - 22 Feb 2005
+
+A bootable CD iso image is now available at <http://gnuppix.org>
+
+-- [[Main/ChristopheDevine]] - 03 Mar 2005
+
+Included the anonymous password in the CVSROOT for L4.
+
+-- [[Main/NowhereMan]] - 19 Mar 2005
+
+I was able to use qemu instead of bochs to install grub on the new disk image. Just use:
+
+ qemu -dummy-net -serial stdio -fda grubboot.img -hda hurd_l4.img -boot a
+
+and then the commands to type in the grub shell are the same.
+
+-- [[Main/MatteoSettenvini]] - 05 May 2005
diff --git a/Hurd/RandomDevice.mdwn b/Hurd/RandomDevice.mdwn
new file mode 100644
index 00000000..34083530
--- /dev/null
+++ b/Hurd/RandomDevice.mdwn
@@ -0,0 +1,41 @@
+## <a name="_http_savannah_gnu_org_task_5130"> </a> [Savannah task #5130: random translator](http://savannah.gnu.org/task/?5130)
+
+See the attached [[ATTACHURLmboxbz2]] containing all the emails concerning this topic which I was able to gather from public archives.
+
+## <a name="Description"> Description </a>
+
+Sources of entropy are for example disk access latencies or keystroke patterns or behavior on networks. This suggests that for implementing a random translator a kernel part is needed as well, to gather that entropy. That kernel part would then export the gathered entropy via a kernel device, named perhaps _entropy_. TODO.
+
+## <a name="Setup_pseudo_random_devices"> Setup pseudo random devices </a>
+
+Stuck getting SSH to work? You need a pseudo random generator (PRG).
+
+There are several solutions to the lack of _/dev/random_ and _/dev/urandom_, but they are not yet in the default installation.
+
+* Marcus' work can be downloaded at [random.tar.gz](ftp://alpha.gnu.org/gnu/hurd/contrib/marcus/random.tar.gz). (Identical to <http://kilobug.free.fr/hurd/random-64.tar.gz>?)
+ * [A patch](http://mail.gnu.org/pipermail/bug-hurd/2002-August/010248.html) that was probably already incorporated from August 14, 2002.
+ * Clemmitt Sigler [reported success](http://lists.gnu.org/archive/html/help-hurd/2002-10/msg00076.html) October 11, 2002 and Marcus [described some](http://lists.gnu.org/archive/html/help-hurd/2002-10/msg00081.html) of the internals.
+
+* [Entropy Gathering Daemon](http://egd.sourceforge.net/).
+ * [request for packaging](http://bugs.debian.org/145498).
+
+* [OSKit Entropy Patch](http://lists.gnu.org/archive/html/bug-hurd/2003-01/msg00000.html) from Derek Davies - Jan 2003.
+ * See also [this page](http://www.ddavies.net/oskit-entropy/).
+ * Note that this patch can (and should) be used with this [OSKit NIC patch](ftp://flux.cs.utah.edu/flux/oskit/mail/html/oskit-users/msg01570.html).
+
+* [Sune Kirkeby's incomplete port of the Linux /dev/\{,u\}random device driver](http://ibofobi.dk/stuff/hurd-entropy/)
+ * [The files](http://download.ibofobi.dk/hurd-entropy/), including a [patch for GNU Mach](http://download.ibofobi.dk/hurd-entropy/gnumach-entropy.diff.bz2).
+
+----
+
+## <a name="Setup_tips"> Setup tips </a>
+
+Here are some tips on how to actually setup the two random devices using Kilobugs' [random-64 server](http://kilobug.free.fr/hurd/random-64.tar.gz). His tarball is a complete Hurd server including a pre-built binary - so you don't need GCC or magic fingers for this! :)
+
+After untaring the package you copy the random binary to the /hurd directory. Then you setup the translators for random and urandom.
+
+ # settrans -c /dev/random /hurd/random \
+ --seed-file /var/run/random-seed --secure
+ # settrans -c /dev/urandom /hurd/random \
+ --seed-file /var/run/urandom-seed --fast
+ # chmod 0644 /dev/random /dev/urandom
diff --git a/Hurd/ReleaseDate.mdwn b/Hurd/ReleaseDate.mdwn
new file mode 100644
index 00000000..d07a9ae5
--- /dev/null
+++ b/Hurd/ReleaseDate.mdwn
@@ -0,0 +1,3 @@
+This is the Year, Month and Date (yyyymmdd) that the release was first available.
+
+-- [[Main/GrantBow]] - 20 Oct 2002
diff --git a/Hurd/ReleaseNotes.mdwn b/Hurd/ReleaseNotes.mdwn
new file mode 100644
index 00000000..d3029837
--- /dev/null
+++ b/Hurd/ReleaseNotes.mdwn
@@ -0,0 +1,7 @@
+This is the TWiki topic name that contains the release notes for this release.
+
+Note: This is redundant to the topic itself. We may want to remove this.
+
+-- [[Main/GrantBow]] - 20 Oct 2002
+
+TODO - add table of actual releases with some searches.
diff --git a/Hurd/RemoteDebugOskitMach.mdwn b/Hurd/RemoteDebugOskitMach.mdwn
new file mode 100644
index 00000000..b2d88158
--- /dev/null
+++ b/Hurd/RemoteDebugOskitMach.mdwn
@@ -0,0 +1,3 @@
+This topic has been moved to [[Mach/RemoteDebugOskitMach]]
+
+-- [[Main/JoachimNilsson]] - 22 Jan 2003
diff --git a/Hurd/RequirementsForLiveCD.mdwn b/Hurd/RequirementsForLiveCD.mdwn
new file mode 100644
index 00000000..03bd3884
--- /dev/null
+++ b/Hurd/RequirementsForLiveCD.mdwn
@@ -0,0 +1,54 @@
+# <a name="Requirements_for_a_GNU_Hurd_Live"> </a> Requirements for a GNU/Hurd Live CD
+
+Here is an outline of the things that need to be done for producing a Live CD for the Hurd. Please add your comments and suggestions.
+
+## <a name="1_We_need_to_be_able_get_a_bootl"> 1. We need to be able get a bootloader for CDs </a>
+
+This is not much of a problem. I have already been successful (see below) in using [Grub](http://en.wikipedia.org/wiki/GRand Unified Bootloader) and the El-Torito HD emulation to boot [[GNUmach]] off a CD. There may be some minor tweaking of Grub code necessary to detect which device to use for booting (instead of having the user select their device (hd0,hd1,etc.) from the Grub menu).
+
+Using GRUB's stage2\_eltorito seems to work fine.
+
+## <a name="2_We_need_a_bootstrap_filesystem"> 2. We need a bootstrap filesystem translator </a>
+
+This would be something like a statically linked iso9660fs translator. Compiling a statically linked iso9660fs translator is easy enough, though it doesn't boot. I don't currently know whether this is because the translator was never meant to be a bootstrap filesystem, or if there is a simple bug which has never been flushed out because the translator has never been used at boot time before. I've had trouble debugging this problem because I haven't yet figured out a way to use a remote gdb with gnumach. Theoretically you could use the "boot" command to overcome this problem, but "boot" for me mangles the terminal and exits in different manner than an actual boot.
+
+The iso9660fs translator works great, it just needs to be statically linked.
+
+## <a name="3_We_need_a_ramdisk_to_enable_wr"> 3. We need a ramdisk to enable write access </a>
+
+I think we could fake this with Farid Hajii's [memfs](http://www.fprintf.net/hurd/) translator and writing an ext2 filesystem to it.
+
+From the mem-fs README...
+
+> memfs-1 is a translator that provides a memory-based file of fixed size. This file can, just like bigfile, contain a regular filesystem.
+
+We could set a mem-fs translator anywhere on the CD you needed write access, including having softlinks to the contents of the root directory and chrooting to this new directory.
+
+For a quick and dirty memfs, you can do it right now with the following commands:
+
+ # touch ./ramdisk
+ # touch ./tmpfs
+ # settrans -a ./ramdisk /hurd/storeio -Tcopy zero:50M
+ # /sbin/mke2fs -o hurd -b 4096 -F ./ramdisk
+ # settrans -a tmpfs /hurd/ext2fs.static ./ramdisk
+ # fsysopts --writable ./tmpfs
+ # cd tmpfs
+ # touch somenewfile
+
+Here we use two files ramdisk, and tmpfs that are already created on a readonly file system. For illustration purposes, they are touched beforehand. We run an active storeio translator on the ramdisk file to give us 50MB of RAM to work with, and then we make an ext2 filesystem on it.
+
+At this point we'd could copy the contents of the `/var` directory into the tmpfs, and then symlink `/var` to `/tmpfs/var`. The same goes for all other mutable dirs.
+
+This approach of putting an entire ext2 filesystem in a copy zero'd store has some drawbacks listed [here](http://lists.gnu.org/archive/html/bug-hurd/2000-12/msg00073.html).
+
+Those are the essentials. Here is a list of the things which would be nice to have for a Live-CD.
+
+* Knoppix like script for starting up X and [[GraphicEnvironment]] s ([[FluxBox]], Gnome...)
+* DHCP support for easy network setup
+* Hardware autodetection (Kudzu).
+* Knoppix like script for installing to the hard drive or to bootable USB pendrive .
+* (add your favorite feature here)
+
+Here is a mailing-list [thread](http://lists.debian.org/debian-hurd/2003/debian-hurd-200308/msg00172.html) discussing some of these issues.
+
+-- [[Main/GregBuchholz]] - 21 Oct 2003 -- [[Main/NagromNamreh]] - 29 Jan 2004
diff --git a/Hurd/RequirementsForUser.mdwn b/Hurd/RequirementsForUser.mdwn
new file mode 100644
index 00000000..d23221c3
--- /dev/null
+++ b/Hurd/RequirementsForUser.mdwn
@@ -0,0 +1,59 @@
+Requirements for the user tell what a computer system should look like from a user's perspective. Here are three of such requirements:
+
+* Awareness
+* Security
+* Flexibility
+
+# <a name="Requirements"> Requirements </a>
+
+<a name="AwarenessRequirement"></a>
+
+## <a name="Awareness"> Awareness </a>
+
+The user must know what the operations are he can perform in the operating system. He must also know about their consequences and relevant side effects, and what the possible results are. At any point where the system can not make the right decision automatically, the user must have the ability to influence the path chosen.
+
+----
+
+**Awareness means that the user knows what happens.**
+
+----
+
+<a name="SecurityRequirement"></a>
+
+## <a name="Security"> Security </a>
+
+The user must be sure that his actions have predictable consequences, even in the presence of actively hostile influence. If there is a component in the system that the user can not control, the user must be able to contain its impact, either by simply ignoring it (shielding), or by imposing restrictions (confinement).
+
+----
+
+**Security means that the user controls what can happen _to_ his resources.**
+
+----
+
+<a name="FlexibilityRequirement"></a>
+
+## <a name="Flexibility"> Flexibility </a>
+
+The user must have a range of options available that support him to achieve an arbitrary but well-defined goal that can be stated within the legitimate resources the user controls.
+
+----
+
+**Flexibility means that the user controls what can happen _with_ his resources.**
+
+----
+
+# <a name="Relationships"> Relationships </a>
+
+For me, Awareness is a requirement for both, security and flexibility. The options that are presented to the user must be meaningful and clear to him. Otherwise, how is he in a position to make a decision where the system can't? This does not mean that the user must be aware of every detail that goes on, but he must be aware of the higher-level consequences of all actions (and non-actions) that he performs.
+
+I don't know about you, but everytime some dialog box in an application I use for the first time asks me if I want to babble-gabble the froob through the bibskadenga, I just click on the biggest of the buttons presented, or the one with the nicest color, and hope for the best. So, "Awareness" is just a basic usability requirement.
+
+Security ensures that the action the user can undertake never have so dramatic consequences that the user loses control over his session and associated resources, at least not without explicitely and consciously requesting it (note that Awareness is required here).
+
+A flexible system will not achieve these goals simply by restricting the users ability to perform his tasks. It will offer the broadest range of alternatives possible, without compromising the other goals.
+
+----
+
+Adapted from:
+
+* <http://lists.gnu.org/archive/html/l4-hurd/2005-11/msg00242.html>
diff --git a/Hurd/RikWadeHurdPage.mdwn b/Hurd/RikWadeHurdPage.mdwn
new file mode 100644
index 00000000..defe7570
--- /dev/null
+++ b/Hurd/RikWadeHurdPage.mdwn
@@ -0,0 +1,9 @@
+-- [[Main/RikWade]] - 15 May 2002
+
+I'll be putting some more information on areas I'm looking at or working on here in the near future.
+
+--
+
+Welcome to the Hurd TWiki.
+
+-- [[Main/GrantBow]] - 16 May 2002
diff --git a/Hurd/SeenHurd.mdwn b/Hurd/SeenHurd.mdwn
new file mode 100644
index 00000000..9a67f136
--- /dev/null
+++ b/Hurd/SeenHurd.mdwn
@@ -0,0 +1,71 @@
+# <a name="Hurd_Sightings"> Hurd Sightings </a>
+
+#### <a name="Table_Of_Contents"> Table Of Contents </a>
+
+%TOC%
+
+## <a name="Hurd_People_Sightings"> Hurd People Sightings </a>
+
+<dl>
+ <dt>[[MailLists]]</dt>
+ <dd> Available mailing lists </dd>
+ <dt>[[HurdIRC]]</dt>
+ <dd>
+ </dd>
+ <dt>[[WhoRunsGNU]]</dt>
+ <dd>
+ </dd>
+ <dt>[[HurdDevelopers]]</dt>
+ <dd> Who's who? </dd>
+ <dt>[[PersonalHurdPages]]</dt>
+ <dd> Users with Hurd wiki pages </dd>
+ <dt>[[UserGroups]]</dt>
+ <dd> Canadian, French &amp;amp; Russian </dd>
+ <dt>[[HurdConferences]]</dt>
+ <dd> Meetings either directly held for the Hurd or with significant Hurd developer attendance. </dd>
+ <dt>[[GnuHurdOrkut]]</dt>
+ <dd> online "community" of interest - 89 members and counting </dd>
+ <dt>[[GnuHurdLiveJournal]]</dt>
+ <dd> online community </dd>
+</dl>
+
+## <a name="Hurd_Press_Sightings"> Hurd Press Sightings </a>
+
+Here's a page for links that specifically talk about the Hurd in some way. See also, [[FunnyHurd]].
+
+### <a name="Searching_the_Word_Hurd_in_Some_"> Searching the Word "Hurd" in Some Famous Sites </a>
+
+* [OSNews.com](http://www.osnews.com/search.php?search=hurd)
+* [Slashdot.org](http://slashdot.org/search.pl?query=hurd)
+* [KernelTrap.org](http://kerneltrap.com/index.php?or=6,16,40)
+* [DebianPlanet.org](http://www.debianplanet.org/module.php?mod=search&edit%5Btype%5D%5Bnode%5D=1&keys=hurd)
+* [Hungarian Unix portal](http://www.hup.hu/modules.php?name=News&new_topic=65) (in Hungarian)
+
+### <a name="Single_Articles"> Single Articles </a>
+
+* [Interview with Hurd developer Marcus Brinkmann](http://portal.wikinerds.org/brinkmann-interview-mar2005) by Wikinerds Portal
+* [A historic first step for the GNU/HURD-L4 microkernel port](http://portal.wikinerds.org/gnu-hurd-l4-first-program) by Wikinerds Portal
+* [Interviews: Linus Torvalds: "Desktop Market has already started"](http://linuxtimes.net/modules.php?name=News&file=article&sid=145), in Linux Times, the viability of the Hurd is discussed a bit.
+* [The Answer Gang 88: Linux Kernel Maintainability: Bees Can't Fly](http://www.linuxgazette.com/issue88/tag/3.html), in Linux Gazette, March 2003, issue 88.
+* [Renaming Linux](http://www.infomaticsonline.co.uk/News/1135403) article on GNU OS (Hurd is a strongly related issue) - Sept 26, 2002
+* GNU's new [GNU/Linux FAQ](http://www.gnu.org/gnu/gnu-linux-faq.html) - Sept 24, 2002
+* [Debian Weekly News](http://www.debian.org/News/weekly/2002/37/) on Sarge &amp; Hurd - Sept 24, 2002
+* Debian Release Manager Anthony Towns [notes on Sarge](http://lists.debian.org/debian-devel-announce-0209/msg00004.html) &amp; Hurd - Sept 28, 2002
+* [New Console](http://www.kerneltrap.org/node.php?id=420) - Kernel Trap, Sept 18, 2002
+* [Radio CSJ](http://pagina.de/radiocsj) 104.5 FM discussions during "error 404" show - [Universidad Cat�olica de Chile](http://www.puc.cl) (Macul, Santiago, Chile), June 2002
+* [New GNU Hurd Kernel Released](http://slashdot.org/article.pl?sid=02/05/30/1547250&mode=nested&tid=117) [_sic_] - Slashdot, May 30, 2002
+* [GNU Mach 1.3 released!](http://www.debianplanet.org/article.php?sid=680&mode=thread&order=0&thold=0) - Debian Planet, May 29, 2002
+* [Running Hurd Under [[Distrib/BochsEmulator]] x86 Emulator](http://www.debianplanet.org/article.php?sid=673&mode=thread&order=0&thold=0) - Debian Planet, May 12, 2002
+* [Hurd-i386 gets new GLibc core](http://www.debianplanet.org/article.php?sid=668&mode=thread&order=0) by Jeff Bailey - Debian Planet, May 3, 2002
+* [IDG](http://www.idg.net/ic_829012_4394_1-3921.html) - IDG, March 11, 2002
+* [Interview with Neal Walfield](http://kerneltrap.org/article.php?sid=375) - Kernel Trap, Nov 12, 2001
+
+### <a name="On_Cover_Pages"> On Cover Pages </a>
+
+* [freeX #4 2000](http://www.cul.de/data/freex42000inh.pdf) (PDF) - _Die andere Systemphilosophie_ auf Marcus Brinkmann
+
+%ATTACHURL%/freex42000cg.jpg
+
+* Linux Magazine France 10
+
+%ATTACHURL%/lmf10\_1999.jpg
diff --git a/Hurd/SerialConsole.mdwn b/Hurd/SerialConsole.mdwn
new file mode 100644
index 00000000..e4e5324d
--- /dev/null
+++ b/Hurd/SerialConsole.mdwn
@@ -0,0 +1,28 @@
+# <a name="Grub"> Grub </a>
+
+To enable serial console support in Grub, you'll need to add a variation of the following to the top of your menu.lst:
+
+ serial --unit=0
+ terminal --timeout=2 serial console
+
+The first line enables the serial console on the first serial port (use --unit=1 to use the second). The second tells Grub to use either the serial console or the vga display on the first one on which input is sensed within two seconds of executing this command. If no input is detected, Grub defaults to the first which in this case is the serial console.
+
+# <a name="Hurd"> Hurd </a>
+
+You'll first need to create a serial port device. Change to /dev and execute the following as root:
+
+ ./MAKEDEV com0
+
+Then add the following to /etc/ttys:
+
+ com0 "/libexec/getty 9600" xterm-color on secure trusted console
+
+runttys won't automatically reread /etc/ttys. You need to send it a SIGHUP.
+
+If you are running your serial console on the second serial port, replace com0 with com1.
+
+# <a name="Using_the_Serial_Port"> Using the Serial Port </a>
+
+minicom is popular but sredird has a more integrated feel.
+
+-- [[NealWalfield]] - 12 Dec 2005
diff --git a/Hurd/SetuidVsConstructor.mdwn b/Hurd/SetuidVsConstructor.mdwn
new file mode 100644
index 00000000..44c5f7fa
--- /dev/null
+++ b/Hurd/SetuidVsConstructor.mdwn
@@ -0,0 +1,6 @@
+TBD, see e.g.:
+
+* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00167.html>
+* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00203.html>
+
+-- [[Main/TomBachmann]] - 20 Jun 2006
diff --git a/Hurd/SharedLibraries.mdwn b/Hurd/SharedLibraries.mdwn
new file mode 100644
index 00000000..01b85df8
--- /dev/null
+++ b/Hurd/SharedLibraries.mdwn
@@ -0,0 +1,3 @@
+TBD, see <http://lists.gnu.org/archive/html/l4-hurd/2005-12/msg00034.html>
+
+-- [[Main/TomBachmann]] - 20 Jun 2006
diff --git a/Hurd/Shopping.mdwn b/Hurd/Shopping.mdwn
new file mode 100644
index 00000000..d9806e93
--- /dev/null
+++ b/Hurd/Shopping.mdwn
@@ -0,0 +1,13 @@
+Here are some e-shops from which you can buy stuff: T-Shirts and others. Free Software Foundation Inc. doesn't get percent from these sells.
+
+* [CafePress](http://www.cafeshops.com/hurd)
+
+-- [[Main/OgnyanKulev]] - 11 Feb 2004
+
+Wait, so they are making money off the Hurd and not giving any to the FSF? Uh....
+
+-- [[Main/GrantBow]] - 27 Feb 2004
+
+OK, It was kind a stupid to add this sentence. What about removing it all this sentence?
+
+-- [[Main/OgnyanKulev]] - 27 Feb 2004
diff --git a/Hurd/SubhurdHowto.mdwn b/Hurd/SubhurdHowto.mdwn
new file mode 100644
index 00000000..265a43b0
--- /dev/null
+++ b/Hurd/SubhurdHowto.mdwn
@@ -0,0 +1,62 @@
+# <a name="Subhurd_Howto"> Subhurd Howto </a>
+
+One of the most visible goodies offered by the Hurd design, is the possibility to run neighbour Hurds AKA subhurds.
+
+Sadly, there is very little information available on using subhurds. This page tries to help getting you started.
+
+## <a name="Preparing"> Preparing </a>
+
+To run a subhurd, you need an additional partition with an installed Hurd system. In principle, you can also use your main partition in read-only mode; but this obviously will create severe limitations. Usually, you will want a complete independant system.
+
+The system for the subhurd is a normal Hurd installation, which could just as well run standalone. You can use any of the various possible installation methods, or reuse an existing installation if you already have several. If using Debian GNU/Hurd, the easiest is probably to use crosshurd, which you can run directly from your main Hurd to set up another Hurd on a different partition, without ever rebooting. (You can run the native-install step from a chroot or already in a subhurd.)
+
+## <a name="Booting"> Booting </a>
+
+To boot the subhurd, you need a boot script. For historical reasons, usually /boot/servers.boot is used. (Originally, this was also used to boot the main Hurd, using "serverboot". Nowadays, this isn't used for the main boot anymore, as GRUB can directly load all the necessary modules.)
+
+However, the canonical /boot/servers.boot file is no longer distributed with Debian GNU/Hurd. Here is a slightly adopted version:
+
+ # Boot script file for booting GNU Hurd. Each line specifies a file to be
+ # loaded by the boot loader (the first word), and actions to be done with it.
+
+ # First, the bootstrap filesystem. It needs several ports as arguments,
+ # as well as the user flags from the boot loader.
+ /hurd/ext2fs.static --bootflags=${boot-args} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -Tdevice ${root-device} $(task-create) $(task-resume)
+
+ # Now the exec server; to load the dynamically-linked exec server program,
+ # we have the boot loader in fact load and run ld.so, which in turn
+ # loads and runs /hurd/exec. This task is created, and its task port saved
+ # in ${exec-task} to be passed to the fs above, but it is left suspended;
+ # the fs will resume the exec task once it is ready.
+ /lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+ ## default pager
+ #/dev/sd0b $(add-paging-file)
+
+(NOTE: It's very important not to introduce spurious line breaks, so be very careful when copying! All the options following ext2fs.static have to be on a single line.)
+
+Now actually booting the subhurd is a simple matter of issuing (as root):
+
+ boot servers.boot /dev/hd0s6
+
+(Replace hd0s6 by the name of your partition for the subhurd.)
+
+NOTE: The partition must be unmounted (or mounted read-only) before you boot from it!
+
+(In theory it shouldn't be neccessary to run the subhurd as user _root_, but in practice [that doesn't work at the moment](http://savannah.gnu.org/bugs/?17341).)
+
+Now the subhurd should boot just like a normal Hurd started directly from GRUB, finally presenting a login prompt. The boot program serves as proxy for the subhurd, so you can control it from the terminal where you issued the boot command.
+
+To exit the subhurd, issue halt or reboot. This should exit it cleanly, but for some reason it doesn't always work; sometimes it will output various errors and then hang. If that happens, you need to kill the subhurd processes manually from a different terminal.
+
+## <a name="Using"> Using </a>
+
+In the subhurd, you can do basically all the same things as in the main Hurd.
+
+You can even set up networking: Just invoke settrans on the /servers/socket/2 as usual inside the subhurd, only using a different local IP than in the main Hurd. This way, the subhurd will be able to communicate to the outside world with it's own IP -- allowing for example to do apt-get inside the subhurd, or to ssh directly into the subhurd.
+
+If you want to access the subhurd processes from the outside, e.g. for debugging purposes (or to get rid of a subhurd that didn't exit cleanly...), you need to find out how main Hurd PIDs correspond to subhurd processes: The subhurd processes appear in the main Hurd (e.g. if doing ps -e) as unknown processes, and vice versa, but the PIDs are different! To find out which process is which, you can simply compare the order -- while the numbers are different, the order should usually match. Often it also helps to look at the number of threads (e.g. using ps -l), as many servers have very characteristic thread counts.
+
+## <a name="Further_Info"> Further Info </a>
+
+On [[DebuggingViaSubhurds]] you can find information about how to use subhurd for debugging purposes.
diff --git a/Hurd/SystemStructure.mdwn b/Hurd/SystemStructure.mdwn
new file mode 100644
index 00000000..8a9bdbe8
--- /dev/null
+++ b/Hurd/SystemStructure.mdwn
@@ -0,0 +1,3 @@
+TBD, see: <http://lists.gnu.org/archive/html/l4-hurd/2006-05/msg00324.html> (thread). Also, note that this is derived from [[Philosophy]]. See the interface spec and the position paper as well.
+
+-- [[Main/TomBachmann]] - 31 Aug 2006
diff --git a/Hurd/THUG.mdwn b/Hurd/THUG.mdwn
new file mode 100644
index 00000000..ede448c9
--- /dev/null
+++ b/Hurd/THUG.mdwn
@@ -0,0 +1,25 @@
+# <a name="Toronto_GNU_Hurd_User_Group"> </a> Toronto (GNU/)Hurd User Group
+
+We are the first of the [[WebHome]] [[UserGroups]], and consequently the biggest! Our name is a slight misnomer, since we have plenty of members who live outside of Toronto, Ontario, Canada. We have a members in the Kitchener/Waterloo area who are about two hours from Toronto (by automobile,) and a member in Oakland, California, USA who is about two hours from Toronto (by aeroplane.)
+
+We are also expanding our reach. Currently our core members range in location from Montreal, PQ. to Waterloo, On.
+
+## <a name="Membership"> Membership </a>
+
+Anyone can join! Just find us, and help contribute to the [[WebHome]].
+
+## <a name="Services"> Services </a>
+
+Currently, we maintain a [Savannah](http://savannah.gnu.org) project site at <http://savannah.nongnu.org/projects/thug>.
+
+As well, our web page links to lots of useful [documentation](http://www.nongnu.org/thug/docs.html).
+
+## <a name="Contact_us"> Contact us </a>
+
+Our website can be found at: <http://www.nongnu.org/thug/>.
+
+You can typically find us in the #thug channel on the Official GNU IRC network (irc.gnu.org).
+
+As well, we have a mailing list at [thug at gnu dot org](http://mail.gnu.org/mailman/listinfo/thug).
+
+-- [[Main/SimonLaw]] - 25 May 2002
diff --git a/Hurd/TWikiHostingStuff.mdwn b/Hurd/TWikiHostingStuff.mdwn
new file mode 100644
index 00000000..6fb2e9d7
--- /dev/null
+++ b/Hurd/TWikiHostingStuff.mdwn
@@ -0,0 +1,37 @@
+These are some administratively inclined notes.
+
+* While the new permanent home for this site is <http://hurd.gnufans.org> we need to find another place to host it when possible due to bandwidth restrictions. Please add your comments and suggestions. [[TWiki/HurdWikiMove]]
+* See [[TWikiHostingStuff]], for standard TWiki Web miscellanea. Maintenance discussion regarding these pages is found in [[TWiki/TWikiDiscuss]]. Copyright and legal discussions are found at [[TWiki/HurdWikiCopyrightDiscuss]].
+* General hosting software non-Hurd [[TeamWorkWiki]] specific information can be found by visiting the [[WelcomeGuest]] and the [[TWikiTutorial]] pages.
+
+> **Example: Create a custom logo variable**
+>
+> <br />
+>
+> * To place a logo anywhere in a web by typing <code>**%MYLOGO%**</code>, simply define the variable on the web's [[WebPreferences]] page. You also have to upload `logo.gif` - this can be done by [[TWIKIWEBFileAttachment]] to `LogoTopic` (any topic name you choose):
+> * <code>**Set MYLOGO = %PUBURL%/%MAINWEB%/LogoTopic/logo.gif**</code>
+
+For more useful variables see the %TWIKIWEB%.TWikiVariables page.
+
+<form action="%SCRIPTURLPATH%/search%SCRIPTSUFFIX%/%WEB%/SearchResult">
+ <ul>
+ <li><input name="search" size="32" type="text" /> <input type="submit" value="Search" />    (More options in [[WebSearch]]) </li>
+ <li>[[WebChanges]]: Find out recent modifications to the %WIKITOOLNAME%.%WEB% web. </li>
+ <li>[[WebIndex]]: Display all %WIKITOOLNAME%.%WEB% topics in alphabetical order. See also the faster [[WebTopicList]]</li>
+ <li> %NOTIFYTOPIC%: Subscribe to be automatically notified when something changes in the %WIKITOOLNAME%.%WEB% web. </li>
+ <li> %STATISTICSTOPIC%: View access statistics of the %WIKITOOLNAME%.%WEB% web. </li>
+ <li> %WEBPREFSTOPIC%: Preferences of the %WIKITOOLNAME%.%WEB% web. </li>
+ </ul>
+</form>
+
+%INCLUDE\{"%TWIKIWEB%.TWikiWebsTable"\}%
+
+Here's a list of the plugins that are active right now. For more info [see here](http://twiki.org/cgi-bin/view/Plugins/PluginPackage).
+
+%PLUGINDESCRIPTIONS%
+
+[[KnownLimitForm]]
+
+[[HurdReleaseForm]]
+
+%SEARCH\{"Mediatype.\*?value=\\"Tarball"" scope="text" regex="on" nosearch="on" nototal="on" format="$topic",", "\}%
diff --git a/Hurd/TheGnuHurd.mdwn b/Hurd/TheGnuHurd.mdwn
new file mode 100644
index 00000000..dc1ee960
--- /dev/null
+++ b/Hurd/TheGnuHurd.mdwn
@@ -0,0 +1,66 @@
+# <a name="Table_of_Contents"> Table of Contents </a>
+
+%TOC%
+
+# <a name="Introduction_to_the_Hurd"> Introduction to the Hurd </a>
+
+The GNU Hurd is the GNU project's replacement for the Unix kernel. The Hurd is a collection of servers that run on the Mach microkernel to implement file systems, network protocols, file access control, and other features that are implemented by the Unix kernel or similar kernels (such as Linux).
+
+Currently, the Hurd runs on IA32 machines. The Hurd should, and probably will, be ported to other hardware architectures or other microkernels in the future.
+
+# <a name="Advantages_of_the_Hurd"> Advantages of the Hurd </a>
+
+The Hurd is not the most advanced kernel known to the planet (yet), but it does have a number of enticing features:
+
+<dl>
+ <dt><b>it's free software</b></dt>
+ <dd> Anybody can use, modify, and redistribute it under the terms of the <a href="http://www.gnu.org/copyleft/gpl.html" target="_top">GNU General Public License (GPL)</a>. </dd>
+ <dt><b>it's compatible</b></dt>
+ <dd> The Hurd provides a familiar programming and user environment. For all intents and purposes, the Hurd is a modern Unix-like kernel. The Hurd uses the <a href="http://www.gnu.org/software/libc/libc.html" target="_top">GNU C Library</a>, whose development closely tracks standards such as ANSI/ISO, BSD, POSIX, Single Unix, SVID, and X/Open. </dd>
+ <dt><b>it's built to survive</b></dt>
+ <dd> Unlike other popular kernel software, the Hurd has an object-oriented structure that allows it to evolve without compromising its design. This structure will help the Hurd undergo major redesign and modifications without having to be entirely rewritten. </dd>
+ <dt><b>it's scalable</b></dt>
+ <dd> The Hurd implementation is aggressively multithreaded so that it runs efficiently on both single processors and symmetric multiprocessors. The Hurd interfaces are designed to allow transparent network clusters (collectives), although this feature has not yet been implemented. </dd>
+ <dt><b>it's extensible</b></dt>
+ <dd> The Hurd is an attractive platform for learning how to become a kernel hacker or for implementing new ideas in kernel technology. Every part of the system is designed to be modified and extended. </dd>
+ <dt><b>it's stable</b></dt>
+ <dd> It is possible to develop and test new Hurd kernel components without rebooting the machine (not even accidentally). Running your own kernel components doesn't interfere with other users, and so no special system privileges are required. The mechanism for kernel extensions is secure by design: it is impossible to impose your changes upon other users unless they authorize them or you are the system administrator. </dd>
+ <dt><b>it exists</b></dt>
+ <dd> The Hurd is real software that works Right Now. It is not a research project or a proposal. You don't have to wait at all before you can start using and developing it. </dd>
+</dl>
+
+# <a name="What_the_Hurd_means"> What the Hurd means </a>
+
+According to Thomas Bushnell, BSG, the primary architect of the Hurd: \`Hurd' stands for \`Hird of Unix-Replacing Daemons'. And, then, \`Hird' stands for \`Hurd of Interfaces Representing Depth'. We have here, to my knowledge, the first software to be named by a pair of mutually recursive acronyms.
+
+# <a name="Status_of_the_project"> Status of the project </a>
+
+The Hurd, together with the GNU Mach microkernel, the GNU C Library and the other GNU programs, provides a rather complete and usable operating system today. It is not ready for production use, as there are still many bugs and missing features. However, it should be a good base for further development and non-critical application usage.
+
+GNU/Hurd is completely self-contained (you can compile all parts of the Hurd system from GNU/Hurd itself). You can run several GNU/Hurd systems in parallel, and debug even critical servers in another GNU/Hurd with gdb. You can run the X window system, applications that use it, and advanced server applications like the Apache webserver.
+
+On the negative side, the support for character devices (like sound cards) and other hardware is mostly missing. Although the POSIX interface is provided, some additional interfaces like POSIX threads, shared memories or semaphores are still under development.
+
+All this applies to the current development version, and not to the last release (0.2). We encourage everybody who is interested to try out the latest development version, and send feedback to the Hurd developers.
+
+----
+
+Copyright (C) 2001, 2002 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA
+
+Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
+
+-- [[Main/JoachimNilsson]] - 13 May 2002
+
+----
+
+# <a name="Language_and_the_Hurd"> Language, and the Hurd </a>
+
+The Hurd has its share of linguistic debate. The subject of proper usage comes up quite often.
+
+We call our kernel replacement \`\`the Hurd.'' Although Thomas Bushnell, BSG states that the word \`\`Hurd'' is an acronym; we do not treat it as such, but rather as a concrete noun. It is widely regarded as incorrect to use the term \`\`HURD'' or \`\`H.U.R.D.'' So, to refer to the collection of servers running on top of the microkernel, we would say, \`\`I have upgraded to the latest version of the Hurd.'' Since the Hurd is part of the GNU Project, we also refer to it as \`\`GNU Hurd'' which is treated as a proper noun.
+
+The Hurd, in conjunction with Mach, forms the core of the GNU operating system. So, one can say \`\`I have installed GNU on my friend's new computer.'' The Debian Project clarifies this by using the name \`\`Debian GNU/Hurd'', because it also distributes the GNU/Linux variant of GNU.
+
+To pronounce the word \`\`Hurd,'' you should say the English word \`\`herd.'' This is pronounced as \`\`hɚd'' using the International Phonetic Alphabet.
+
+-- [[Main/SimonLaw]] - 16 May 2002
diff --git a/Hurd/ThePolycastInterface.mdwn b/Hurd/ThePolycastInterface.mdwn
new file mode 100644
index 00000000..5d1fb8dc
--- /dev/null
+++ b/Hurd/ThePolycastInterface.mdwn
@@ -0,0 +1,52 @@
+# <a name="The_Polycast_Interface"> The Polycast Interface </a>
+
+## <a name="Introduction"> Introduction </a>
+
+In the current Hurd, all fs objects implement both directory and file methods. This means every program that accesses a file object has to decide whether to treat it as a file or a directory. This is no problem for programs that only know about files or directories, but there is a wide range of programs that understand both files and directories simultaneously (e.g. rm -R), and they are confused when they see objects that are files as well as directories. This causes erratic behaviour. For example, "grep \*" will search through the binary content of directories (because it treats them as files).
+
+Sometimes, the file and directory interface are refered to as \`\`facets'' of the object.
+
+## <a name="The_Problem"> The Problem </a>
+
+The problem is **much** worse than it might look like. Consider the case where one translator might reasonably implement two or more file interfaces, like a translator that simultaneously presents a .tar.bz2 file view, a .tar.gz file view and a directory view. Then you have a fundamental semantic issue:
+
+_A method call in isolation has no meaning. It can only be interpreted in the context of a particular interface._
+
+## <a name="A_Solution"> A Solution </a>
+
+The solution is simple: whenever a method is invoked, the interface has to be known. This implies two things: a) we do not use multiple inheritance and b) support for some sort of \`\`casting'' is needed. For illustration, look at the inheritence graph for an object that provides both directory and file methods:
+
+ file dir
+ \ /
+ dir_file
+
+This graph can be converted into one using only single inheritence:
+
+ poly_type
+ \ /
+ file dir
+
+Where **poly\_type provides the methods get\_supported\_types() and get\_facet(type) for casting: get\_supported\_types returns a list of types which this object can be viewed as. get\_facet returns a new object with a new type, but the object is, at the server side, intimately related to the original object with the original type**.
+
+To give another example: the translator that provides .tar.bz2, .tar.gz and dir views would use the following inheritance graph:
+
+ poly_type
+ / \
+ file dir
+ / \
+ tbz_file tgz_file
+
+tbz\_file and tgz\_file do not provide new methods, they exist only to distinct interfaces.
+
+## <a name="Usability_Considerations"> Usability Considerations </a>
+
+In order for the polycast interface to be useful, it has to work together with legacy applications (that are unaware of it). As either the [[PowerBox]] or the shell grant authority to applications, there can be some private agreement between the user and these components on how to express different interfaces of objects. For example foo:as\_dir could designate the directory facet of objecte foo. Also, different interfaces could be bound to different different names (either automatically or explicitely)
+
+----
+
+see also:
+
+* <http://lists.gnu.org/archive/html/l4-hurd/2006-02/msg00002.html>
+* <http://lists.gnu.org/archive/html/l4-hurd/2006-02/msg00003.html>
+
+-- [[Main/TomBachmann]] - 30 Apr 2006
diff --git a/Hurd/ToDo.mdwn b/Hurd/ToDo.mdwn
new file mode 100644
index 00000000..0e6ef567
--- /dev/null
+++ b/Hurd/ToDo.mdwn
@@ -0,0 +1,21 @@
+# <a name="Debian_GNU_Hurd"> </a> Debian GNU/Hurd
+
+The Debian Hurd port maintains [a list of projects](http://alioth.debian.org/pm/?group_id=30628), both porting and general enhancements.
+
+# <a name="psmisc"> psmisc </a>
+
+The tools provided by the psmisc package are linux centric. Killall and pstree, for instance, require Linux's proc file system but could just as easily use Hurd's libps.
+
+-- [[NealWalfield]] - 14 Dec 2005
+
+# <a name="tmpfs"> tmpfs </a>
+
+# <a name="ppp"> ppp </a>
+
+# <a name="unionfs_stowfs"> unionfs/stowfs </a>
+
+# <a name="_http_hurd_gnufans_org_bin_view_"> </a> [Improve Mach](http://hurd.gnufans.org/bin/view/Mach/GNUMachRevivalProject)
+
+# <a name="supermount_translator"> supermount translator </a>
+
+# <a name="user_level_drivers"> user-level drivers </a>
diff --git a/Hurd/Translation.mdwn b/Hurd/Translation.mdwn
new file mode 100644
index 00000000..167419d1
--- /dev/null
+++ b/Hurd/Translation.mdwn
@@ -0,0 +1,21 @@
+\* [[HurdCn]]: <http://www.gnu.org/software/hurd/hurd.cn.html>
+
+\* [[HurdNl]]: <http://www.gnu.org/software/hurd/hurd.nl.html>
+
+\* [[HurdPl]] : <http://www.gnu.org/software/hurd/hurd.pl.html>
+
+\* [[HurdEo]]: <http://www.gnu.org/software/hurd/hurd.eo.html>
+
+\* [[HurdHe]] : <http://www.gnu.org/software/hurd/hurd.he.html>
+
+\* [[HurdEs]]: <http://www.gnu.org/software/hurd/hurd.es.html>
+
+\* [[HurdFr]]: <http://www.hurdfr.org> <http://wiki.hurdfr.org>
+
+\* [[HurdIt]]: <http://www.hurd.it>
+
+\* [[HurdRu]]: <http://hurd.kholmsk.ru>
+
+\* [[HurdPt]]:
+
+See also: [[XattrHurd]]
diff --git a/Hurd/TranslatorExamples.mdwn b/Hurd/TranslatorExamples.mdwn
new file mode 100644
index 00000000..227e9275
--- /dev/null
+++ b/Hurd/TranslatorExamples.mdwn
@@ -0,0 +1,65 @@
+## <a name="Introduction"> Introduction </a>
+
+Translators are probably the most known feature of the Hurd, the first thing you should show when doing a demo.
+
+## <a name="run"> run </a>
+
+Couldn't manage to compile it, but allows you to do nice things with eg. fortune.
+
+## <a name="ftpfs"> ftpfs </a>
+
+hurd:~# settrans -c ftp /hurd/ftpfs 128.101.80.131:/
+
+hurd:~# cd ftp
+
+hurd:~/ftp# ls
+
+debian debian-archive lost+found
+
+hurd:~/ftp# cd debian
+
+hurd:~/ftp/debian# ls
+
+README README.mirrors.txt doc ls-lR.patch.gz
+
+README.CD-manufacture README.non-US indices pool
+
+README.html README.pgp ls-lR project
+
+README.mirrors.html dists ls-lR.gz tools
+
+hurd:~/ftp/debian# cp README ~
+
+hurd:~/ftp/debian#
+
+You have to specify the server address with its IP, or your computer will buy a farm or something.
+
+## <a name="ftpfs_and_hostmux"> ftpfs and hostmux </a>
+
+currently (28/02/2004) not working, but should be.
+
+hurd:~# settrans -c ftp /hurd/hostmux /hurd/ftpfs /
+
+hurd:~# cd ftp
+
+hurd:~/ftp# cd ftp.debian.org
+
+-bash: cd: ftp.debian.org: Computer bought the farm
+
+hurd:~/ftp# host ftp.debian.org
+
+ftp.debian.org A 128.101.80.131
+
+ftp.debian.org A 208.185.25.38
+
+hurd:~/ftp# cd 128.101.80.131
+
+-bash: cd: 128.101.80.131: Computer bought the farm
+
+## <a name="Articles_about_translators"> Articles about translators </a>
+
+* [The GNU Hurd - Translators by Gael le Mignot](http://kilobug.free.fr/hurd/pres-en/html/node8.html)
+
+* [Translators by Marcus Brinkmann](http://www.gnu.org/software/hurd/whatis/translator.html)
+
+-- [[Main/LucasNussbaum]] - 28 Feb 2004
diff --git a/Hurd/TranslatorPages.mdwn b/Hurd/TranslatorPages.mdwn
new file mode 100644
index 00000000..a8e9b720
--- /dev/null
+++ b/Hurd/TranslatorPages.mdwn
@@ -0,0 +1,51 @@
+<dl>
+ <dt>[[NeighborHurd]]</dt>
+ <dd> A concept possible with microkernels. </dd>
+ <dt>[[InteractiveTranslators]]</dt>
+ <dd> Translators that interact with user </dd>
+ <dt>[[TranslatorExamples]]</dt>
+ <dd> Examples of what you can do with translators </dd>
+ <dt>[[TranslatorWishList]]</dt>
+ <dd> Interesting file translator ideas </dd>
+</dl>
+
+Here are the translators that currently exist:
+
+* [[AuthTranslator]]
+* [[CrashTranslator]]
+* [[ExecTranslator]]
+* [[ExtTwofsTranslator]] - (actually named ext2fs) Ext2 filesystems, also ext2fs.static
+* [[FifoTranslator]] - also [[NewfifoTranslator]] (actually named new-fifo)
+* [[FirmlinkTranslator]]
+* [[FtpfsTranslator]] - ftp as a filesystem
+* [[FwdTranslator]]
+* [[HelloTranslator]] - also [[HellomtTranslator]] (actually named hello-mt)
+* [[HostmuxTranslator]]
+* [[IfsockTranslator]]
+* [[InitTranslator]]
+* [[IsofsTranslator]]
+* [[KbdTranslator]]
+* [[MachdefpagerTranslator]] - (actually named mach-defpager)
+* [[MagicTranslator]]
+* [[MouseTranslator]]
+* [[NfsTranslator]]
+* [[NullTranslator]]
+* [[PasswordTranslator]]
+* [[PfinetTranslator]] - also [[PflocalTranslator]]
+* [[ProcTranslator]]
+* [[SmbfsTranslator]]
+* [[StoreioTranslator]]
+* [[StreamioTranslator]]
+* [[SymlinkTranslator]]
+* [[TermTranslator]]
+* [[TmpfsTranslator]]
+* [[UfsTranslator]] - also ufs.static
+* [[UsermuxTranslator]]
+
+Here are the contributed translators:
+
+* [[CryptTranslator]] - <http://www.trek.eu.org/devel/hurd/crypt-trans-0.0.3.tgz>
+
+This is an old list and might need some updating, please check if you have a Hurd system that this list is accurate.
+
+-- [[Main/GrantBow]] - 03 Mar 2004
diff --git a/Hurd/TranslatorWishList.mdwn b/Hurd/TranslatorWishList.mdwn
new file mode 100644
index 00000000..38bd87d9
--- /dev/null
+++ b/Hurd/TranslatorWishList.mdwn
@@ -0,0 +1,193 @@
+## <a name="Introduction"> Introduction </a>
+
+The idea behind file system translators is a powerful concept which hasn't recieved much attention in the mainstream computing world. So here is a list of interesting translators I've been able to dream up. I'm sure there are many more ideas floating around out there, so add them to the list!
+
+The [ferris project](http://witme.sourceforge.net/libferris.web/features.html) has some great ideas and code in the area of userspace dynamic filesystems, as has the [FUSE project](http://fuse.sourceforge.net/).
+
+## <a name="Audio_cdfs"> Audio\_cdfs </a>
+
+A translator which produces a directory of \*.wav files when you have an audio CD in the drive.
+
+## <a name="Ogg"> Ogg </a>
+
+This translator could be a sub-directory of the Audio\_cdfs translator and it would translate the \*.wav files into Ogg Vorbis/MP3 format.
+
+## <a name="CDDB"> </a> CDDB
+
+Of course it would be a lot nicer if the above two translators didn't name their files something worthless like track001.ogg. So we would want a translator which would hook up with a database on the web and produce meaningful file names.
+
+## <a name="Crypto"> Crypto </a>
+
+A cryptographic/steganographic seem like a nice match with the concept of user-land file systems. I like the idea of something like `settrans -a /secure stegfs --mpeg file001.mpg`
+
+## <a name="Revision_control"> Revision control </a>
+
+All of the empty space on your drive is now being wasted. Why not have a revision control translator which tracks changes to your documents? See also [this guy](http://www.linuxjournal.com/article.php?sid=5976). And then you'd do something like `cd /time-machine/2003/sept/14/` to see what your system looked like on the 14th of septempber 2003.
+
+## <a name="CVSFS"> </a> CVSFS
+
+See [cvsFS for Linux](http://cvsfs.sourceforge.net/). This provides a package which presents the CVS contents as mountable file system. It allows to view the versioned files as like they were ordinary files on a disk. There is also a possibility to check in/out some files for editing. A read-only version has been written by Stefan Siegl and is available at [Berlios](http://cvs.berlios.de/cgi-bin/viewcvs.cgi/cvsfs4hurd/cvsfs/).
+
+## <a name="tar_and_gzip"> tar and gzip </a>
+
+Rumor has it that they are on the way. Actually, a tar + gzip/bzip2 translator does exist (although it hasn't been used much...) : see [the Hurdextras project](http://savannah.nongnu.org/projects/hurdextras/) on Savannah.
+
+## <a name="ROM"> </a> ROM
+
+How about a translator which makes it look like you can write to read only media (like CDs), or change files which I don't have permission to change. This translator would make it seem like you could copy files to places where you normally couldn't. Think about combining this translator with the ftp translator and the tar and gzip translators. (cd /ftp/gnu.org/gnome.tar.gz/writes\_allowed; make install). It could be that unionfs does this very thing.
+
+## <a name="Super_FIFO"> Super\_FIFO </a>
+
+It's like a named pipe which is smart enough to start a process everytime something new tries to read from it. For example, let's say I have a script that reads in a JPEG image and spits out a smaller thumbnail \*.jpg to STDOUT. With a standard fifo (`mknod -p fifo`) this would almost works (`script big.jpg > fifo`). But what if there are two processes trying to read the fifo at once? Ick. And of course the standard way only works once without rerunning the command. I'm not quite sure what the syntax should look like, but I'm sure someone out there has a great idea waiting to happen.
+
+## <a name="Perl"> Perl </a>
+
+Perl is a wonderful language for hacking together something useful in a short amount of time. No concept is complete without being able to use it in a perl one-liner. And that goes for Hurd translators too. Right?
+
+ #!/usr/bin/perl
+ use Hurd::translator;
+
+ #file named "two" can produce an endless supply of twos, etc. (a la /dev/zero)
+ my $i=0;
+ for $filename ([zero one two three four])
+ {
+ $libtrivfsread_codehash{$filename}=
+ sub{ $num_bytes=shift; my $data=$i; return chr($data) x $num_bytes; };
+ #that's a hash of references to closures
+ $i++;
+ }
+ translator_startup();
+
+A Perl translator has been started by [John Edwin Tobey](http://john-edwin-tobey.org/Hurd/) (pith).
+
+## <a name="Source_code"> Source code </a>
+
+Here's a crazy thought. How about a translator for source code. You have a C source file like `hello.c` which is your normal everyday file. But there's a translator sitting underneath, so when you `cd hello.c` you get a directory with files like `main()` which represent the subroutines in `hello.c`. And of course you should be able to edit/remove those and have it modify the original source.
+
+## <a name="Libraries"> Libraries </a>
+
+Here's an [idea](http://www.circlemud.org/~jelson/software/fusd/docs/node13.html) from the people making [userspace drivers in Linux](http://www.circlemud.org/~jelson/software/fusd/):
+
+* "One particularly interesting application of FUSD that we've found very useful is as a way to let regular user-space libraries export device file APIs. For example, imagine you had a library which factored large composite numbers. Typically, it might have a C interface--say, a function called `int *factorize(int bignum)`. With FUSD, it's possible to create a device file interface--say, a device called `/dev/factorize` to which clients can `write(2)` a big number, then `read(2)` back its factors.
+
+* This may sound strange, but device file APIs have at least three advantages over a typical library API. First, it becomes much more language independent--any language that can make system calls can access the factorization library. Second, the factorization code is running in a different address space; if it crashes, it won't crash or corrupt the caller. Third, and most interestingly, it is possible to use `select(2)` to wait for the factorization to complete. `select(2)` would make it easy for a client to factor a large number while remaining responsive to other events that might happen in the meantime. In other words, FUSD allows normal user-space libraries to integrate seamlessly with UNIX's existing, POSIX-standard event notification interface: `select(2)`."
+
+## <a name="Mail"> Mail </a>
+
+Am I off my rocker, or does an IMAP/POP translator sound like a good idea? It would make your remote mail servers look like local ones. Or what about a translator that makes a mbox format mail spool look like a directory. Can anyone think of a good use for an SMTP translator?
+
+## <a name="UUEncode"> </a> UUEncode
+
+How about a UUEncode translator for those places you can only store ASCII. Combine this with a NNTP translator and store your data in someone's Usenet archive. Or since, (as far as I know), there are no size limitations on file names in the Hurd, why not have a filesystem translator whose underlying store is a file name. (Now ls becomes cat).
+
+## <a name="Computation"> Computation </a>
+
+This is from the revenge of the command-line department. Make a directory translator whose contents are a result of the computation specified in the directory name. Here's an example...
+
+ $ settrans -a /comp /hurd/computationfs
+ $ cd "/comp/3+4"
+ $ ls -l
+ total 0
+ -rw-r--r-- 1 nobody users 0 Oct 16 11:41 7
+ $
+ $ cd "/comp/sqrt(2)"
+ $ ls -l
+ total 0
+ -rw-r--r-- 1 nobody users 0 Oct 16 11:42 1.4142135623731
+ $
+
+...etc. Now think about your favorite GUI HTML editor and using File-&gt;Open on the following directory name, ``"/comp/for i in $( find / -name *.html ); do ln -s $i `basename $i`;done"`` Which would produce a directory listing with soft links to all of the \*.html files on your system. You could have all of the comforts of the shell from within that little File-&gt;Open dialog box.
+
+## <a name="Other"> Other </a>
+
+Just found Wolfgang J�hrling's translator [wishlist](http://www.8ung.at/shell/trans.html).
+
+## <a name="Bochs"> Bochs </a>
+
+A translator which works with [Bochs](http://bochs.sourceforge.net/) disk images would be nice.
+
+## <a name="Rollover"> Rollover </a>
+
+A translator that uses a circular buffer to store log files. The translated node only contains the last N (mega,kilo)bytes.
+
+## <a name="Birthday"> Birthday </a>
+
+A translator that provides an interface into the birthday program.
+
+You can cat your calendar, eg. bd/calendar/today bd/calendar/this-week or bd/calendar/this-month.
+
+And you could write new events into files located in bd/events/DATE/event-name.
+
+DATE is of the format the birthday expects DD/MM/YYYY.
+
+The contents of the file are any or none of the following birthday options: ann (An anniversary), bd (A birthday), ev (Some other event), wN (Warn N days in advance of date), toDATE (Event lasts until this DATE), forDAYS (Event runs for DAYS).
+
+You can optionally just edit the bd/birthdays file if you want to edit the configuration file by hand. It might make sense to write changes from bd/birthdays into ~/.birthdays.
+
+ $ settrans -c bd /hurd/birthday -f ~/.birthdays
+ $ ls bd/
+ birthdays calendar events
+ $ find bd -print
+ bd
+ bd/calendar
+ bd/calendar/daily
+ bd/calendar/this-week
+ bd/calendar/this-month
+ bd/events
+ bd/birthdays
+ $
+
+## <a name="LVM"> </a> LVM
+
+A translator to access block devices from Linux's [Logical Volume Management](http://www.tldp.org/HOWTO/LVM-HOWTO/) would be an useful addition.
+
+ # settrans -cap /dev/VolumeGroup0 /hurd/lvm /dev/PhysicalVolume0 /dev/PhysicalVolume1 ...
+ # ls /dev/VolumeGroup0/
+ home
+ var
+ # settrans -cap /home /hurd/ext2fs /dev/VolumeGroup0/home
+ # settrans -cap /var /hurd/ext2fs /dev/VolumeGroup0/var
+
+Probably both [LVM2](http://sourceware.org/lvm2/) and the [Device-mapper](http://sourceware.org/dm/) need to be ported.
+
+## <a name="bridging_translator"> bridging translator </a>
+
+A [bridging](http://bridge.sourceforge.net/faq.html) translator could improve the Hurd's networking facilities.
+
+ # settrans -cap /dev/br0 /hurd/bridge -i eth0 -i eth1 ...
+ # settrans -cap /servers/socket/2 /hurd/pfinet -i /dev/br0 -a ... -g ... -m ...
+
+Perhaps Linux's bridging code and [utilities](http://bridge.sourceforge.net/) can be ported (or glued in) or code from one of the BSDs.
+
+## <a name="SSH_translator"> </a> SSH translator
+
+Presenting remote file systems through SSH similar to what gnome-vfs does.
+
+## <a name="SMB_translator"> </a> SMB translator
+
+Presenting remote file systems through Samba similar to what gnome-vfs does. Guiseppe Scrivano has worked on this and smbfs is available at [hurdextras](http://savannah.nongnu.org/cgi-bin/viewcvs/hurdextras/smbfs/).
+
+## <a name="Crontab_translator"> Crontab translator </a>
+
+Presenting a user's crontab in a filesystem where cron entries are files.
+
+## <a name="globlink"> globlink </a>
+
+Firmlink to a file according to a filename matching pattern. When a file goes away, the next file that is matched is automatically linked to.
+
+ $ settrans -ac libfoo.so /hurd/globlink '/lib/libfoo*'
+
+## <a name="alphabetfs"> alphabetfs </a>
+
+Organize a large group of files by their first letter. Present one subdirectory for each letter in the alphabet.
+
+## <a name="fsysoptsctl"> fsysoptsctl </a>
+
+Send an fsysopts command to a set of translators. When you have a directory full of translators and you want to send each of them the same runtime option, this translator can do it for you.
+
+ $ settrans -ac all /hurd/fsysoptsctl '/tmp/mystuff/*'
+ $ fsysopts all --update
+
+----
+
+-- [[Main/GregBuchholz]] - updated 17 Oct 2003
diff --git a/Hurd/TrivialConfinementVsConstructorVsFork.mdwn b/Hurd/TrivialConfinementVsConstructorVsFork.mdwn
new file mode 100644
index 00000000..4d221a8e
--- /dev/null
+++ b/Hurd/TrivialConfinementVsConstructorVsFork.mdwn
@@ -0,0 +1,78 @@
+# <a name="About_this_page"> About this page </a>
+
+This page compares trivial confinement, the constructor mechanism, and POSIX fork(). First there is a short description of the process, then there is a discussion about the differences.
+
+This comparison is about a simple situation: there is a parent process P, which wants to spawn a child process C. We assume that P holds capabilities A and B. The end result should be that C holds a copy of A, but not of B.
+
+# <a name="Trivial_Confinement"> Trivial Confinement </a>
+
+For trivial confinement, there is a system call to create a process from some memory pages. P performs the following steps:
+
+* Allocate some memory and put the code image of the child into that memory. This can be done by P, or for example by the file system which then gives the resulting memory (space bank) to P.
+* Perform the system call on that memory. The result is a capability to C.
+* Send A to C using the returned capability.
+
+Note that it is up to the implementation of the system what happens with P's access to the memory which holds the child. For example, it is probably a good idea if it is at least unmapped, so it cannot accidentily write things in it. It could even be revoked, so that it can't write things in it, even if it wants to.
+
+# <a name="Constructor"> Constructor </a>
+
+With the constructor mechanism, there are programs running on the system for the purpose of starting new programs. This means that the process is split in two steps. They need not be performed by the same party, in fact they often aren't. So there are two parents, P1 and P2. The first step:
+
+* P1 sends a message to the meta-constructor M (a constructor to create new constructors) sending it the code image for the child (and due to the limitation of this discussion, no initial capabilities).
+* In respose, M creates a C-constructor and passes a capability to it to P1.
+
+The second step:
+
+* P2 somehow receives a copy of the capability to the C-constructor.
+* P2 uses the capability to tell the C-constructor it should build a new process. It provides memory and processor time for the purpose.
+* The C-constructor uses a method similar to Trivial Confinement to actually create C. It passes the capability C back to P2 as a reply to the capability invocation.
+* P2 passes A throught the returned capability to C.
+
+This mechanism is targeted at a specific use pattern, namely that a process is created once, and then spawned many times.
+
+# <a name="POSIX_Fork"> </a> POSIX Fork
+
+POSIX fork, or rather fork+exec, is how things are done on many current systems. It may be insightful to see it included in the comparison, especially for people who are new to the subject. There are two system calls, fork and exec. Fork will create a clone of the current process, including all the capabilities (that is, file descriptors) of the parent (except the ones which have explicitly been excluded). Exec is a system call which really goes to the filesystem, not the kernel (although on systems which use it, the filesystem usually resides in the kernel), and asks it to spawn a new process from the contents of a certain path in place of the caller. This passes all capabilities to the new process. The procedure is:
+
+* P calls fork(), creating P'.
+* P' drops B.
+* P' calls exec(), turning P' into C.
+
+# <a name="Fork_vs_the_others"> Fork vs the others </a>
+
+Fork is bad. The following text should convince the reader that we do not want to use fork. If it fails to do so, please write your reply to <l4-hurd@gnuNOSPAM.org>. We can then improve this text, either by using better arguments, or by saying that fork is acceptable after all. :-)
+
+First of all, it must be clear that we are using a capability-based system. This offers a lot of security that POSIX doesn't have. The actual solution presented below doesn really work on POSIX, because C can simply reopen all the files. After all, it is running as the same user, with all the same rights, as P. This is not the case in a capability based system. Every process needs a capability to do things. The closest to the POSIX concept of a "user" is a bunch of capabilities to all objects that the user is allowed to handle. However, even if P has all those capabilities, that doesn't mean C does as well. So for example, if P doesn't give a capability to the user's home directory (and it probably will not do that indeed, but it'll give a private part instead which C can use for files), then C cannot get access to the files in there. And so in particular, if P has a capability to ~/.ssh/id\_dsa, and it doesn't give it to C, then C cannot simply call open and get the capability from there, because the file isn't in its file system.
+
+The big difference between fork and the other options is capability B. B is a private capability of P. P does not want it to be passed anywhere. In all cases this is achieved. However, fork needs to be explicit about this. If P (or actually P') forgets to drop B, everything will still work (C didn't use B anyway). However, if C contains a security bug and is taken over by a cracker, then that cracker has access to B. This means that due to a simple mistake, the concequences of a compromised C are bigger than they need to be. This problem is of course even bigger if C is untrusted code in the first place, because it doesn't even need to be "taken over" then, it may simply be malicious.
+
+In contrast, the other two options don't pass anything by default. If there is a similar mistake there, they would forget to pass A to C. That will soon be noticed, because C actually needs A (otherwise it shouldn't receive it). So C will fail to work. This will quickly be fixed, resulting in a better program.
+
+## <a name="Solving_the_problem"> Solving the problem </a>
+
+The problem of fork+exec can be solved. It is if the default would be to not pass capabilities to the new process, but specify a list of capabilities that it should keep, or (like in the other cases) pass them over a new channel which is implicitly created during the fork. However, in that case the only difference with trivial confinement is that P' dies in the process (and thus must be created to prevent P from dying). Almost any use of exec is in practice preceded by a fork for this purpose. It would be easier to make trivial confinement the default operation and let P die directly after it in the rare case that it should.
+
+The only reason for continuing to use fork+exec would be that it is what existing programs do. However, they break anyway if they need to specify which file descriptors to pass. So they need to be adapted. Therefore, it's better to make the usual spawning method the primitive one, and emulate the other.
+
+# <a name="Trivial_Confinement_vs_Construct"> Trivial Confinement vs Constructor </a>
+
+Note: the following has not been extensively discussed on the mailing list, and no consensus has been reached AFAIK. This is the personal opinion of Bas Wijnen.
+
+The difference between trivial confinement and the constructor is one of control. With trivial confinement, P is in full control of the process (and since P is under full control of its own parent, that parent also fully controls C, and the parent's parent as well, etc. Note that the chain of parents is usually short). For example, if P is a debugger, it could choose to put some breakpoints into C before starting it. With the constructor, this control lies with P1. However, P2 is likely the one who will want to use the debugger. The constructor is explicitly designed to allow this type of control by the programmer (or system administrator) over the user.
+
+In the Hurd we want to enable the user to do these sort of things. We specifically don't want the administrator to use such control. So we do not need to provide the means for it in our system. (Note that not using a constructor doesn't actually guarantee that this kind of control is impossible.)
+
+Except for the control, there is really only one other difference, and that's address space separation. The constructor puts the code for process spawning into its own address space. This means that it cannot be corrupted by broken programs. Extending this principle would mean that every library call should be turned into a server which performs the operation for you. This is however also what trivial confinement does to a large extent anyway.
+
+What it doesn't do is protect the code image against bugs in P. In the constructor the trusted and well-tested constructor code is handling the image, for trivial confinement the (very possibly) buggy program P. In particular, when starting a program from a file system, with trivial confinement the operation is:
+
+* Ask the file system for the code, receive a capability to a space bank with a copy (on write) of it.
+* Make the system call to turn it into a program.
+
+Now this isn't much more complicated than the constructor which does:
+
+* Ask the filesystem (which the constructor is part of) to spawn a new process.
+
+Therefore I am not so convinced that we want a constructor. It gets in the way of debugging, for example, and it doesn't really give any gain.
+
+-- [[Main/BasWijnen]] - 13 Jun 2006
diff --git a/Hurd/UseCasePrivateKeys.mdwn b/Hurd/UseCasePrivateKeys.mdwn
new file mode 100644
index 00000000..612a8f25
--- /dev/null
+++ b/Hurd/UseCasePrivateKeys.mdwn
@@ -0,0 +1,13 @@
+_Private Keys_ as used by SSH servers, clients and generally by any cryptographic software need to be stored and manipulated securely. These may get replaced with smartcards soon, but in the mean time it appears to be an interesting use case.
+
+All Unix systems that I am aware of do not allow secrets to be protected in a manner that I would feel is appropiate. A users compromised web browser could either read your private key file or talk to the very popular ssh-agent program and get your secrets out (not sure how popular distributions are configured, but it can be done).
+
+The requirements so far are:
+
+* The secrets should not be available to general programs
+* The ability to use secrets for their intended purpose (signing/encryption/decryption/ssl streams)
+* Programs using decrypted data should be, by default, confined so that the data can't escape
+* Must be able to backupand restore secrets securely
+* Upgrading the agent software must be possible! using the backup/restore mechanism?
+
+-- [[Main/SamMason]] - 11 Jan 2007
diff --git a/Hurd/UseCaseUserFileSystem.mdwn b/Hurd/UseCaseUserFileSystem.mdwn
new file mode 100644
index 00000000..6dce5670
--- /dev/null
+++ b/Hurd/UseCaseUserFileSystem.mdwn
@@ -0,0 +1,14 @@
+### <a name="User_Loadable_Filesystems"> User Loadable Filesystems </a>
+
+These appear as _translators_ in the current Hurd and something similar needs to appear in the next hurd.
+
+* The user should be able to dynamically add and remove translators
+* For some reason it seems appropiate to have seperate namespaces (VFS's) for each user (this is quite a departure from Unix. [[SamMason]])
+* translators can be used to expose the structure of an archive file
+* translators can be provide access to remote file systems
+
+Anything else?
+
+Probably not something we want to worry about now; but I'm guessing that the semantics of the new kernel will be sufficently different from Mach that some rewriting of the existing translators will be needed. From a pragmatic point of view it would be _nice_ if there wasn't too much change.
+
+-- [[Main/SamMason]] - 11 Jan 2007
diff --git a/Hurd/UserGroups.mdwn b/Hurd/UserGroups.mdwn
new file mode 100644
index 00000000..0cb9b043
--- /dev/null
+++ b/Hurd/UserGroups.mdwn
@@ -0,0 +1,17 @@
+# <a name="Hurd_User_Groups"> Hurd User Groups </a>
+
+* [[Hurd/THUG]] - Toronto (GNU/)Hurd User Group
+* [Hurdfr.org](http://www.hurdfr.org/)
+* [[Hurd/AtelierGnuGulliver]] - Rennes - France
+* [Hurd.ru](http://www.hurd.ru/)
+* [[Hurd/CHUG]] - California Hurd User Group
+* [[Hurd/DHUG]] - Dunedin (GNU/)Hurd User Group
+* [[Hug/HurdBr]] - Hurd Br is a brasilian, portuguese speaking, HUG
+
+-- [[Main/SimonLaw]] - 25 May 2002
+
+-- [[Main/TWikiGuest]] - 08 Oct 2002
+
+-- [[Main/GrantBow]] - 11 Oct 2002
+
+-- [[Main/AndrewMitchell]] - 16 Oct 2002
diff --git a/Hurd/VMware.mdwn b/Hurd/VMware.mdwn
new file mode 100644
index 00000000..280c5e38
--- /dev/null
+++ b/Hurd/VMware.mdwn
@@ -0,0 +1,3 @@
+Moved to [[Distrib/VmWare]].
+
+-- [[Main/GrantBow]] - 22 Dec 2002
diff --git a/Hurd/WebChanges.mdwn b/Hurd/WebChanges.mdwn
new file mode 100644
index 00000000..de565147
--- /dev/null
+++ b/Hurd/WebChanges.mdwn
@@ -0,0 +1 @@
+%INCLUDE\{"%TWIKIWEB%.WebChanges"\}%
diff --git a/Hurd/WebDiscuss.mdwn b/Hurd/WebDiscuss.mdwn
new file mode 100644
index 00000000..196edd38
--- /dev/null
+++ b/Hurd/WebDiscuss.mdwn
@@ -0,0 +1,17 @@
+## <a name="Hurd_Web_Meta_Discussions"> Hurd Web Meta Discussions </a>
+
+Old discussions: [[WIKIHOMEURLHurdWebDiscussrev16]] | [[WIKIHOMEURLTWikiTWikiDiscussrev161]]
+
+This is an area to talk about how these pages are put together, edited and arranged. Without organization the navigation of the site could become unusable.
+
+Please add your comments below and then your signature, Blog style.
+
+----
+
+I cleaned up the rest of [[WebHome]] as well.
+
+-- [[Main/JoachimNilsson]] - 03 Feb 2003
+
+Sometimes for whatever reason, a topic has no parent. I feel sorry for these topics :-), so I will work on finishing a [[WebNoParent]] for this web and deploy it to all webs when I'm done.
+
+-- [[Main/GrantBow]] - 24 Apr 2004
diff --git a/Hurd/WebHome.mdwn b/Hurd/WebHome.mdwn
new file mode 100644
index 00000000..ae124080
--- /dev/null
+++ b/Hurd/WebHome.mdwn
@@ -0,0 +1,188 @@
+## <a name="The_Hurd"> The Hurd </a>
+
+This part of the wiki is dedicated to the the Hurd servers, the most important components comprising the GNU operating system. Built on top of the Mach microkernel the servers are designed to replace the functionality provided by regular monolithic UNIX kernels.
+
+If you cannot find what you look for the topic might have been moved to the new Distrib, Mach or GNU TWiki webs. This has been done to help clarify the different aspects of the GNU/Hurd efforts for new users.
+
+For an introduction to this site, see <http://hurd.gnufans.org>.
+
+<form action="%SCRIPTURLPATH%/search%SCRIPTSUFFIX%/%WEB%/">
+ <table>
+ <tr>
+ <td valign="top" width="65%">
+ <p>
+ </p>
+ <p>
+ </p>
+ <dl>
+ <dt>[[GNUHurdStatus]]</dt>
+ <dd> Things [[ToDo]] before the next release </dd>
+ <dt>[[KnownHurdLimits]]</dt>
+ <dd> Limitations of the GNU operating system. Includes updates on the status of [[RandomDevice]] (for ssh), [[DhcpClient]], [[PppDaemon]], [[HurdConsole]], [[ExtTwoSize]], other filesystems, etc. </dd>
+ <dt>[[SeenHurd]]</dt>
+ <dd> GNU/Hurd sightings. </dd>
+ <dt>[[TranslatorPages]]</dt>
+ <dd> What translators exist, info about them </dd>
+ <dt>[[FrequentlyAskedQuestions]]</dt>
+ <dd> For anything else you cannot find here. </dd>
+ </dl>
+ <p><nop></nop></p>
+ <h3><a name="Introduction"> Introduction </a></h3>
+ <p><a name="GnuHurd"></a></p>
+ <dl>
+ <dt>[[TheGnuHurd]]</dt>
+ <dd> About the GNU/Hurd System <a href="http://wiki.debian.org/TheHurd" target="_top">Debian Wiki about The Hurd</a>. </dd>
+ <dt>[[HurdNames]]</dt>
+ <dd> What does the HURD acronym stand for? </dd>
+ <dt><a href="http://lists.debian.org/debian-hurd/2002/debian-hurd-200210/msg00035.html" target="_top">Welcome Note</a></dt>
+ <dd> Formerly sent monthly to <a href="http://lists.debian.org/debian-hurd/" target="_top">debian-hurd@lists.debian.org</a> and <a href="http://mail.gnu.org/mailman/listinfo/help-hurd" target="_top">help-hurd@gnu.org</a></dd>
+ <dt><a href="http://wiki.debian.org/TheHurd" target="_top">Debian Wiki: Hurd</a></dt>
+ <dd>
+ </dd>
+ <dt>[[FunnyHurd]]</dt>
+ <dd> Logos, rumors and other funny unrelated stuff mentioning "Hurd" </dd>
+ <dt>[[Shopping]]</dt>
+ <dd> Items that can be bought. </dd>
+ <dt>[[Translation]]</dt>
+ <dd> Hurd translation and Hurd wiki page in different languages. </dd>
+ <dt><a href="http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00718.html" target="_top">History 1997-2003</a></dt>
+ <dd> Personal view of Marcus Brinkmann about Hurd development in 1997-2003. </dd>
+ </dl>
+ <p><nop></nop></p>
+ <h3><a name="Running_the_Hurd"> Running the Hurd </a></h3>
+ <dl>
+ <dt>[[LiveCD]]</dt>
+ <dd> Enjoy a bootable Hurd from within CD (opt. HD or USB installation). </dd>
+ <dt>[[QEMU]]</dt>
+ <dd> play downloaded [[LiveCd]] Isos without burn them (emulation). </dd>
+ <dt>[[FlashHurd]]</dt>
+ <dd> Bootable Hurd from within USB flash memory. </dd>
+ <dt>[[BuildingHurd]]</dt>
+ <dd>
+ </dd>
+ <dt>[[PublicHurdBoxen]]</dt>
+ <dd> Hurd boxes available to hack on. </dd>
+ <dt>[[SubhurdHowto]]</dt>
+ <dd>
+ </dd>
+ </dl>
+ <p><nop></nop></p>
+ <h3><a name="Running_Applications_on_the_Hurd"> Running Applications on the Hurd </a></h3>
+ <p>
+ </p>
+ <dl>
+ <dt>[[HurdConsole]]</dt>
+ <dd> How to set up the console. </dd>
+ <dt>[[Xfree86]]</dt>
+ <dd> Setting up X. </dd>
+ <dt>[[DebianX]]</dt>
+ <dd> Setting up X in Debian. </dd>
+ <dt>[[DebianXorg]]</dt>
+ <dd> Settin up Xorg in Debian. </dd>
+ <dt>[[GNUstep]]</dt>
+ <dd> Setting up GNUstep on Hurd. </dd>
+ </dl><nop><h3><a name="Technical_References"> Technical References </a></h3>
+ <p>
+ </p>
+ <ul>
+ <li><a href="http://www.gnu.org/software/hurd/docs.html" target="_top">Official documentation,  papers and presentations</a>: Available form the Hurd Web site. </li>
+ <li><a href="http://www.gnu.org/software/hurd/hurd-paper.html" target="_top">Towards a New  Strategy of OS Design</a>: an architectural overview by Thomas Bushnell, BSG. Marcus Brinkmann <a href="http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00651.html" target="_top">revisited some parts of the paper</a> and Jonathan S. Shapiro <a href="http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00654.html" target="_top">has further comments</a></li>
+ <li><a href="http://kilobug.free.fr/hurd/pres-en/slides/slides.html" target="_top">Presentation by  Ga�l Le Mignot</a>: </li>
+ <li><a href="http://www.pjbruin.dds.nl/hurd/" target="_top">Power PC port, using OSF Mach</a>: </li>
+ <li>[[DistributedServers]]: Architecture made possible by the Hurd. </li>
+ </ul>
+ <p><nop></nop></p>
+ <h3><a name="Developer_Notes"> Developer Notes </a></h3>
+ <p>
+ </p>
+ <ul>
+ <li>[[CrossCompiling]]. </li>
+ <li>[[HurdSpecificGlibcApi]]: Functions in GLIBC for the Hurd. </li>
+ <li>[[Debugging]]. </li>
+ <li>[[XattrHurd]]: Setting translators under GNU/Linux </li>
+ <li>[[ABITransitionStatus]]: Old info (early 2002) on the <abbrev title="Application Binary Interface">ABI</abbrev> transition </li>
+ <li>[[KernelCousinDebianHurd]]: A defunct newsletter about Hurd development. </li>
+ <li>[[Mach/OskitMachStatusList]]: Status and TODO information </li>
+ <li><a href="http://www.htu.tugraz.at/~past/hurd/global/" target="_top">Hurd Sourcecode Reference</a>: Searchable and browsable index of the code. </li>
+ <li>[[Mach/PortToL4]]: Out-dated Wiki. </li>
+ <li>[[HurdOnL4]]: Work in process for <strong>new</strong> wiki. </li>
+ <li>[[QemuImageForL4]]: </li>
+ <li>[[SubhurdHowto]]: Using and a neighbour for testing and debugging. </li>
+ <li>[[SerialConsole]]: Setting up a serial console. </li>
+ </ul>
+ <p>
+ </p>
+ <hr />
+ <p>
+ </p>
+ <dl>
+ <dt>[[InstallNotes]]</dt>
+ <dd> How to install the GNU system. <br /> For Further information, See the [[Distrib/WebHome]] web. </dd>
+ </dl>
+ <p>
+ </p>
+ <dl>
+ <dt> Community &amp;amp; People</dt>
+ <dd> Please see the [[Main/WebHome]] web for registered users information and Hurd community resources. </dd>
+ </dl>
+ <p> See [[HurdDonations]] if you've got more money than hack time. </p>
+ <p>
+ </p>
+ <dl>
+ <dt> Microkernel Systems</dt>
+ <dd> Please see the [[Mach/WebHome]] web </dd>
+ </dl>
+ <p>
+ </p>
+ <dl>
+ <dt> Developer Related</dt>
+ <dd> Please see above and the [[Distrib/WebHome]] web </dd>
+ </dl>
+ <p>
+ </p></nop></td>
+ <td>
+ </td>
+ <td valign="top" width="35%">
+ <p>
+ </p>
+ <table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <th bgcolor="#99CCCC"><strong>Hot Topics <font size="-1">([[WebStatistics]])</font></strong></th>
+ <th bgcolor="#99CCCC"><strong>Top Contributors</strong></th>
+ </tr>
+ </table> %INCLUDE{"WebStatistics" pattern=".*?\-\-statTopContributors\-\-\&amp;gt;[^\|]+\|[^\|]+\|[^\|]+\|[^\|]+\|[^\|]+\|[^\|]+(\|[^\|]+\|[^\|]+\|).*"}% <p>
+ </p><input name="search" size="20" type="text" /> <input type="submit" value="Search %WEB%" /><br /><font size="-1">More search options in [[WebSearch]]</font><br />
+ <p> Currently, Web refers to the Hurd Web. </p>
+ <p>
+ </p>
+ <ul>
+ <li>[[WebIndex]] - alphabetical </li>
+ <li>[[WebChanges]] - by modification time </li>
+ <li>[[WebNotify]] - email alerts </li>
+ </ul>
+ <p>
+ </p>
+ </td>
+ </tr>
+ </table>
+</form>
+
+----
+
+This site was [announced](http://mail.gnu.org/pipermail/bug-hurd/2002-May/008342.html) on May 12, 2002. The following are checkpoints for maintenance and administration:
+
+<dl>
+ <dt>[[TWiki/TWikiDiscuss]]</dt>
+ <dd> Maintenance topic for the Hurd Wiki as a whole. </dd>
+</dl>
+
+<dl>
+ <dt>[[TWiki/HurdWikiCopyrightDiscuss]]</dt>
+ <dd> Copyright, licensing and legal discussion. </dd>
+ <dt>[[TWiki/HurdWikiMove]]</dt>
+ <dd> We're looking for a more permanent host. </dd>
+ <dt>[[Main/HurdGnuFansOrgDiscuss]]</dt>
+ <dd> Topic about the <a href="http://hurd.gnunfans.org" target="_top">http://hurd.gnunfans.org</a> front HTML page. </dd>
+ <dt>[[WebPreferences]]</dt>
+ <dd> For the admins only, personal settings on your home topic. </dd>
+</dl>
diff --git a/Hurd/WebIndex.mdwn b/Hurd/WebIndex.mdwn
new file mode 100644
index 00000000..0732324b
--- /dev/null
+++ b/Hurd/WebIndex.mdwn
@@ -0,0 +1,3 @@
+%SEARCH\{"\\.\*" scope="topic" regex="on" nosearch="on"\}%
+
+See also the faster [[WebTopicList]]
diff --git a/Hurd/WebNoParent.mdwn b/Hurd/WebNoParent.mdwn
new file mode 100644
index 00000000..1140fc55
--- /dev/null
+++ b/Hurd/WebNoParent.mdwn
@@ -0,0 +1,5 @@
+**PAGE UNDER CONSTRUCTION**
+
+These topics have no parent at the moment.
+
+%SEARCH\{"TOPICPARENT.\*\\"\\"" web="%INCLUDINGWEB%" regex="on" nosearch="on" order="modified" reverse="on" nototal="on"\}%
diff --git a/Hurd/WebNotify.mdwn b/Hurd/WebNotify.mdwn
new file mode 100644
index 00000000..703d8882
--- /dev/null
+++ b/Hurd/WebNotify.mdwn
@@ -0,0 +1,13 @@
+%NOTIFYTOPIC% is a subscription service to be automatically notified by email when topics change in the **%WIKITOOLNAME%.%WEB%** web. This is a convenient service, so you do not have to come back and check all the time if something has changed. To subscribe to the service, please put yourself on the list below. The format is: `3 spaces * %MAINWEB%.yourWikiName - yourEmailAddress`
+
+* [[Main/AaronHawley]]- <ashawley@uvmNOSPAM.edu>
+* [[Main/DeepakGoel]] - <deego@gnufansNOSPAM.org>
+* [[Main/GrantBow]] - <grantbow@svpalNOSPAM.org>
+* [[Main/HishamKotry]] - [etsh\_cucu@yahooNOSPAM.com](mailto:etsh_cucu@yahooNOSPAM.com)
+* [[Main/JoachimNilsson]] - <joachim@gnufansNOSPAM.org>
+* [[Main/OgnyanKulev]] - <ogi@fmi.uni-sofiaNOSPAM.bg>
+* [[Main/ThomasSchwinge]] - <tschwinge@gnuNOSPAM.org>
+
+**_Note:_** It is helpful to insert your name in alphabetical order (by first name -- ignore the "Main.") -- then you can find your name (or not) more easily if you wish to remove it or confirm that you are on the list.
+
+**_Related topics:_** %MAINWEB%.%WIKIUSERSTOPIC%, %TWIKIWEB%.TWikiRegistration
diff --git a/Hurd/WebPreferences.mdwn b/Hurd/WebPreferences.mdwn
new file mode 100644
index 00000000..bdae9362
--- /dev/null
+++ b/Hurd/WebPreferences.mdwn
@@ -0,0 +1,52 @@
+## <a name="_WIKITOOLNAME_WEB_Web_Preference"> %WIKITOOLNAME%.%WEB% Web Preferences </a>
+
+The following settings are **_web preferences_** of the %WIKITOOLNAME%.%WEB% web. These preferences overwrite the **_site-level preferences_** in %TWIKIWEB%.%WIKIPREFSTOPIC%, and can be overwritten by **_user preferences_** (your personal topic, i.e. %MAINWEB%.TWikiGuest in the %WIKITOOLNAME%.%MAINWEB% web)
+
+**_Preferences:_**
+
+* List of topics of the %WIKITOOLNAME%.%WEB% web:
+ * Set WEBTOPICLIST = [[WebPreferences]] | [[WebChanges]] | [[WebIndex]] | [[WebSearch]]  | Go <input name="topic" size="16" type="text" />
+
+* Web specific background color: (Pick a lighter one of the %TWIKIWEB%.StandardColors)
+ * Old setting Set WEBBGCOLOR = #D0D0D0, #EEEEEE is not in 256 color palette either.
+ * Set WEBBGCOLOR = #CCCCCC
+
+* Exclude web from a `web="all"` search: (Set to `on` for hidden webs)
+ * Set NOSEARCHALL =
+
+* Default template for new topics and form(s) for this web:
+ * [[WebTopicEditTemplate]]: Default template for new topics in this web. (Site-level is used if topic does not exist)
+ * [[TWIKIWEBWebTopicEditTemplate]]: Site-level default template
+ * %TWIKIWEB%.TWikiForms: How to enable form(s)
+ * Set WEBFORMS = [[HurdReleaseForm]], [[KnownLimitForm]]
+
+* Users or groups who **_are not_** / **_are_** allowed to **_view_** / **_change_** / **_rename_** topics in the %WEB% web: (See %TWIKIWEB%.TWikiAccessControl)
+ * Set DENYWEBVIEW =
+ * Set ALLOWWEBVIEW =
+ * Set DENYWEBCHANGE =
+ * Set ALLOWWEBCHANGE =
+ * Set DENYWEBRENAME =
+ * Set ALLOWWEBRENAME =
+
+* Users or groups allowed to change or rename this %TOPIC% topic: (I.e. %MAINWEB%.TWikiAdminGroup)
+ * Set ALLOWTOPICCHANGE = %MAINWEB%.TWikiAdminGroup
+ * Set ALLOWTOPICRENAME = %MAINWEB%.TWikiAdminGroup
+
+* Web preferences that are **not** allowed to be overridden by user preferences:
+ * Set FINALPREFERENCES = WEBTOPICLIST, DENYWEBVIEW, ALLOWWEBVIEW, DENYWEBCHANGE, ALLOWWEBCHANGE, DENYWEBRENAME, ALLOWWEBRENAME
+
+**_Notes:_**
+
+* A preference is defined as: <br />`6 spaces * Set NAME = value`<br /> Example:
+ * Set WEBBGCOLOR = #FFFFC0
+* Preferences are used as %TWIKIWEB%.TWikiVariables by enclosing the name in percent signs. Example:
+ * When you write variable <code>%WEBBGCOLOR%</code> , it gets expanded to `%WEBBGCOLOR%` .
+* The sequential order of the preference settings is significant. Define preferences that use other preferences first, i.e. set <code>WEBCOPYRIGHT</code> before <code>WIKIWEBMASTER</code> since <code>%WEBCOPYRIGHT%</code> uses the <code>%WIKIWEBMASTER%</code> variable.
+* You can introduce new preferences variables and use them in your topics and templates. There is no need to change the %WIKITOOLNAME% engine (Perl scripts).
+
+**_Related Topics:_**
+
+* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences.
+* %MAINWEB%.%WIKIUSERSTOPIC% has a list of user topics. User topics can have optional user preferences.
+* %TWIKIWEB%.TWikiVariables has a list of common <code>%VARIABLES%</code>.
+* %TWIKIWEB%.TWikiAccessControl explains how to restrict access by users or groups.
diff --git a/Hurd/WebSearch.mdwn b/Hurd/WebSearch.mdwn
new file mode 100644
index 00000000..b6d43d86
--- /dev/null
+++ b/Hurd/WebSearch.mdwn
@@ -0,0 +1 @@
+%INCLUDE\{"%TWIKIWEB%.WebSearch"\}%
diff --git a/Hurd/WebStatistics.mdwn b/Hurd/WebStatistics.mdwn
new file mode 100644
index 00000000..c4499e17
--- /dev/null
+++ b/Hurd/WebStatistics.mdwn
@@ -0,0 +1,421 @@
+## <a name="Statistics_for_WIKITOOLNAME_WEB_"> Statistics for %WIKITOOLNAME%.%WEB% Web </a>
+
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <th bgcolor="#99CCCC"><strong>Month:</strong></th>
+ <th bgcolor="#99CCCC"><strong>Topic <br /> views:</strong></th>
+ <th bgcolor="#99CCCC"><strong>Topic <br /> saves:</strong></th>
+ <th bgcolor="#99CCCC"><strong>File <br /> uploads:</strong></th>
+ <th bgcolor="#99CCCC"><strong>Most popular <br /> topic views:</strong></th>
+ <th bgcolor="#99CCCC"><strong>Top contributors for <br /> topic save and uploads:</strong></th>
+ </tr>
+ <tr>
+ <td>
+ </td>
+ <td>
+ </td>
+ <td>
+ </td>
+ <td>
+ </td>
+ <td>
+ </td>
+ <td>
+ </td>
+ </tr>
+ <tr>
+ <td> Mar 2006 </td>
+ <td align="right"> 1461 </td>
+ <td align="right"> 19 </td>
+ <td align="right"> 0 </td>
+ <td> 217 [[WebHome]]<br />  51 [[GNUHurdStatus]]<br />  49 [[DebianXorg]]<br />  43 [[KnownHurdLimits]]<br />  41 [[SeenHurd]]<br />  38 [[HurdConsole]]<br />  37 [[LiveCD]]<br />  37 [[HurdOnL4]]<br />  37 [[FrequentlyAskedQuestions]]<br />  36 [[QemuImageForL4]]<br />  35 [[GNUstep]]</td>
+ <td>   9 [[Main/TWikiGuest]]<br />   5 [[Main/MichaelBanck]]<br />   5 [[Main/BarryDeFreese]]</td>
+ </tr>
+ <tr>
+ <td> Feb 2006 </td>
+ <td align="right"> 2053 </td>
+ <td align="right"> 5 </td>
+ <td align="right"> 0 </td>
+ <td> 535 [[WebHome]]<br /> 131 [[GNUHurdStatus]]<br /> 119 [[HurdOnL4]]<br />  90 [[SeenHurd]]<br />  87 [[KnownHurdLimits]]<br />  77 [[QemuImageForL4]]<br />  71 [[FrequentlyAskedQuestions]]<br />  63 [[TheGnuHurd]]<br />  62 [[LiveCD]]<br />  49 [[MailLists]]<br />  45 [[ToDo]]</td>
+ <td>   3 [[Main/AaronHawley]]<br />   2 [[Main/BarryDeFreese]]</td>
+ </tr>
+ <tr>
+ <td> Jan 2006 </td>
+ <td align="right"> 3263 </td>
+ <td align="right"> 21 </td>
+ <td align="right"> 0 </td>
+ <td> 924 [[WebHome]]<br /> 275 [[GNUHurdStatus]]<br /> 174 [[HurdOnL4]]<br /> 170 [[KnownHurdLimits]]<br /> 149 [[TheGnuHurd]]<br /> 144 [[SeenHurd]]<br /> 119 [[FrequentlyAskedQuestions]]<br />  98 [[QemuImageForL4]]<br />  98 [[LiveCD]]<br />  72 [[TranslatorWishList]]<br />  65 [[TranslatorPages]]</td>
+ <td>  15 [[Main/TWikiGuest]]<br />   3 [[Main/MichaelBanck]]<br />   2 [[Main/OgnyanKulev]]<br />   1 [[Main/BenAsselstine]]</td>
+ </tr>
+ <tr>
+ <td> Dec 2005 </td>
+ <td align="right"> 2192 </td>
+ <td align="right"> 5 </td>
+ <td align="right"> 0 </td>
+ <td> 543 [[WebHome]]<br /> 149 [[GNUHurdStatus]]<br /> 103 [[KnownHurdLimits]]<br />  96 [[FrequentlyAskedQuestions]]<br />  95 [[SeenHurd]]<br />  92 [[TranslatorWishList]]<br />  84 [[TheGnuHurd]]<br />  75 [[QemuImageForL4]]<br />  73 [[LiveCD]]<br />  73 [[HurdOnL4]]<br />  46 [[TranslatorPages]]</td>
+ <td>   5 [[Main/TWikiGuest]]</td>
+ </tr>
+ <tr>
+ <td> Nov 2005 </td>
+ <td align="right"> 2746 </td>
+ <td align="right"> 52 </td>
+ <td align="right"> 0 </td>
+ <td> 670 [[WebHome]]<br /> 185 [[TranslatorWishList]]<br /> 147 [[GNUHurdStatus]]<br /> 140 [[HurdOnL4]]<br /> 132 [[QemuImageForL4]]<br /> 132 [[LiveCD]]<br /> 113 [[KnownHurdLimits]]<br /> 111 [[SeenHurd]]<br />  99 [[FrequentlyAskedQuestions]]<br />  67 [[TranslatorPages]]<br />  65 [[TheGnuHurd]]</td>
+ <td>  48 [[Main/PedroMacanas]]<br />   3 [[Main/MichaelBanck]]<br />   1 [[Main/OgnyanKulev]]</td>
+ </tr>
+ <tr>
+ <td> Oct 2005 </td>
+ <td align="right"> 2242 </td>
+ <td align="right"> 5 </td>
+ <td align="right"> 0 </td>
+ <td> 599 [[WebHome]]<br /> 227 [[TranslatorWishList]]<br /> 150 [[GNUHurdStatus]]<br /> 121 [[HurdOnL4]]<br /> 115 [[KnownHurdLimits]]<br /> 110 [[QemuImageForL4]]<br />  97 [[LiveCD]]<br />  81 [[FrequentlyAskedQuestions]]<br />  79 [[TheGnuHurd]]<br />  76 [[SeenHurd]]<br />  52 [[TranslatorPages]]</td>
+ <td>   3 [[Main/ThomasSchwinge]]<br />   2 [[Main/TWikiGuest]]</td>
+ </tr>
+ <tr>
+ <td> Sep 2005 </td>
+ <td align="right"> 4318 </td>
+ <td align="right"> 3 </td>
+ <td align="right"> 0 </td>
+ <td> 1698 [[TranslatorWishList]]<br /> 599 [[WebHome]]<br /> 199 [[HurdOnL4]]<br /> 164 [[GNUHurdStatus]]<br /> 139 [[SeenHurd]]<br /> 136 [[KnownHurdLimits]]<br /> 128 [[LiveCD]]<br /> 115 [[QemuImageForL4]]<br />  97 [[TheGnuHurd]]<br />  91 [[FrequentlyAskedQuestions]]<br />  62 [[TranslatorPages]]</td>
+ <td>   2 [[Main/ThadeuCascardo]]<br />   1 [[Main/ThomasSchwinge]]</td>
+ </tr>
+ <tr>
+ <td> Aug 2005 </td>
+ <td align="right"> 2650 </td>
+ <td align="right"> 0 </td>
+ <td align="right"> 0 </td>
+ <td> 633 [[WebHome]]<br /> 173 [[GNUHurdStatus]]<br /> 162 [[QemuImageForL4]]<br /> 154 [[HurdOnL4]]<br /> 142 [[LiveCD]]<br /> 137 [[KnownHurdLimits]]<br /> 123 [[SeenHurd]]<br />  96 [[FrequentlyAskedQuestions]]<br />  73 [[TheGnuHurd]]<br />  66 [[TranslatorPages]]<br />  54 [[RandomDevice]]</td>
+ <td>   </td>
+ </tr>
+ <tr>
+ <td> Jul 2005 </td>
+ <td align="right"> 2931 </td>
+ <td align="right"> 2 </td>
+ <td align="right"> 0 </td>
+ <td> 981 [[WebHome]]<br /> 192 [[QemuImageForL4]]<br /> 162 [[LiveCD]]<br /> 153 [[KnownHurdLimits]]<br /> 144 [[GNUHurdStatus]]<br /> 119 [[SeenHurd]]<br /> 117 [[FrequentlyAskedQuestions]]<br /> 114 [[HurdOnL4]]<br />  73 [[HurdConsole]]<br />  70 [[TheGnuHurd]]<br />  62 [[TranslatorPages]]</td>
+ <td>   2 [[Main/TWikiGuest]]</td>
+ </tr>
+ <tr>
+ <td> Jun 2005 </td>
+ <td align="right"> 2929 </td>
+ <td align="right"> 1 </td>
+ <td align="right"> 0 </td>
+ <td> 652 [[WebHome]]<br /> 184 [[LiveCD]]<br /> 182 [[GNUHurdStatus]]<br /> 167 [[HurdOnL4]]<br /> 158 [[QemuImageForL4]]<br /> 153 [[KnownHurdLimits]]<br /> 131 [[SeenHurd]]<br />  93 [[FrequentlyAskedQuestions]]<br />  89 [[TheGnuHurd]]<br />  67 [[WebChanges]]<br />  55 [[HurdConsole]]</td>
+ <td>   1 [[Main/TWikiGuest]]</td>
+ </tr>
+ <tr>
+ <td> May 2005 </td>
+ <td align="right"> 3223 </td>
+ <td align="right"> 4 </td>
+ <td align="right"> 0 </td>
+ <td> 850 [[WebHome]]<br /> 308 [[QemuImageForL4]]<br /> 210 [[LiveCD]]<br /> 189 [[GNUHurdStatus]]<br /> 157 [[HurdOnL4]]<br /> 138 [[KnownHurdLimits]]<br /> 131 [[SeenHurd]]<br /> 112 [[FrequentlyAskedQuestions]]<br /> 101 [[TheGnuHurd]]<br />  86 [[HurdConsole]]<br />  76 [[WebChanges]]</td>
+ <td>   2 [[Main/MatteoSettenvini]]<br />   1 [[Main/TWikiGuest]]<br />   1 [[Main/AndrewResch]]</td>
+ </tr>
+ <tr>
+ <td> Apr 2005 </td>
+ <td align="right"> 2742 </td>
+ <td align="right"> 20 </td>
+ <td align="right"> 1 </td>
+ <td> 685 [[WebHome]]<br /> 226 [[LiveCD]]<br /> 208 [[QemuImageForL4]]<br /> 178 [[HurdOnL4]]<br /> 143 [[GNUHurdStatus]]<br /> 125 [[KnownHurdLimits]]<br /> 112 [[SeenHurd]]<br />  94 [[FrequentlyAskedQuestions]]<br />  83 [[TheGnuHurd]]<br />  75 [[HurdConsole]]<br />  66 [[WebChanges]]</td>
+ <td>  15 [[Main/JoachimNilsson]]<br />   2 [[Main/TWikiGuest]]<br />   2 [[Main/AndrewResch]]<br />   1 [[Main/ThomasSchwinge]]<br />   1 [[Main/AaronHawley]]</td>
+ </tr>
+ <tr>
+ <td> Mar 2005 </td>
+ <td align="right"> 4451 </td>
+ <td align="right"> 12 </td>
+ <td align="right"> 0 </td>
+ <td> 1088 [[WebHome]]<br /> 391 [[QemuImageForL4]]<br /> 375 [[LiveCD]]<br /> 242 [[HurdOnL4]]<br /> 226 [[GNUHurdStatus]]<br /> 207 [[SeenHurd]]<br /> 205 [[KnownHurdLimits]]<br /> 147 [[FrequentlyAskedQuestions]]<br /> 122 [[TranslatorWishList]]<br /> 114 [[TheGnuHurd]]<br /> 112 [[TranslatorPages]]</td>
+ <td>   6 [[Main/TWikiGuest]]<br />   4 [[Main/OgnyanKulev]]<br />   1 [[Main/NowhereMan]]<br />   1 [[Main/JoachimNilsson]]</td>
+ </tr>
+ <tr>
+ <td> Feb 2005 </td>
+ <td align="right"> 6565 </td>
+ <td align="right"> 31 </td>
+ <td align="right"> 0 </td>
+ <td> 1722 [[WebHome]]<br /> 1020 [[QemuImageForL4]]<br /> 730 [[HurdOnL4]]<br /> 380 [[GNUHurdStatus]]<br /> 365 [[LiveCD]]<br /> 284 [[SeenHurd]]<br /> 256 [[KnownHurdLimits]]<br /> 219 [[TheGnuHurd]]<br /> 188 [[FrequentlyAskedQuestions]]<br /> 116 [[HurdConsole]]<br />  97 [[DebianX]]</td>
+ <td>  10 [[Main/AlexandreBuisse]]<br />   7 [[Main/OgnyanKulev]]<br />   5 [[Main/TWikiGuest]]<br />   4 [[Main/JoachimNilsson]]<br />   2 [[Main/DerekDavies]]<br />   2 [[Main/AndrewResch]]<br />   1 [[Main/MichaelAdams]]</td>
+ </tr>
+ <tr>
+ <td> Jan 2005 </td>
+ <td align="right"> 9556 </td>
+ <td align="right"> 2 </td>
+ <td align="right"> 0 </td>
+ <td> 1820 [[WebHome]]<br /> 438 [[HurdOnL4]]<br /> 438 [[GNUHurdStatus]]<br /> 407 [[KnownHurdLimits]]<br /> 399 [[TranslatorWishList]]<br /> 384 [[LiveCD]]<br /> 271 [[SeenHurd]]<br /> 267 [[HurdConsole]]<br /> 265 [[FrequentlyAskedQuestions]]<br /> 258 [[JoachimNilssonHurdPage]]<br /> 248 [[InstallNotes]]</td>
+ <td>   1 [[Main/TWikiGuest]]<br />   1 [[Main/AndrewResch]]</td>
+ </tr>
+ <tr>
+ <td> Dec 2004 </td>
+ <td align="right"> 8760 </td>
+ <td align="right"> 8 </td>
+ <td align="right"> 0 </td>
+ <td> 1483 [[WebHome]]<br /> 406 [[HurdOnL4]]<br /> 367 [[LiveCD]]<br /> 339 [[GNUHurdStatus]]<br /> 338 [[KnownHurdLimits]]<br /> 279 [[SeenHurd]]<br /> 275 [[InstallNotes]]<br /> 235 [[FrequentlyAskedQuestions]]<br /> 230 [[WebStatistics]]<br /> 217 [[HurdConsole]]<br /> 209 [[JoachimNilssonHurdPage]]</td>
+ <td>   4 [[Main/BarryDeFreese]]<br />   3 [[Main/OgnyanKulev]]<br />   1 [[Main/LoganadenVelvindron]]</td>
+ </tr>
+ <tr>
+ <td> Nov 2004 </td>
+ <td align="right"> 7272 </td>
+ <td align="right"> 3 </td>
+ <td align="right"> 0 </td>
+ <td> 1323 [[WebHome]]<br /> 364 [[LiveCD]]<br /> 292 [[GNUHurdStatus]]<br /> 271 [[HurdOnL4]]<br /> 263 [[KnownHurdLimits]]<br /> 224 [[InstallNotes]]<br /> 214 [[JoachimNilssonHurdPage]]<br /> 213 [[SeenHurd]]<br /> 188 [[WebChanges]]<br /> 182 [[FrequentlyAskedQuestions]]<br /> 170 [[MailLists]]</td>
+ <td>   3 [[Main/MauriceMcCarthy]]</td>
+ </tr>
+ <tr>
+ <td> Oct 2004 </td>
+ <td align="right"> 8391 </td>
+ <td align="right"> 17 </td>
+ <td align="right"> 0 </td>
+ <td> 1394 [[WebHome]]<br /> 961 [[LiveCD]]<br /> 389 [[SeenHurd]]<br /> 361 [[KnownHurdLimits]]<br /> 339 [[GNUHurdStatus]]<br /> 336 [[HurdOnL4]]<br /> 238 [[FrequentlyAskedQuestions]]<br /> 232 [[HurdConsole]]<br /> 226 [[TheGnuHurd]]<br /> 210 [[InstallNotes]]<br /> 187 [[JoachimNilssonHurdPage]]</td>
+ <td>  17 [[Main/OgnyanKulev]]</td>
+ </tr>
+ <tr>
+ <td> Sep 2004 </td>
+ <td align="right"> 8294 </td>
+ <td align="right"> 34 </td>
+ <td align="right"> 0 </td>
+ <td> 1492 [[WebHome]]<br /> 396 [[WebStatistics]]<br /> 367 [[KnownHurdLimits]]<br /> 363 [[LiveCD]]<br /> 336 [[GNUHurdStatus]]<br /> 279 [[HurdConsole]]<br /> 254 [[SeenHurd]]<br /> 232 [[HurdOnL4]]<br /> 206 [[InstallNotes]]<br /> 197 [[JoachimNilssonHurdPage]]<br /> 188 [[FrequentlyAskedQuestions]]</td>
+ <td>  29 [[Main/OgnyanKulev]]<br />   2 [[Main/BenAsselstine]]<br />   1 [[Main/PatrickStrasser]]<br />   1 [[Main/JoachimNilsson]]<br />   1 [[Main/GaborGreif]]</td>
+ </tr>
+ <tr>
+ <td> Aug 2004 </td>
+ <td align="right"> 8691 </td>
+ <td align="right"> 12 </td>
+ <td align="right"> 0 </td>
+ <td> 1339 [[WebHome]]<br /> 417 [[LiveCD]]<br /> 413 [[HurdOnL4]]<br /> 349 [[WebStatistics]]<br /> 334 [[KnownHurdLimits]]<br /> 319 [[GNUHurdStatus]]<br /> 273 [[SeenHurd]]<br /> 248 [[InstallNotes]]<br /> 241 [[JoachimNilssonHurdPage]]<br /> 226 [[FrequentlyAskedQuestions]]<br /> 197 [[HurdConsole]]</td>
+ <td>   4 [[Main/TWikiGuest]]<br />   3 [[Main/OgnyanKulev]]<br />   2 [[Main/BertrikSikken]]<br />   1 [[Main/PatrickStrasser]]<br />   1 [[Main/NeillMiller]]<br />   1 [[Main/CarlosPoker]]</td>
+ </tr>
+ <tr>
+ <td> Jul 2004 </td>
+ <td align="right"> 8134 </td>
+ <td align="right"> 12 </td>
+ <td align="right"> 2 </td>
+ <td> 1284 [[WebHome]]<br /> 490 [[LiveCD]]<br /> 372 [[KnownHurdLimits]]<br /> 361 [[GNUHurdStatus]]<br /> 323 [[HurdOnL4]]<br /> 289 [[SeenHurd]]<br /> 277 [[WebStatistics]]<br /> 241 [[InstallNotes]]<br /> 213 [[JoachimNilssonHurdPage]]<br /> 209 [[FrequentlyAskedQuestions]]<br /> 203 [[TheGnuHurd]]</td>
+ <td>   8 [[Main/TWikiGuest]]<br />   4 [[Main/PatrickStrasser]]<br />   2 [[Main/BertrikSikken]]</td>
+ </tr>
+ <tr>
+ <td> Jun 2004 </td>
+ <td align="right"> 6010 </td>
+ <td align="right"> 23 </td>
+ <td align="right"> 1 </td>
+ <td> 1286 [[WebHome]]<br /> 387 [[HurdOnL4]]<br /> 302 [[WebStatistics]]<br /> 288 [[GNUHurdStatus]]<br /> 241 [[KnownHurdLimits]]<br /> 224 [[SeenHurd]]<br /> 170 [[FrequentlyAskedQuestions]]<br /> 166 [[InstallNotes]]<br /> 158 [[JoachimNilssonHurdPage]]<br /> 134 [[TheGnuHurd]]<br /> 118 [[LiveCD]]</td>
+ <td>  17 [[Main/BDouglasHilton]]<br />   2 [[Main/TWikiGuest]]<br />   2 [[Main/PedroMacanas]]<br />   1 [[Main/TheoraGuldhra]]<br />   1 [[Main/OgnyanKulev]]<br />   1 [[Main/FabriceBauzac]]</td>
+ </tr>
+ <tr>
+ <td> May 2004 </td>
+ <td align="right"> 4112 </td>
+ <td align="right"> 3 </td>
+ <td align="right"> 0 </td>
+ <td> 1114 [[WebHome]]<br /> 270 [[GNUHurdStatus]]<br /> 203 [[KnownHurdLimits]]<br /> 168 [[SeenHurd]]<br /> 137 [[FrequentlyAskedQuestions]]<br /> 119 [[LiveCD]]<br /> 115 [[HurdConsole]]<br /> 104 [[JoachimNilssonHurdPage]]<br />  98 [[TheGnuHurd]]<br />  88 [[MailLists]]<br />  85 [[HurdIRC]]</td>
+ <td>   1 [[Main/OgnyanKulev]]<br />   1 [[Main/MarcoGerards]]<br />   1 [[Main/JoachimNilsson]]</td>
+ </tr>
+ <tr>
+ <td> Apr 2004 </td>
+ <td align="right"> 3365 </td>
+ <td align="right"> 5 </td>
+ <td align="right"> 0 </td>
+ <td> 893 [[WebHome]]<br /> 216 [[GNUHurdStatus]]<br /> 190 [[KnownHurdLimits]]<br /> 145 [[SeenHurd]]<br /> 119 [[FrequentlyAskedQuestions]]<br /> 110 [[InstallNotes]]<br /> 103 [[WebChanges]]<br />  95 [[HurdConsole]]<br />  87 [[JoachimNilssonHurdPage]]<br />  74 [[WebStatistics]]<br />  70 [[MailLists]]</td>
+ <td>   5 [[Main/GrantBow]]</td>
+ </tr>
+ <tr>
+ <td> Mar 2004 </td>
+ <td align="right"> 4413 </td>
+ <td align="right"> 36 </td>
+ <td align="right"> 0 </td>
+ <td> 1146 [[WebHome]]<br /> 274 [[GNUHurdStatus]]<br /> 217 [[KnownHurdLimits]]<br /> 151 [[SeenHurd]]<br /> 142 [[JoachimNilssonHurdPage]]<br /> 129 [[FrequentlyAskedQuestions]]<br /> 125 [[InstallNotes]]<br /> 115 [[TheGnuHurd]]<br /> 103 [[HurdConsole]]<br /> 100 [[LiveCD]]<br />  97 [[WebChanges]]</td>
+ <td>  28 [[Main/GrantBow]]<br />   5 [[Main/JoachimNilsson]]<br />   1 [[Main/TWikiGuest]]<br />   1 [[Main/MichaelAblassmeier]]<br />   1 [[Main/GuillemJover]]</td>
+ </tr>
+ <tr>
+ <td> Feb 2004 </td>
+ <td align="right"> 2921 </td>
+ <td align="right"> 13 </td>
+ <td align="right"> 0 </td>
+ <td> 826 [[WebHome]]<br /> 231 [[GNUHurdStatus]]<br /> 214 [[InstallNotes]]<br /> 146 [[KnownHurdLimits]]<br /> 127 [[SeenHurd]]<br /> 104 [[TheGnuHurd]]<br />  87 [[LiveCD]]<br />  79 [[JoachimNilssonHurdPage]]<br />  69 [[WebChanges]]<br />  56 [[WebStatistics]]<br />  53 [[FrequentlyAskedQuestions]]</td>
+ <td>  10 [[Main/OgnyanKulev]]<br />   1 [[Main/TWikiGuest]]<br />   1 [[Main/PaulBowman]]<br />   1 [[Main/GrantBow]]</td>
+ </tr>
+ <tr>
+ <td> Jan 2004 </td>
+ <td align="right"> 3950 </td>
+ <td align="right"> 7 </td>
+ <td align="right"> 0 </td>
+ <td> 1166 [[WebHome]]<br /> 333 [[InstallNotes]]<br /> 240 [[GNUHurdStatus]]<br /> 198 [[KnownHurdLimits]]<br /> 144 [[SeenHurd]]<br /> 137 [[JoachimNilssonHurdPage]]<br /> 119 [[LiveCD]]<br />  92 [[TheGnuHurd]]<br />  81 [[WebStatistics]]<br />  81 [[ExtTwoSize]]<br />  64 [[WebChanges]]</td>
+ <td>   2 [[Main/NagromNamreh]]<br />   2 [[Trash/MichaelDAdams]]<br />   2 [[Main/LucasNussbaum]]<br />   1 [[Main/OgnyanKulev]]</td>
+ </tr>
+ <tr>
+ <td> Dec 2003 </td>
+ <td align="right"> 3849 </td>
+ <td align="right"> 2 </td>
+ <td align="right"> 0 </td>
+ <td> 1064 [[WebHome]]<br /> 304 [[InstallNotes]]<br /> 217 [[GNUHurdStatus]]<br /> 177 [[KnownHurdLimits]]<br /> 147 [[SeenHurd]]<br /> 132 [[JoachimNilssonHurdPage]]<br /> 128 [[LiveCD]]<br /> 118 [[TheGnuHurd]]<br /> 112 [[HurdConsole]]<br />  96 [[WebChanges]]<br />  91 [[WebStatistics]]</td>
+ <td>   2 [[Main/TWikiGuest]]</td>
+ </tr>
+ <tr>
+ <td> Nov 2003 </td>
+ <td align="right"> 4020 </td>
+ <td align="right"> 9 </td>
+ <td align="right"> 0 </td>
+ <td> 1013 [[WebHome]]<br /> 242 [[InstallNotes]]<br /> 212 [[GNUHurdStatus]]<br /> 205 [[KnownHurdLimits]]<br /> 165 [[WebStatistics]]<br /> 145 [[SeenHurd]]<br /> 140 [[LiveCD]]<br /> 140 [[JoachimNilssonHurdPage]]<br /> 103 [[TheGnuHurd]]<br />  84 [[WebChanges]]<br />  73 [[ExtTwoSize]]</td>
+ <td>   7 [[Main/GregBuchholz]]<br />   2 [[Main/OgnyanKulev]]</td>
+ </tr>
+ <tr>
+ <td> Oct 2003 </td>
+ <td align="right"> 3423 </td>
+ <td align="right"> 24 </td>
+ <td align="right"> 0 </td>
+ <td> 935 [[WebHome]]<br /> 202 [[GNUHurdStatus]]<br /> 167 [[KnownHurdLimits]]<br /> 167 [[InstallNotes]]<br /> 127 [[SeenHurd]]<br />  93 [[TheGnuHurd]]<br />  81 [[FunnyHurd]]<br />  76 [[WebChanges]]<br />  74 [[JoachimNilssonHurdPage]]<br />  73 [[TranslatorWishList]]<br />  67 [[HurdConsole]]</td>
+ <td>  16 [[Main/GregBuchholz]]<br />   5 [[Main/OgnyanKulev]]<br />   3 [[Main/JoachimNilsson]]</td>
+ </tr>
+ <tr>
+ <td> Sep 2003 </td>
+ <td align="right"> 4451 </td>
+ <td align="right"> 5 </td>
+ <td align="right"> 0 </td>
+ <td> 1117 [[WebHome]]<br /> 289 [[WebStatistics]]<br /> 267 [[InstallNotes]]<br /> 235 [[KnownHurdLimits]]<br /> 199 [[JoachimNilssonHurdPage]]<br /> 182 [[GNUHurdStatus]]<br /> 153 [[SeenHurd]]<br />  85 [[TheGnuHurd]]<br />  80 [[NewbieQuestions]]<br />  71 [[ExtTwoSize]]<br />  64 [[FunnyHurd]]</td>
+ <td>   5 [[Main/GregBuchholz]]</td>
+ </tr>
+ <tr>
+ <td> Aug 2003 </td>
+ <td align="right"> 2877 </td>
+ <td align="right"> 5 </td>
+ <td align="right"> 0 </td>
+ <td> 806 [[WebHome]]<br /> 241 [[InstallNotes]]<br /> 174 [[KnownHurdLimits]]<br /> 163 [[GNUHurdStatus]]<br /> 139 [[SeenHurd]]<br />  81 [[TheGnuHurd]]<br />  72 [[JoachimNilssonHurdPage]]<br />  53 [[BuildingHurd]]<br />  51 [[FunnyHurd]]<br />  48 [[TranslatorWishList]]<br />  48 [[TWikiHostingStuff]]</td>
+ <td>   2 [[Main/OgnyanKulev]]<br />   2 [[Main/GregBuchholz]]<br />   1 [[Main/JoachimNilsson]]</td>
+ </tr>
+ <tr>
+ <td> Jul 2003 </td>
+ <td align="right"> 3226 </td>
+ <td align="right"> 7 </td>
+ <td align="right"> 0 </td>
+ <td> 805 [[WebHome]]<br /> 273 [[InstallNotes]]<br /> 206 [[GNUHurdStatus]]<br /> 180 [[KnownHurdLimits]]<br /> 137 [[SeenHurd]]<br /> 125 [[JoachimNilssonHurdPage]]<br />  81 [[TheGnuHurd]]<br />  66 [[HurdConsole]]<br />  63 [[BuildingHurd]]<br />  61 [[ExtTwoSize]]<br />  53 [[RandomDevice]]</td>
+ <td>   6 [[Main/GregBuchholz]]<br />   1 [[Main/JoachimNilsson]]</td>
+ </tr>
+ <tr>
+ <td> Jun 2003 </td>
+ <td align="right"> 3471 </td>
+ <td align="right"> 6 </td>
+ <td align="right"> 0 </td>
+ <td> 813 [[WebHome]]<br /> 303 [[InstallNotes]]<br /> 249 [[GNUHurdStatus]]<br /> 202 [[KnownHurdLimits]]<br /> 192 [[SeenHurd]]<br /> 103 [[TheGnuHurd]]<br />  84 [[NewbieQuestions]]<br />  75 [[JoachimNilssonHurdPage]]<br />  74 [[FunnyHurd]]<br />  71 [[ExtTwoSize]]<br />  64 [[NeighborHurd]]</td>
+ <td>   6 [[Main/OgnyanKulev]]</td>
+ </tr>
+ <tr>
+ <td> May 2003 </td>
+ <td align="right"> 3903 </td>
+ <td align="right"> 4 </td>
+ <td align="right"> 0 </td>
+ <td> 942 [[WebHome]]<br /> 318 [[InstallNotes]]<br /> 234 [[GNUHurdStatus]]<br /> 228 [[KnownHurdLimits]]<br /> 179 [[SeenHurd]]<br /> 154 [[JoachimNilssonHurdPage]]<br /> 100 [[TheGnuHurd]]<br />  90 [[WebStatistics]]<br />  82 [[HurdConsole]]<br />  78 [[ExtTwoSize]]<br />  73 [[WebChanges]]</td>
+ <td>   3 [[Main/OgnyanKulev]]<br />   1 [[Main/TWikiGuest]]</td>
+ </tr>
+ <tr>
+ <td> Apr 2003 </td>
+ <td align="right"> 3701 </td>
+ <td align="right"> 20 </td>
+ <td align="right"> 4 </td>
+ <td> 822 [[WebHome]]<br /> 278 [[InstallNotes]]<br /> 231 [[GNUHurdStatus]]<br /> 194 [[KnownHurdLimits]]<br /> 142 [[SeenHurd]]<br /> 118 [[WebChanges]]<br /> 109 [[TheGnuHurd]]<br />  83 [[JoachimNilssonHurdPage]]<br />  73 [[FunnyHurd]]<br />  73 [[ExtTwoSize]]<br />  71 [[HurdConsole]]</td>
+ <td>  10 [[Main/TWikiGuest]]<br />   5 [[Main/OgnyanKulev]]<br />   4 [[Main/JoachimNilsson]]<br />   3 [[Main/KellerF]]<br />   1 [[Main/ManuelValderrama]]<br />   1 [[Main/JuhaN]]</td>
+ </tr>
+ <tr>
+ <td> Mar 2003 </td>
+ <td align="right"> 3035 </td>
+ <td align="right"> 4 </td>
+ <td align="right"> 1 </td>
+ <td> 954 [[WebHome]]<br /> 218 [[InstallNotes]]<br /> 204 [[GNUHurdStatus]]<br /> 174 [[KnownHurdLimits]]<br /> 145 [[SeenHurd]]<br /> 131 [[TheGnuHurd]]<br />  92 [[WebChanges]]<br />  73 [[JoachimNilssonHurdPage]]<br />  63 [[FunnyHurd]]<br />  60 [[NeighborHurd]]<br />  52 [[HurdConsole]]</td>
+ <td>   4 [[Main/JoachimNilsson]]<br />   1 [[Main/RoelN]]</td>
+ </tr>
+ <tr>
+ <td> Feb 2003 </td>
+ <td align="right"> 3145 </td>
+ <td align="right"> 21 </td>
+ <td align="right"> 2 </td>
+ <td> 1319 [[WebHome]]<br /> 178 [[GNUHurdStatus]]<br /> 153 [[SeenHurd]]<br /> 140 [[InstallNotes]]<br /> 119 [[TheGnuHurd]]<br />  92 [[KnownHurdLimits]]<br />  82 [[FunnyHurd]]<br />  77 [[JoachimNilssonHurdPage]]<br />  59 [[RandomDevice]]<br />  58 [[HurdConsole]]<br />  57 [[WebChanges]]</td>
+ <td>  21 [[Main/JoachimNilsson]]<br />   1 [[Main/GrantBow]]<br />   1 [[Main/BenAsselstine]]</td>
+ </tr>
+ <tr>
+ <td> Jan 2003 </td>
+ <td align="right"> 3650 </td>
+ <td align="right"> 112 </td>
+ <td align="right"> 0 </td>
+ <td> 1340 [[WebHome]]<br /> 269 [[GNUHurdStatus]]<br /> 232 [[InstallNotes]]<br /> 176 [[SeenHurd]]<br /> 144 [[KnownHurdLimits]]<br /> 103 [[RandomDevice]]<br />  77 [[FunnyHurd]]<br />  76 [[TheGnuHurd]]<br />  75 [[JoachimNilssonHurdPage]]<br />  63 [[WebChanges]]<br />  54 [[HurdNames]]</td>
+ <td>  44 [[Main/GrantBow]]<br />  43 [[Main/JoachimNilsson]]<br />  18 [[Main/OgnyanKulev]]<br />   3 [[Main/DerekDavies]]<br />   2 [[Main/JamesAMorrison]]<br />   1 [[Main/TWikiGuest]]<br />   1 [[Main/DeepakGoel]]</td>
+ </tr>
+ <tr>
+ <td> Dec 2002 </td>
+ <td align="right"> 3612 </td>
+ <td align="right"> 252 </td>
+ <td align="right"> 1 </td>
+ <td> 1331 [[WebHome]]<br /> 196 [[InstallNotes]]<br /> 159 [[GNUHurdStatus]]<br /> 119 [[NewbieQuestions]]<br /> 115 [[SeenHurd]]<br />  92 [[KnownHurdLimits]]<br />  81 [[BochsFAQ]]<br />  72 [[FunnyHurd]]<br />  69 [[WhoRunsGNU]]<br />  69 [[TheGnuHurd]]<br />  69 [[Bochs]]</td>
+ <td> 186 [[Main/GrantBow]]<br />  54 [[Main/JoachimNilsson]]<br />   9 [[Main/OgnyanKulev]]<br />   4 [[Main/RobertMillan]]</td>
+ </tr>
+ <tr>
+ <td> Nov 2002 </td>
+ <td align="right"> 3745 </td>
+ <td align="right"> 165 </td>
+ <td align="right"> 10 </td>
+ <td> 1333 [[WebHome]]<br /> 164 [[KnownHurdLimits]]<br /> 162 [[NewbieQuestions]]<br /> 136 [[Trash/PortToL4]]<br /> 133 [[InstallNotes]]<br /> 110 [[SeenHurd]]<br />  90 [[WhoRunsGNU]]<br />  83 [[MicroKernelFUD]]<br />  82 [[JoachimNilssonHurdPage]]<br />  68 [[OskitL4]]<br />  66 [[TheGnuHurd]]</td>
+ <td>  89 [[Main/JoachimNilsson]]<br />  42 [[Main/GrantBow]]<br />  36 [[Main/RobertMillan]]<br />   6 [[Main/OgnyanKulev]]<br />   1 [[Main/JohanRydberg]]<br />   1 [[Main/DeepakGoel]]</td>
+ </tr>
+ <tr>
+ <td> Oct 2002 </td>
+ <td align="right"> 5085 </td>
+ <td align="right"> 406 </td>
+ <td align="right"> 1 </td>
+ <td> 1863 [[WebHome]]<br /> 248 [[InstallNotes]]<br /> 215 [[OskitL4]]<br /> 193 [[SeenHurd]]<br /> 162 [[NewbieQuestions]]<br /> 157 [[KnownHurdLimits]]<br /> 128 [[GNUHurdStatus]]<br /> 124 [[OskitMach]]<br /> 109 [[WebChanges]]<br />  99 [[TheGnuHurd]]<br />  99 [[Distrib/CDNotesJ2]]</td>
+ <td> 311 [[Main/GrantBow]]<br />  71 [[Main/JoachimNilsson]]<br />  10 [[Main/TWikiGuest]]<br />   7 [[Main/AndrewMitchell]]<br />   6 [[Main/DeepakGoel]]<br />   1 [[Main/RobertMillan]]<br />   1 [[Main/MichalSuchanek]]</td>
+ </tr>
+ <tr>
+ <td> Sep 2002 </td>
+ <td align="right"> 3552 </td>
+ <td align="right"> 158 </td>
+ <td align="right"> 1 </td>
+ <td> 1178 [[WebHome]]<br /> 169 [[InstallNotes]]<br /> 141 [[KnownHurdLimits]]<br /> 131 [[NewbieQuestions]]<br /> 113 [[SeenHurd]]<br /> 101 [[Mach/OskitMach]]<br />  98 [[HurdDevelopers]]<br />  96 [[WebChanges]]<br />  90 [[Trash/PortToL4]]<br />  80 [[Mach/BuildingOskitMach]]<br />  79 [[TheGnuHurd]]</td>
+ <td> 107 [[Main/GrantBow]]<br />  26 [[Main/JoachimNilsson]]<br />   8 [[Main/MichalSuchanek]]<br />   8 [[Main/DeepakGoel]]<br />   7 [[Main/AlejandroSanchez]]<br />   2 [[Main/LaudneyRen]]<br />   1 [[Main/TWikiGuest]]</td>
+ </tr>
+ <tr>
+ <td> Aug 2002 </td>
+ <td align="right"> 4090 </td>
+ <td align="right"> 9 </td>
+ <td align="right"> 0 </td>
+ <td> 1282 [[WebHome]]<br /> 223 [[NewbieQuestions]]<br /> 200 [[InstallNotes]]<br /> 146 [[KnownHurdLimits]]<br /> 144 [[Mach/OskitMach]]<br /> 115 [[Distrib/BuilddStatus]]<br /> 103 [[TheGnuHurd]]<br /> 103 [[HurdDevelopers]]<br />  98 [[Mach/GNUMach]]<br />  97 [[WebChanges]]<br />  95 [[Mach/BuildingOskitMach]]</td>
+ <td>   4 [[Main/MichalSuchanek]]<br />   2 [[Main/ManuelValderrama]]<br />   2 [[Main/JoachimNilsson]]<br />   1 [[Main/SimonLaw]]</td>
+ </tr>
+ <tr>
+ <td> Jul 2002 </td>
+ <td align="right"> 2943 </td>
+ <td align="right"> 45 </td>
+ <td align="right"> 1 </td>
+ <td> 1045 [[WebHome]]<br /> 162 [[MicroKernelFUD]]<br /> 132 [[InstallNotes]]<br /> 127 [[KnownHurdLimits]]<br />  98 [[TheGnuHurd]]<br />  98 [[NewbieQuestions]]<br />  79 [[Mach/OskitMach]]<br />  78 [[Mach/GNUMach]]<br />  77 [[Trash/PortToL4]]<br />  59 [[Mach/OskitMachStatusList]]<br />  54 [[HurdDevelopers]]</td>
+ <td>  35 [[Main/JoachimNilsson]]<br />   8 [[Main/RobertMillan]]<br />   1 [[Main/WolfgangJ]]<br />   1 [[Main/TWikiGuest]]<br />   1 [[Main/GrantBow]]</td>
+ </tr>
+ <tr>
+ <td> Jun 2002 </td>
+ <td align="right"> 1867 </td>
+ <td align="right"> 59 </td>
+ <td align="right"> 0 </td>
+ <td> 443 [[WebHome]]<br />  95 [[Distrib/BuilddStatus]]<br />  93 [[InstallNotes]]<br />  87 [[SeenHurd]]<br />  81 [[Mach/GNUMach]]<br />  78 [[Mach/OskitMach]]<br />  75 [[KnownHurdLimits]]<br />  73 [[HurdDevelopers]]<br />  57 [[NewbieQuestions]]<br />  56 [[PersonalHurdPages]]<br />  44 [[Mach/OskitMachStatusList]]</td>
+ <td>  26 [[Main/JoachimNilsson]]<br />  21 [[Main/GrantBow]]<br />   3 [[Main/JuanAlvarez]]<br />   2 [[Main/RobertMillan]]<br />   2 [[Main/LuisBustamante]]<br />   2 [[Main/HishamKotry]]<br />   1 [[Main/TWikiGuest]]<br />   1 [[Main/SimonLaw]]<br />   1 [[Main/JulienPUYDT]]</td>
+ </tr>
+ <tr>
+ <td> May 2002 </td>
+ <td align="right"> 1821 </td>
+ <td align="right"> 171 </td>
+ <td align="right"> 2 </td>
+ <td> 441 [[WebHome]]<br /> 111 [[HurdDevelopers]]<br /> 103 [[PersonalHurdPages]]<br />  93 [[Mach/OskitMach]]<br />  92 [[KnownHurdLimits]]<br />  72 [[TWiki/TWikiDiscuss]]<br />  70 [[Distrib/GnuDebianRelationship]]<br />  69 [[TheGnuHurd]]<br />  67 [[Trash/PortToL4]]<br />  64 [[NewbieQuestions]]<br />  59 [[Mach/OskitMachStatusList]]</td>
+ <td>  87 [[Main/GrantBow]]<br />  37 [[Main/TWikiGuest]]<br />  34 [[Main/JoachimNilsson]]<br />   4 [[Main/SimonLaw]]<br />   3 [[Main/LuisBustamante]]<br />   2 [[Main/RikWade]]<br />   1 [[Main/SamLauzon]]<br />   1 [[Main/RyanGolbeck]]<br />   1 [[Main/NickRusnov]]<br />   1 [[Main/MarcPoulhies]]<br />   1 [[Main/KurtKaiser]]</td>
+ </tr>
+</table>
+
+**_Notes:_**
+
+* Do not edit this topic, it is updated automatically. (You can also [force](%SCRIPTURLPATH%/statistics%SCRIPTSUFFIX%/%WEB%) an update)
+* %TWIKIWEB%.TWikiDocumentation tells you how to enable the automatic updates of the statistics.
+* Suggestion: You could archive this topic once a year and delete the previous year's statistics from the table.
+
+<table border="1" cellpadding="1" cellspacing="0">
+ <tr>
+ <td> Feb 2004 </td>
+ <td align="right"> 3491 </td>
+ <td align="right"> 36 </td>
+ <td align="right"> 0 </td>
+ <td> 973 [[WebHome]]<br /> 276 [[GNUHurdStatus]]<br /> 237 [[InstallNotes]]<br /> 166 [[KnownHurdLimits]]<br /> 147 [[SeenHurd]]<br /> 120 [[TheGnuHurd]]<br /> 110 [[JoachimNilssonHurdPage]]<br />  98 [[LiveCD]]<br />  80 [[WebChanges]]<br />  74 [[WebStatistics]]<br />  60 [[FrequentlyAskedQuestions]]</td>
+ <td>  18 [[Main/GrantBow]]<br />  12 [[Main/OgnyanKulev]]<br />   4 [[Main/LucasNussbaum]]<br />   1 [[Main/TWikiGuest]]<br />   1 [[Main/PaulBowman]]</td>
+ </tr>
+</table>
+
+* [Webalizer](http://hurd.gnufans.org/webalizer/) and a [[Main/WebalizerDiscuss]] page to muse about the results. :-)
diff --git a/Hurd/WebTopicList.mdwn b/Hurd/WebTopicList.mdwn
new file mode 100644
index 00000000..fb9b2001
--- /dev/null
+++ b/Hurd/WebTopicList.mdwn
@@ -0,0 +1,3 @@
+%TOPICLIST\{" \* [[Name]]"\}%
+
+See also the verbose [[WebIndex]].
diff --git a/Hurd/WhatIsACapability.mdwn b/Hurd/WhatIsACapability.mdwn
new file mode 100644
index 00000000..a4ed5ed8
--- /dev/null
+++ b/Hurd/WhatIsACapability.mdwn
@@ -0,0 +1,3 @@
+TBD, see e.g.: <http://www.eros-os.org/essays/capintro.html>
+
+-- [[Main/TomBachmann]] - 20 Jun 2006
diff --git a/Hurd/WhatIsAConstructor.mdwn b/Hurd/WhatIsAConstructor.mdwn
new file mode 100644
index 00000000..3f05a37a
--- /dev/null
+++ b/Hurd/WhatIsAConstructor.mdwn
@@ -0,0 +1,6 @@
+TBD, see:
+
+* <http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00157.html>
+* <http://lists.gnu.org/archive/html/l4-hurd/2006-05/msg00056.html>
+
+-- [[Main/TomBachmann]] - 16 May 2006
diff --git a/Hurd/WhatIsASpacebank.mdwn b/Hurd/WhatIsASpacebank.mdwn
new file mode 100644
index 00000000..d7961210
--- /dev/null
+++ b/Hurd/WhatIsASpacebank.mdwn
@@ -0,0 +1,3 @@
+TBD, see e.g. <http://eros-os.org/design-notes/SpaceBank.html> or <http://eros-os.org/papers/shap-thesis.ps>
+
+-- [[Main/TomBachmann]] - 31 Aug 2006
diff --git a/Hurd/WhatsInAGroup.mdwn b/Hurd/WhatsInAGroup.mdwn
new file mode 100644
index 00000000..122f2012
--- /dev/null
+++ b/Hurd/WhatsInAGroup.mdwn
@@ -0,0 +1,3 @@
+TBD, see <http://lists.gnu.org/archive/html/l4-hurd/2006-03/msg00001.html>
+
+-- [[Main/TomBachmann]] - 20 Jun 2006
diff --git a/Hurd/WhoRunsGNU.mdwn b/Hurd/WhoRunsGNU.mdwn
new file mode 100644
index 00000000..ac425145
--- /dev/null
+++ b/Hurd/WhoRunsGNU.mdwn
@@ -0,0 +1,34 @@
+## <a name="Who_runs_GNU_"> </a> Who runs GNU?
+
+On an official [GNU Project](http://www.gnu.org/gnu/thegnuproject.html) page I found a quote, attributed to Rabbi Hillel:
+
+> If I am not for myself, who will be for me?
+>
+> <br />
+>
+> If I am only for myself, what am I?
+>
+> <br />
+>
+> If not now, when?
+
+There are many now using test installations of Debian GNU/Hurd for testing and development. This page is set aside to list those sites using full GNU systems (GNU/Hurd) for non-testing and non-development purposes.
+
+## <a name="I_run_GNU_"> </a> I run GNU!
+
+<dl>
+ <dt> Budi Rahardjo</dt>
+ <dd><a href="http://hurd.indocisc.com" target="_top">http://hurd.indocisc.com</a>, contact at <a href="mailto:budi@research.indociscNOSPAM.com">budi@research.indociscNOSPAM.com</a></dd>
+ <dt>[[Main/JamesAMorrison]]</dt>
+ <dd><a href="http://hurd.dyndns.org" target="_top">http://hurd.dyndns.org</a>, </dd>
+ <dt> Your Name Here</dt>
+ <dd> Link to your system </dd>
+</dl>
+
+### <a name="ChangeLog"> ChangeLog </a>
+
+Created. -- [[Main/GrantBow]] - 19 Oct 2002
+
+Minor modifications. -- [[Main/JoachimNilsson]] - 22 Dec 2002
+
+Minor modifications - 17 Jan 2003 -- [[Main/MattGrant]]
diff --git a/Hurd/XattrHurd.mdwn b/Hurd/XattrHurd.mdwn
new file mode 100644
index 00000000..d3856c1b
--- /dev/null
+++ b/Hurd/XattrHurd.mdwn
@@ -0,0 +1,5 @@
+Roland McGrath has made [Linux support for Hurd's extensions to ext2 via Extended Attributes (xattr) interface](http://lists.gnu.org/archive/html/bug-hurd/2004-02/msg00108.html). This is important because it allows Hurd to be completely cross-installed in Linux.
+
+Michael Banck made some Debian precompiled Linux kernel packages that allow [using this xattr-hurd](http://lists.debian.org/debian-hurd/2004/09/msg00036.html).
+
+-- [[Main/OgnyanKulev]] - 18 Sep 2004
diff --git a/Hurd/Xfree86.mdwn b/Hurd/Xfree86.mdwn
new file mode 100644
index 00000000..55e9fc48
--- /dev/null
+++ b/Hurd/Xfree86.mdwn
@@ -0,0 +1,109 @@
+# <a name="Setup_XFree86_in_GNU"> </a> Setup XFree86 in GNU
+
+#### <a name="Table_Of_Content"> Table Of Content </a>
+
+%TOC%
+
+This is a brief helper on how to setup X-Window on GNU.
+
+### <a name="Mouse_amp_Keyboard"> Mouse &amp; Keyboard </a>
+
+See [[HurdConsole]] for more details.
+
+First, set up the keyboard translator. Using `/hurd/kbd` and `/hurd/mouse` is not supported. You should instruct Hurd console to repeat keyboard events to `/dev/cons/kbd`, and mouse events to `/dev/cons/mouse`:
+
+ # console -d vga -d pc_kbd --repeat=kbd -d generic_speaker \
+ -d pc_mouse --repeat=mouse --protocol=ps/2 --console-node=/dev/cons /dev/vcs
+
+Symbolic links to repeaters should be created too:
+
+ # ln -s /dev/cons/kbd /dev
+ # ln -s /dev/cons/mouse /dev
+
+### <a name="Selecting_amp_Configuring_Packag"> Selecting &amp; Configuring Packages </a>
+
+You will need several X packages. The `x-window-system-core` brings you most of what you need:
+
+* `xserver-xfree86`
+* `xfonts-base`
+* `xfonts-100dpi`
+* `xfonts-75dpi`
+* `xfonts-scalable`
+* `xbase-clients`
+* `xutils`
+* `rxvt`
+* ... as well as your window manager of choice:
+ * WindowMaker, `wmaker`
+ * FVWM, `fvwm`
+ * Blackbox, `blackbox`
+ * TWM, `twm`
+
+The recommended way of configuring X is using the `xserver-xfree86` debconf template, eg:
+
+ # dpkg-reconfigure xserver-xfree86
+
+It may be easier to just copy a working configuration from another operation system on the same computer and place it in `/etc/X11/XF86Config-4`, but this is discouraged as you would have to remove some sections by hand.
+
+**_IMPORTANT:_** when you configure X, make sure you do **NOT** enable the `speedo` and `dri` modules because they are currently broken.
+
+### <a name="Edit_XF86Config_4"> Edit XF86Config-4 </a>
+
+Now you have to edit the file manually to ensure that the mouse sections look like this:
+
+ Section "InputDevice"
+ Identifier "Configured Mouse"
+ Driver "mouse"
+ Option "CorePointer"
+ Option "Device" "/dev/mouse"
+ Option "Protocol" "osmouse"
+ EndSection
+
+ Section "InputDevice"
+ Identifier "Generic Mouse"
+ Driver "mouse"
+ Option "SendCoreEvents" "true"
+ Option "Device" "/dev/mouse"
+ Option "Protocol" "osmouse"
+ EndSection
+
+You may also enable the Emulate3Buttons option, but nothing else will work.
+
+ Option "Emulate3Buttons" "true"
+
+### <a name="Dynamic_Linking"> Dynamic Linking </a>
+
+The Hurd does not use `ld.so.conf`, it is necessary to add the following to `/etc/profile` to be sure that the libraries are found:
+
+ LD_LIBRARY_PATH=/X11R6/lib:$LD_LIBRARY_PATH
+
+"This is a linker issue. GNU/Hurd expects that \`RPATH' is used, however, Debian takes certain measures to avoid this. Note that this does not cut it for suid binaries because of security implications. We expect to rectify this by using \`RUNPATH', which is specified in the new ELF standard." -- [Why does X not work?](http://www.gnu.org/software/hurd/faq.en.html#q4-8)
+
+### <a name="Starting_X"> Starting X </a>
+
+Finally, run
+
+`startx`
+
+However, there are several caveats to be aware of:
+
+* `xterm` does not work correctly; try `rxvt`.
+* `update-menu` does not yet work. As such, there are no fine Debian menus.
+* GNOME can now be ported with the new pthreads, but is still being worked on. [[WindowMaker]], [[TWM]], [[Blackbox]] and [[FVWM]] all work.
+
+### <a name="Graphical_Environment"> Graphical Environment </a>
+
+See [[GNOME]] in Hurd . (?)
+
+----
+
+Created. -- [[Main/RobertMillan]] - 21 Nov 2002
+
+Some text formatting. -- [[Main/OgnyanKulev]] - 05 Dec 2002
+
+Dito. -- [[Main/JoachimNilsson]] - 12 Jan 2003
+
+`/hurd/kbd` is no longer supported. -- [[Main/OgnyanKulev]] - 11 Aug 2004
+
+`/hurd/mouse` is deprecated. -- [[Main/OgnyanKulev]] - 21 Sep 2004
+
+-c /dev/cons is now --console-note=/dev/cons -- Sven 01 May 2005
diff --git a/Hurd/ZallocPanics.mdwn b/Hurd/ZallocPanics.mdwn
new file mode 100644
index 00000000..0b00d7ec
--- /dev/null
+++ b/Hurd/ZallocPanics.mdwn
@@ -0,0 +1,43 @@
+The Hurd sometimes crashes with a kernel panic saying someting like: "Panic: zalloc failed: zone map exhausted".
+
+These panics are generally caused by some kind of kernel resource exhaustion, but there are several differnt reasons for that.
+
+It used to happen very often under heavy disk load (like large compile jobs), or in a reproducible test case by opening a large number of ports to /dev/null and then closing them all very quickly. The reason for this particular problem has been identified a while back: The multithreaded Hurd servers create a new worker thread whenever a new request (RPC) comes in while all existing threads are busy. When the server is hammered with lots of requests -- which happens both under heavy disk load, and when quickly closing many ports to one server -- it will create an absurd number of threads, causing the resource exhaustion.
+
+The Debian hurd package contains a patch by k0ro (Sergio Lopez), which fixes this by limiting the amount of created threads in a rather simplistic but very effective manner. This patch however hasn't been included in upstream CVS so far. A more elegant solution, suitable for upstream inclusion, would be desirable.
+
+Some panics still seem to happen in very specific situations, like the one described at <https://savannah.gnu.org/bugs/?19426> . These are probably the result of bugs that cause port leaks, accidental fork bombs, or similar problems.
+
+In principle, resource exhaustion can also happen by normal use, though this is rather unlikely in the absence of bugs or malicious programs. Nevertheless, all these problems could be avoided (or limited in effect) by introducing some limits on number of processes per user, number of threads and ports per process/user etc.
+
+Trying to track down causes for the panics, I got some interesting results. (UPDATE: Many of my original observations were clearly related to the server thread explosion problem. To avoid confusion, I now removed these, as this is no longer an open issue.)
+
+* It all started with someone (probably azeem) mentioning that builing some package always crashes Hurd at the same stage of the Debian packaging process (UPDATE: Almost all of these panics when building packages were a result of the thread explosion and don't happen anymore.)
+* Someone (maybe he himself) pointed out that this stage is characterized by many processes being quickly created and destroyed
+* Someone else (probably hde) started some experimenting, to get a reproducible test case
+* He realized that just starting and killing five child processes in quick succession suffices to kill some Hurd systems
+* I tried to confirm this, but it turned out my system is more robust
+
+As I could never reproduce the problem with a small number of quickly killed processes, I can't say whether this problem still exists. While I could reproduce such an effect with first opening and then very quickly closing many ports (which is more or less what happens when quickly killing many processes), I needed really large numbers of processes/ports for that. The thread throtteling patch fixed my test case; but it seems unlikely that killing only five processes could have caused a thread explosion, so maybe hde's observation was a different problem really...
+
+I started various other experiments with creating child processes (fork bombs), resulting in a number of interesting observations:
+
+* Just forking a large number of processes crashes the Hurd reliably (not surprising)
+* The number of processes at which the panic occurs is very constant (typicallly +-2) under stable conditions, as long as forking doesn't happen too fast
+* The exact number depends on various conditions:
+ * Run directly from the Mach console, it's around 1040 on my machine (given enough RAM); however, it drops to 940 when started through a raw ssh session, and to 990 when run under screen through ssh (TODO: check number of ports open per process depending on how it is started) UPDATE: In a later test, I got somewhat larger numbers (don't remember exactly, but well above 1000), but still very constant between successive runs. Not sure what effected this change.
+ * It doesn't depend on whether normal user or root
+ * With only 128 MiB of RAM, the numbers drop slightly (like 100 less or so); no further change between 256 and 384 MiB
+ * Lowering zone\_map\_size in mach/kern/zalloc.c reduces the numbers (quite exactly half from 8 MiB to 4 MiB)
+ * There seems to be some saturation near 16 MiB however: The difference between 8 MiB and 16 MiB is significantly smaller
+ * Also, with 8 MiB or 4 MiB, the difference between console/ssh/screen becomes much more apparent (500 vs. 800, 250 vs. 400)
+ * With more than 16 MiB, Mach doesn't even boot
+* Creating the processes very fast results in a sooner and less predictable crash (TODO: Check whether this is still the case with thread throtteling?)
+* Creating processes recursively (fork only one child which forks the next one etc.) results in faster crash
+* rpcinfo shows that child processes have more ports open by default, which is very likely the reason for the above observation
+* Opening many ports from a few processes doesn't usually cause a system crash; there are only lots of open() failures and translator faults once some limit is reached... Seems the zalloc-full condition is better caught on open() than on fork() (TODO: investigate this further, with different memory sizes, different zone\_map\_size, different kinds of resources using zalloc etc.)
+* After opening/leaking lots of ports to /dev/null (32768 it seems), the NULL translator somehow becomes disfunctional, and a new instance is started
+
+While most of these Observations clearly show an exhaustion of kernel memory which is not surprising, some of the oddities seem to indicate problems that might deserve further investigation.
+
+-- antrik (Last update: 12 Apr 2007)