   Copyright (C) 2000, 2001, 2002, 2003 Neal H. Walfield
<neal@cs.uml.edu>

   Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

   Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
that the sections entitled "Copying" and "GNU General Public License"
are included exactly as in the original, and provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.

   Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be stated in a
translation approved by the Free Software Foundation.

Installieren von Hurd
*********************

   Dieses Dokument hat sich zum Ziel gesetzt, mit relativ wenigen Worten
durch die Installation von GNU/Hurd zu leiten und dem Leser mit den
wichtigsten Konfigurationsaufgaben vertraut zu machen.

U"bersicht
**********

   Die Debian GNU/Hurd Distributuion hat, anders als Distributionen von
anderen Betriebssystemen, keine sehr komfortabeles
Installationsprogramm. Eines Tages wird es eines geben, vielleicht
sogar mit Ihrer Hilfe. Bis dahin beno"tigt GNU/Hurd zur Installation
noch ein anderes, Unix-artiges Betriebssystem.  (1).

   Einige Benutzer konnten dies mit Hilfe verschiedener Linux-Varianten
und den BSD-Systemen bewerkstelligen. Was das System lediglich ko"nnen
muss ist: ein ext2 Dateisystem erstellen; ein tar-Archiv auf dieses
extrahieren; GNU Grub installieren.

   GNU Hurd ist a"hnlich zu Unix-Systemen: Nachdem der Benutzer sich
angemeldet hat, pra"sentiert sich eine Shell und das gela"ufige Unix-VFS
(virtual filesystem). Obwohl GNU versucht, POSIX-konform zu sein, ist
es kein Unix (GNU is Not Unix). Hurd baut auf vielen Konzepten von Unix
auf und erweitert diese entweder um neue Funktionalita"ten oder
beseitigt deren Fehler im Design. Der gro"sste Unterschied besteht wohl
in den so genannten Translatoren, die es ermo"glichen, dass Programme
direkt mit dem VFS interagieren. Diese Dateisysteme mu"ssen weder im
Kernel sein, noch mu"ssen sie mit root-Rechten laufen.  Worauf sie
Zugriff haben mu"ssen, ist zum einen das Speichermedium, das durch den
Translator mit dem Mount-Punkt verbunden wird, zum anderen der
Mount-Punkt selbst.

   Ein weiterer Unterschied besteht darin, dass Prozesse statt einer
einzelnen bei ihrer Erzeugung festgelegten User ID u"ber
Identifizierungs-Token verfu"gen, die unabha"ngig vom Prozess sind.
D.h. die Tokens ko"nnen mit der entsprechenden Berechtigung von einer
Autorisierungsstelle hinzugefu"gt oder entzogen werden.

   Mit Unix-Systemen vertraut zu sein, ist hier sehr von Vorteil. Sich
mit den verschiedenen Debian-Tools auszukennen, bringt ebenfalls
Zusatzpunkte in der Konfiguration, der Pflege und Wartung eines GNU Hurd
Rechners.

   Ich bin bemu"ht, mit dieser Hilfe euch so schmerzlos wie nur mo"glich
durch die Installation zu begleiten. Sollten dennoch Fehler auftreten
(fu"r die in vielen Fa"llen der Autor verantwortlich ist), meldet sie
mir. Auch Anregungen oder Kritiken sind willkommen.

   ---------- Footnotes ----------

   (1) Philip Charles hat einen Satz CDs erstellt (verfu"gbar unter
`http://www.debian.org/ports/hurd/hurd-cd'), die ein direkt bootbares
Debian GNU/Linux System enthalten und diese Anforderung daher in
gewisser Weise eliminieren, allerdings halten wir diese Lo"sung fu"r
a"quivalent.

Partitionierung
***************

   Wenn keine freie(n) Partition(en) oder Festplatte(n) zur Verfu"gung
stehen, wird dies der ha"rteste Schritt. In diesem Fall beno"tigt man
Software, um die Festplatte zu repartitionieren. Eine von vielen
Lo"sungen wa"re hier GNU's Partitions-Editor parted. Er unterstu"tzt
nicht nur einfaches Partitionieren. Auch Vergro"ssern, Verkleinern und
Verschieben von Partitionen sind sein Element. Zu finden ist er unter
`http://www.gnu.org/software/parted'.  Es ist dringlichst auf die
gelungene Dokumentation hinzuweisen die auch verschiedene Tutorials
bietet.

   Hurd kann nur mit Partitionen bis etwa 2Gb umgehen. Alles u"ber
diesem Wert wird nicht funktionieren. Das ist auf eine Entscheidung von
vor mehreren Jahren zuru"ckzufu"hren, durch die der Dateisystem-Server
das ganze Dateisystem im Speicher abbildet. Es ist geplant, dies zu
a"ndern.

   Sagen wir mal so, 2Gb ist mehr als genug fu"r ein laufendes System.
Es besteht ja weiterhin noch die Mo"glichkeit, mehrere Partitionen zu
erstellen. Einmal 2Gb fu"r `/' und (beispielsweise) nochmals 2Gb fu"r
`/home'.

   Hurd unterstu"tzt einige Erweiterungen des ext2 Dateisystem-Formates.
Insbesondere sind passive Translator und ein viertes Rechte Tripel fu"r
unbekannte Nutzer (Nutzer ohne Identita"t - nicht "others") zu nennen.

   Um diese zu nutzen, muss der Besitzer der Partition `hurd' sein.
`mke2fs' wird, wenn nichts anderes angegeben wurde, den Besitzer auf
das Betriebssystem setzen, auf dem es gerade la"uft.  Da Hurd diese
Einstellung respektiert, muss man genau darauf achten, da es sonst zu
nicht-offensichtlichen Problemen kommen wird. Zu beachten ist, dass,
wenn ein Dateisystem einem bestimmten Betriebssystem geho"rt, andere es
dennoch verwenden ko"nnen; sie werden lediglich nicht in der Lage sein,
diverse Erweiterungen zu verwenden.

   Um aber nun ein Dateisystem zu erstellen, das den Besitzer hurd
tra"gt, fu"hren wir `mke2fs' mit der Option `-o hurd' aus.

      # mke2fs -o hurd /dev/hda2

Der Boot Loader
***************

   Im Gegensatz zu zu GNU/Linux und den BSDs hat Hurd keinen eigenen
Boot Loader. Jeder Boot Loader, der den Multiboot-Standard beherrscht
kann Hurd starten. Momentan ist das aber nur einer. Grub, der "GRand
Unified Boot loader".

   Grub ist im Gegensatz zu den traditionellen Boot Loadern auf x86
(LILO sei als Beispiel genannt) sehr ma"chtig. Er besitzt eine
Befehlszeile, beherrscht bootp, hat ein dummy-Terminal und eine Menge
an weiteren Funktionen. Weiterhin kann er so gut wie jedes System
booten. Wenn man jemals eine Sparc oder Alpha gebootet hat, wird man
bereits wissen, zu was Grub im Stande ist. Deshalb, keine Angst: Grub
ist besser. Du wirst ihn mo"gen. Du wirst keinen anderen mehr verwenden
wollen.

   Grub ist unter `http://www.gnu.org/software/grub/' zu finden. Dort
befindet sich ein Quellen-Archiv. Wenn man sich die Quellen herunter
geladen hat, kommt der klassische Dreisatz `configure', `make' und
`make install' zum Einsatz. Es ist nun Zeit, sich die Dokumentation von
Grub durchzulesen. Alternativ kann auch ein Disketten-Image
heruntergeladen werden, von dem dann gebootet wird.  Dafu"r muss das
Image auf eine Diskette geschrieben werden.

      # dd if=grub-boot-image of=/dev/fd0

Spa"ter kann Grub auch auf der Festplatte installiert werden.

Cross Installation
******************

   Als na"chstes wird das Basissystem heruntergeladen:

     `ftp://alpha.gnu.org/gnu/hurd/contrib/marcus/gnu-latest.tar.gz'.

   Das Tarball ist so konfiguriert, dass es alle beno"tigten Dateien in
die vorgesehenen Verzeichnisse entpackt. Zuna"chst muss das Dateisystem
gemountet werden. Davon ausgegangen, dass sich das einzuha"ngende
Dateisystem auf `/dev/hda2' befindet, der Punkt, an dem es eingehangen
werden soll `/gnu' ist und sich das Archiv im Heim-Verzeichnis
befindet, geben wir folgende Befehle ein:

      # mount -t ext2 /dev/hda2 /gnu
      # cd /gnu
      # tar --same-owner -xvzpf ~/gnu-latest.tar.gz

Hurd booten
***********

   Nun sind wir bereit, Hurd zum ersten mal zu booten. Nachdem man sich
versichert hat, dass sich die Bootdiskette mit Grub an Bord im Laufwerk
befindet, starten wir den Rechner neu. Wenn alles gut geht, befindet
man sich nun auf der Kommandozeile von Grub. Wenn widererwarten ein
Menu angezeigt werden sollte, dru"cke `C' um auf besagte zu gelangen.

   Als erstes muss GNU Mach geladen werden. Dazu muss man zuna"chst
wissen, auf welcher Partition und in welchem Verzeichnis sich der
Mach-Kernel befindet. Grub nutzt dazu eine andere Methode um die
Festplatte und die darauf befindlichen Partitionen anzusprechen, als es
bei Linux oder Hurd der Fall ist. IDE und SCSI Laufwerke werden demnach
mit `(hdN,M)' angesprochen (zwischen IDE und SCSI wird nicht
unterschieden), wobei `N' fu"r die Nummer der Festplatte (bei Null
beginnend) und `M' fu"r die Partitionsnummer (ebenfalls bei Null
beginnend) steht.  Grub hilft einem aber auch ein wenig.

   Um eine bestimmte Datei zu finden, von der man den genauen Ort der
Speicherung nicht kennt, hat Grub ein Kommando `find'. Wenn man dieses
zusammen mit einem Dateinamen aufruft, durchsucht Grub alle
Dateisysteme und gibt aus, wo er sie gefunden hat. Um nach der Datei
`/boot/gnumach.gz' zu suchen, gibt man folgendes ein:

       grub> find /boot/gnumach.gz
        (hd0,1)

Somit weiss man nun, dass sich `/boot/gnumach.gz' auf `(hd0,1)'
befindet.

   Bevor nun der Kernel geladen werden kann, muss noch eine weitere
Option angegeben werden, die fu"r Hurd, nicht fu"r Grub wichtig ist.
Und zwar muss man Hurd mitteilen, wo sich der Kernel befindet.

   GNU Mach nummeriert die Festplatten bei 0 (Null) beginnend.
IDE-Festplatten tragen das Pra"fix `hd', wobei SCSI-Festplatten das
Pra"fix `sd' tragen. Nummeriert wird in der Reihenfolge, in der sie an
dem Controller angeschlossen sind. Die Festplatte am Master-Port des
Prima"ren Controller wird mit `hd0' und die Festplatte am  Slave-Port
mit `hd3' angesprochen. Die Partitionen werden a"hnlich wie unter BSD
mit `sM' angesprochen. Die Partitionen werden bei 1 (Eins) beginnend
hochgeza"hlt.

   Da Hurd noch nicht konfiguriert wurde, muss man im Single-User-Modus
starten. Das geschieht, indem man Hurd `-s' als Boot-Option mit auf dem
Weg gibt.

   Davon ausgehend, dass sich Hurd auf der zweiten Partition der
Festplatte am Master-Port des Prima"ren IDE-Controllers (`/dev/hda2')
befindet, muss folgendes eingeben werden:

       grub> kernel (hd0,0)/boot/gnumach.gz root=device:hd2s1 -s
        [Multiboot-elf, ...]

   Als na"chstes sorgt man dafu"r, dass der root Dateisystem-Server und
der `exec'-Server geladen wird. Das wird mit Grub's Mo"glichkeit,
Module zu laden, erreicht. Die Werte fu"r ${var} werden von GNU Mach
gefu"llt. Da die Zeile fu"r das ext2fs-Kommando doch etwas lang ist, hat
man die Mo"glichkeit, die Zeile mit einem Backslash zu trennen. Es ist
dabei darauf zu achten, dass sich am Ende einer Zeile keine Leerzeichen
hinter dem Backslash befinden. Weiterhin ist zwischen `{var}' und
`(var)' zu unterscheiden (geschweifte und runde Klammern).

       grub> module (hd0,0)/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 (hd0,0)/lib/ld.so.1 /hurd/exec $(exec-task=task-create)
         [Multiboot-module  0x494000, 0x27afe bytes]

Keine Angst, wenn Hurd fertig eingerichtet ist, kann man Grub
automatisieren und die Kommandos in der Konfigurationsdatei
`/boot/grub/menu.lst' ablegen.

   GNU Hurd kann nun gestartet werden:

     grub> boot

   Nun lehn Dich zuru"ck und beobachte die Meldungen auf dem
Bildschirm. Noch ein wichtiger Hinweis: GNU Mach hat einen Bug, bei dem
der Kernel beim Dru"cken einer Taste beim Bootvorgang ha"ngen bleibt
(Kernel-Panic).

   Wenn Hurd nicht bootet, kann es am IRQ-Sharing liegen. GNU Mach
beherrscht dieses nicht. Auch werden keine nachladbaren Kernel-Module
unterstu"tzt, woraufhin Treiber fu"r die ga"ngigsten Gera"te in den
Kernel kompiliert sind.  Weiterhin ko"nnen a"ltere Gera"te Probleme
bereiten, wenn auf Anfragen von GNU Mach an nicht vorhandene Gera"te
fehlerhafte Antworten kommen. Um dies zu lo"sen, muss ein eigener
Mach-Kernel kompiliert werden, der nur die beno"tigten Treiber
entha"lt. Wenn Du Debian GNU/Linux dein Eigen nennst, installiere das
Paket `gcc-i386-gnu'.

   Wenn weiterhin Probleme bestehen, schau bei den Links am Ende des
Dokumentes vorbei. Wenn alle Stricke reissen, wird eine Anfrage an die
zusta"ndige Mailingliste zur Lo"sung beitragen.

Vorkonfiguration
****************

   Sobald man sich auf der Shell befindet, und jedesmal, wenn man im
Single-User-Modus ist, muss der Terminal-Typ angegeben werden.

      # export TERM=mach

   Weiterhin wird `Strg-C' und dergleichen im Single-User-Modus nicht
unterstu"tzt.

   Nun startet man das `native-install' Script, das die Packete und
verschiedene wichtige Translator konfiguriert:

      # ./native-install

Nachdem der erste Durchlauf dieses Scriptes erfolgt ist, wird uns
selbiges darauf hinweisen, dass es einen zweiten, finalen, Durchlauf
beno"tigt. Also startet man den Rechner mittels `reboot' neu und
befolgt nochmals die Anweisungen aus Section '5. Hurd booten', um
abermals das `native-install' Script auszufu"hren.

Konfiguration
*************

Netzwerk
========

   Um die Netzwerkkarte zu konfigurieren, muss der pfinet-u"bersetzer
konfiguriert werden. Dazu benutzt man `settrans', um einen u"bersetzer
an einem Knoten auf dem Dateisystem anzuschliessen.  Wenn nun ein
Programm auf diesen Knoten zugreift, um beispielsweise ein
ICMP/TCP/UDP-Packet zu senden, wird Hurd automatisch einen Server
starten, um die Anfrage auszufu"hren.

      # settrans -fgap /servers/socket/2 /hurd/pfinet -i eth0 \
        -a a.b.c.d -g e.f.g.h -m i.j.k.l

Erkla"rung der Argumente: `fg' beendet vorher gestartete Translator
`ap' macht den Translator aktiv und passiv `-i' das Interface an dem
`pfinet' lauschen soll `-a' die IP-Adresse `-g' der Gateway `-m' die
Netwerkmaske

   Als aktiv bezeichnet man einen Translator, wenn er sofort gestartet
wird und er nach Beendigung nicht mehr vorhanden ist, z.B. wenn der
Rechner neu gestartet wird.  Ein passiver Translator hingegen speichert
die Einstellungen im Dateisystem. Dadurch bleiben diese auch erhalten,
wenn der Rechner neu gestartet wird. Er wird erst wieder gestartet,
wenn ein Prozess auf den zugewiesenen Knoten zugreift.

   Nun werden unter `/etc/resolv.conf' die DNS-Server eingetragen:

       nameserver 145.253.2.11
       nameserver 145.253.2.74

   Um nun zu testen, ob die Netzwerkkarte richtig eingerichtet ist, wird
`ping -c2 gateway' eingegeben. `-c2' veranlasst `ping' dazu, nur 2
ICMP-Packete abzusetzen, da `Strg-C' nicht greifen wu"rde und man keine
Mo"glichkeit hat, `ping' zu beenden.

   DHCP wird unter Hurd bisweilen nicht unterstu"tzt. Das ist auf
`pfinet' zuru"ckzufu"hren, das auf den TCP/IP-Code von Linux
zuru"ckgreift, und nicht in der Lage ist, an 0.0.0.0 zu lauschen.

   Um Hilfe fu"r `settrans' zu erhalten, wird dem Programm `--help' als
Argument u"bergegeben. Auch die einzelnen Translatoren werden daraufhin
eine kleine U"bersicht geben.

      # /hurd/pfinet --help

Die Ausgaben sollte man der La"nge wegen durch eine less-Pipe schicken.

      # /hurd/pfinet --help |less

Dateisysteme
============

   Nun widmet man sich der Datei `/etc/fstab'. Dort sind alle
Partitionen einzutragen, die man unter Hurd nutzen will. Es ist sehr
wichtig, dass eine Swap-Partition eingebunden wird, da Hurd dadurch
wesentlich stabiler la"uft. Hurd ist auch in der Lage mit Linux eine
Swap-Partition zu teilen. Beachte die 2Gb-Grenze! Als Standard-Editor
ist `nano' installiert.

   Hier ein Bespiel einer `/etc/fstab':

     # <file system> <mount point>   <type>  <options>  <dump>  <pass>
     /dev/hd0s2      /               ext2    rw         0       1
     /dev/hd0s3      /home           ext2    rw         0       2
     /dev/hd0s4      none            swap    sw         0       0

   Man sollte nicht vergessen, die no"tigen Gera"tedateien zu erstellen.
Das geschieht mit `MAKEDEV'

      # cd /dev
      # ./MAKEDEV hd0s1 hd0s2 hd0s3 hdMsN

   Um NFS-Dateisysteme einzuha"ngen, wird der `/hurd/nfs'-Translator
genutzt. Wenn der Translator ohne root-Rechte gestartet wird, versucht
er zu einem unprivilegierten Port auf dem NFS-Server zu verbinden, was
in den meisten Fa"llen von diesem zuru"ckgewiesen wird. Um dieses zu
erlauben, muss auf dem NFS-Server in der Datei `/etc/exports' in den
zusta"ndigen Zeilen `insecure' eingetragen werden.

       /home  192.168.0.10(rw,insecure)

Um dieses nun in Hurd einzubinden wird wieder `settrans' beno"tigt:

     # settrans -cgap /mount/point /hurd/nfs 192.168.0.2:/home

Reboot
======

   So, nun ist es endlich so weit sich in den Multi-User-Modus zu
befo"rdern. Dazu gibt man zuna"chst `reboot' auf der Kommandozeile ein.
See Hurd booten.  Diesmal wird das `-s' in der Kernel-Zeile
weggelassen.

   Happy Hacking!

Schlussworte
************

Dokumentation
=============

   Um Informationen u"ber Hurd zu erhalten, solltest Du Debian's
Hurd-Seite: `http://www.debian.org/ports/hurd/' und GNU's Seite:
`http://hurd.gnu.org' besuchen.

Das Grub Menu
=============

   Um nicht fu"r jeden Bootvorgang die Monsterzeilen fu"r Grub
einzugeben, ist es ratsam `/boot/grub/menu.lst' zu editieren.

Gera"tedateien hinzufu"gen
==========================

   Es befinden sich nur wenige Gera"tedateien in `/dev'.  Nutze das
`MAKEDEV' Script, um alle beno"tigten zu erstellen.

Packete installieren
====================

   Es gibt mehrere Mo"glichkeiten, Pakete zu installieren. Ein Paket
herunterzuladen und es mit `dpkg -i' zu installieren, ist recht
unbequem. Die einfachere Variante ist da wohl `apt-get'. Dazu sind
folgende Eintra"ge in der Datei `/etc/apt/sources.list' no"tig:

     deb ftp://alpha.gnu.org/gnu/hurd/debian unstable main
     deb ftp://ftp.debian.org/debian unstable main

   Sollte GNU Mach die Netzwerkkarte nicht unterstu"tzen oder wird ein
Modem genutzt, bleibt nur die Mo"glichkeit die Pakete herunterzuladen
und sie auf Hurd zu u"bertragen. Unter `/usr/share/doc/apt/offline'
gibt es weitere Informationen dazu.

XFree86
=======

   XFree86 wurde portiert und alle Grafikkarten, die keine Kernelmodule
erfordern, werden unterstu"tzt.

   Zuna"chst konfiguriere den Keyboard-Translator:

      # cd /dev
      # ./MAKEDEV kbd

   Danach den Maus-Translator. Fu"r eine serielle Maus steht folgende
Zeile, wobei `--device=com0' mit den zutreffenden COM-Port ersetzt wird:

      # settrans /dev/mouse /hurd/mouse --device=com0 --protocol=microsoft

Es ist sicherzustellen, das `/dev/com0' existiert. Wenn nicht, nutzt
man MAKEDEV um dieses zu erstellen.

   Eine PS/2 Maus beno"tigt keine Gera"tedatei. Es reicht folgende
Zeile um zum gewu"nschten Ergebnis zu gelangen:

      # settrans /dev/mouse /hurd/mouse --protocol=ps/2

   Andere Ma"use werden auch unterstu"tzt. Man startet `/hurd/mouse' mit
der Option `--help' fu"r mehr Details.

   Es werden verschiedene Packete beno"tigt. `x-window-system-core',
`rxvt' und `twm' oder `fvwm' sollten fu"rs erste reichen.

   Debconf kann zum Konfigurieren von XFree86 genutzt werden, was aber
eine Nachbearbeitung der `XF86Config' bzw. der `XF86Config-4' nach sich
zieht. Die Section Pointer ist wie folgt zu a"ndern:

     Section "Pointer"
       Protocol "osmouse"
       Device "/dev/mouse"
     EndSection

Optional kann `Emulate3Buttons' hinzugefu"gt werden. Andere Optionen
werden nicht funktionieren.

   GNU Hurd nutzt keine `ld.so.conf'. Da sich `/X11R6/lib' nicht im
Standard Suchpfad fu"r die Bibliotheken befindet, ist folgender Eintrag
in `~/.profile' von no"ten:

     export LD_LIBRARY_PATH=/X11R6/lib:$LD_LIBRARY_PATH

   Nun fu"hre `startx' zum Starten des X-Servers aus.

   Es sind noch einige Dinge zu beachten. `xterm' arbeitet nicht
richtig, nutze dafu"r `rxvt'. `update-menu' wurde noch nicht portiert.
Somit gibt es kein sauberes Debian-Menu. Obwohl eine `pthreads'
Implementation existiert, wurden noch nicht sa"mtliche Packete
portiert. GNOME und KDE werden daher noch nicht lauffa"hig sein.

Virtuelle Terminals
===================

   Es wird an virtuellen Terminals unter Hurd gebastelt. Nutze bis dahin
`screen'.

Mailing Lists
=============

  1. <debian-hurd@debian.org>  Debian's Hurd-ML
       1. Archiv: `http://lists.debian.org/#debian-hurd'

  2. <web-hurd@gnu.org> Entwicklung der Hurd-Seite
     `http://hurd.gnu.org'.
       1. Archiv: `http://mail.gnu.org/pipermail/web-hurd/'

  3. <help-hurd@gnu.org>  GNU's ML fu"r Hilfe mit Hurd
       1. Archiv: `http://mail.gnu.org/pipermail/help-hurd/'

  4. <bug-hurd@gnu.org> Hier gehen Bug's und Patches hin.
       1. Archiv: `http://mail.gnu.org/pipermail/bug-hurd/'

Weitere Quellen
===============

  1. The Hurd Wiki `http://hurd.gnufans.org/bin/view/Hurd/WebHome'

  2. Deutsche FAQ `http://www.gnu.org/software/hurd/faq.de.html'

  3. gut sortierte Linkliste
     `http://debian.fmi.uni-sofia.bg/~ogi/hurd/links/'

Zitierte Werke
**************

   "The Easy Guide to Installing Hurd on a Linux Box" Copyright (C)
1999 Matthew Vernon <matthew@debian.org>.
`http://www.pick.ucam.org/~mcv21/hurd.html'