Achtung! Diese Übersetzung ist zu alt, benutzen Sie bitte das Original.

Portierungen ] [ Debian GNU/Hurd ] [ Neues ] [ Konfiguration ] [ Hurd-CDs ] [ Dokumentation ] [ Entwicklung ] [ Kontakt ]

Debian GNU/Hurd-Konfiguration

Dieses Dokument hat zum Ziel, einfache und relativ schmerzlose Instruktionen zu vermitteln, wie man Debian GNU/Hurd mit minimalem Aufwand konfiguriert.

Es basiert auf Neal H. Walfields Hurd Installations-Anleitung. Vielen Dank an Neal für seinen Beitrag.

Überblick

GNU ist von der Art ähnlich zu jedem Unix-artigen System: nach dem Einloggen werden dem Benutzer eine Shell und das vertraute Unix VFS (virtuelles Dateisystem) präsentiert. Obwohl GNU versucht, POSIX zu befolgen, ist es Nicht Unix. GNU/Hurd baut auf vielen der Unix-Konzepte auf und erweitert diese, um entweder neue Funktionalität zu ergänzen oder um zu korrigieren, was als Schwachstelle im ursprünglichen Design angesehen wird. Der am ehesten feststellbare Unterschied sind die Übersetzer, User-Space-Programme, die mit dem VFS interagieren. Diese Dateisysteme leben weder im Kernel noch müssen sie als root laufen; sie müssen nur auf die Hintergrundspeicherung und den Einbindungspunkt zugreifen. Ein anderer Unterschied ist der, dass Prozesse anstelle einer einzelnen Benutzeridentität, die bei der Erzeugung festgelegt ist, über Identitätsmarken verfügen, die vom Prozess abgekoppelt sind, d.h. sie können mit den erforderlichen Rechten von einer Autorität ergänzt oder zerstört werden.

Es ist zwingend erforderlich, mit der Unix-Umgebung (und speziell den GNU-Benutzerprogrammen, wie sie in beliebten Varianten wie beispielsweise GNU/Linux gefunden werden können) vertraut zu sein, um sich in GNU wohlzufühlen. Erfahrung mit den Debian-Werkzeugen erweist sich auch als unschätzbar zur Konfiguration und Wartung einer GNU/Hurd-Kiste.

Diese Anleitung bemüht sich, die Installation von GNU/Hurd zu einem so schmerzlosen Prozess wie möglich zu machen. Falls Fehler vorliegen, sind dies fast sicher Fehler des Autoren. Bitte berichten Sie diese an ihn, zusammen mit anderen Vorschlägen und Kritik; sie werden alle dankend entgegengenommen.

Installation

Sie können einfach den Debian-Installer verwenden, siehe die vorbereiteten CD-Images. Dann sind die folgenden Schritte nötig für eine korrekte Konfiguration.

Konfiguration

Das Netzwerk

Der Debian-typische Weg wird derzeit nicht unterstützt: /etc/network/interfaces wird ignoriert, ifup und ifdown funktionieren nicht. Bis auf Weiteres wird lediglich der Hurdische Weg unterstützt.

Stellen Sie zuerst sicher, dass Ihre Netzwerkkarte von GNU Mach erkannt wird:

 
 # devprobe eth0
 eth0

Falls devprobe eth0 nicht eth0 ausgibt, hat der Kernel Ihre Netzwerkkarte nicht erkannt und Sie müssen eine andere ausprobieren. Beispielsweise wird die Karte e1000 von Qemu nicht unterstützt, die rtl8139 sollte aber funktionieren: -net nic,model=rtl8139 -net user

Beginnend mit Version 20120520-1 enthält das hurd-Paket DDE-Treiber, die verwendet werden können, um aktuellere Geräte zu unterstützen (die Treiber stammen aus Linux 2.6.32). Übersetzer dafür wurden bereits für Sie eingerichtet; alles was Sie tun müssen ist, im Rest dieses Dokuments eth0 (den Mach-Treibernamen) durch /dev/eth0 (den DDE-Treiberpfad) zu ersetzen.

Es ist möglich zu versuchen, den DDE-Treiber zu verwenden, auch wenn GNU Mach einen Treiber enthält: das Hinzufügen von nonetdev auf der gnumach-Kommandozeile wird den GNU Mach-Treiber deaktivieren, und der DDE-Treiber wird mit seiner Arbeit beginnen.

Falls das Netzwerk nicht zu funktionieren scheint, verwenden Sie Folgendes, um Debugging-Informationen vom DDE-Treiber zu erhalten:

 
 # settrans -fgap /dev/netdde /hurd/netdde

und beenden Sie dann alle devnode- und pfinet-Prozesse, um diese mit dem neueren netdde neu starten zu lassen. Wenn es immer noch nicht funktioniert, schicken Sie uns bitte die Ausgabe des obigen settrans-Befehls für netdde sowie die Ausgabe von lspci und lspci -n .

Um das Netz zu konfigurieren, muss der pfinet-Übersetzer konfiguriert werden. Dies kann durch die Verwendung von dhclient aus dem isc-dhcp-client-Paket geschehen. Allerdings wurde dessen Start noch nicht automatisiert, daher muss er von Hand gestartet werden, z.B. mit dhclient /dev/eth0. Dies kann auch mittels inetutils-ifconfig aus dem inetutils-tools-Paket erledigt werden. Oder zu guter Letzt (und dauerhaft abgespeichert) ebenfalls über den settrans-Befehl, um einen Übersetzer an einen gegebenen Dateisystemknoten anzubinden. Wenn Programme auf den Knoten, beispielsweise durch Senden eines RPC, zugreifen, wird das Betriebssystem transparent den Server starten, um die Anfrage zu bearbeiten.

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

Hier werden settrans mehrere Optionen übergeben. Die ersten zwei, fg, erzwingen, dass existierende Übersetzer verschwinden. Die nächsten zwei, ap, erzeugen sowohl aktive als auch passive Übersetzer. Indem wir aktive Übersetzer erzeugen, sehen wir sofort jede Fehlermeldung auf stderr. Der Letztere speichert den Übersetzer und die Befehle im Knoten, so dass er später transparent neu gestartet werden kann (d.h. die Einstellungen bleiben persistent über Neustarts hinweg erhalten). Hinter den Optionen folgen der Knoten, an den der Übersetzer angebunden werden soll, dann das zu startende Programm (d.h. der Übersetzer) und schließlich jedes Argument, das Sie ihm übergeben. Die -i-Option ist die Schnittstelle, auf der pfinet auf Verbindungen warten wird, -a ist die IP-Adresse, -g ist das Gateway und -m ist die Netzmaske.

Stellen Sie sicher, dass Sie Nameserver zu Ihrer /etc/resolv.conf-Datei hinzufügen:

 
  nameserver 192.168.1.1

Um diese Konfiguration zu testen: ping -c2 gateway. Das -c ist wichtig, um die Anzahl der Pings zu begrenzen; erinnern Sie sich, dass CONTROL-C im Einzelbenutzermodus nicht funktioniert.

Hilfe über settrans können Sie durch Übergabe der --help-Option erhalten. Hilfe über einen speziellen Übersetzer erhalten Sie, indem er von der Befehlszeile mit dem gleichen Argument aufgerufen wird, z.B.:

 
# /hurd/pfinet --help

Da dies viel Ausgabe erzeugen kann, sollten Sie überlegen, diese durch ein seitenbasiertes Anzeigeprogramm wie less zu leiten.

Um auch IPv6-Unterstützung zu konfigurieren, muss die gleiche Konfiguration für /servers/socket/2 und /servers/socket/26 derart durchgeführt werden, dass sie sich gegenseitig referenzieren (damit nur einer wirklich gestartet wird) und an beide Knoten gebunden sind:

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

Der pfinet-Server aktiviert IPv6-Autokonfiguration als Standardeinstellung. Der aktuelle Status kann mit fsysopts /servers/socket/26 abgefragt werden. Adressen können auch von Hand festgelegt werden, indem z.B. -A 2001:123:123::42/64 -G 2001:123:123::1 verwendet wird.

Die Konfiguration von pfinet kann auch live verändert werden (ohne Abspeicherung auf Festplatte), indem fsysopts verwendet wird:

 
 # fsysopts /servers/socket/2
 /hurd/pfinet --interface=eth0 --address=10.3.0.1 --netmask=255.255.0.0 --gateway=10.3.0.128
 # fsysopts /server/socket/2 -a 10.3.0.2 -m 255.255.0.0 -g 10.3.0.128

Tastaturbelegung

Die Belegung der Tastatur kann über das standardmäßige keyboard-configuration-Paket konfiguriert werden. Stellen Sie sicher, dass dies installiert ist und führen Sie dpkg-reconfigure keyboard-configuration aus. Nur die Einstellung des Layouts wird derzeit unterstützt, einzelne Varianten noch nicht. Der Effekt wird nicht unmittelbar sichtbar sein, da die Konsole neu gestartet werden muss, um die geänderten Parameter in Betracht zu ziehen. Ein Systemneustart zum Beispiel sollte dies erledigen.

Andere Dateisysteme

Als nächstes editieren Sie /etc/fstab, um weitere Dateisysteme sowie Auslagerungsspeicher (swap space) hinzuzufügen. Es ist sehr wichtig, dass ein Auslagerungsspeicher verwendet wird; der Hurd wird um eine Größenordnung stabiler sein. Beachten Sie, dass sich der Hurd transparent eine Auslagerungspartition mit Linux teilen kann, aber auch fröhlich in jedes Gerät auslagern kann, das eine rohe Partitionstabelle enthält, wie beispielsweise Ihre Home-Partition. Standardmäßig sind nano und vi die einzigen Editoren, die in der Basisdistribution installiert werden.

Hier ist eine /etc/fstab-Datei als Beispiel:

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

Falls irgendeine /dev-Gerätedatei fehlt, denken Sie daran, sie mit dem MAKEDEV-Befehl anzulegen:

 
 # cd /dev
 # ./MAKEDEV hd0s1 hd0s2 hd0s3

Sie können auch ein Dateisystem von Hand einbinden, indem Sie settrans aufrufen:

 
 # settrans /mnt /hurd/ext2fs /dev/hd0s5

Die Idee hinter diesem Kommando ist, dass Sie auf dem /mnt-Knoten den /hurd/ext2fs /dev/hd0s5-Übersetzer setzen. /hurd/ext2fs wird ausgeführt und beginnt, /dev/hd0s5 zu lesen/zu schreiben und dessen Inhalt in /mnt anzuzeigen. Mehr Informationen finden Sie in der Dokumentation über Übersetzer.

Um ein NFS-Dateisystem einzubinden, wird der /hurd/nfs-Übersetzer verwendet. Falls er nicht als root läuft, wird er sich am Server mit einer Port-Nummer oberhalb von 1023 anmelden. Standardmäßig wird GNU/Linux dies ablehnen. Um GNU/Linux mitzuteilen, Verbindungen aus nicht-reservierten Ports zu akzeptieren, ergänzen Sie die insecure-Option zu der export-Zeile. Hier ist eine /etc/exports-Datei als Beispiel, die annimmt, dass die IP-Adresse des Clients 192.168.1.2 ist:

 
  /home  192.168.1.2(rw,insecure)

Um dies von einer GNU-Kiste einzubinden und unter der Annahme, dass die IP-Adresse des NFS-Servers 192.168.1.1 ist:

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

Spaß haben mit Debian GNU/Hurd

Nun, welche tollen Sachen können wir jetzt mit dem Hurd machen?

Disk-Images einbinden

Auf den Inhalt eines CD-Images zuzugreifen ist mit Standard-Unix-Systemen ein wenig mühsam, wenn Sie nicht root sind. Unter GNU/Hurd läuft dies auf Folgendes hinaus:

 
settrans ~/mnt /hurd/iso9660fs CD_image.iso

Und es ist total sicher: der iso9660fs-Übersetzer läuft unter Ihrer Identität, nicht als root. Sie können sogar Ihren eigenen Übersetzer für jede Art von Dateisystem programmieren. Ja, dies ist wie FUSE. Aber ohne den ganzen Behelf.

Transparentes FTP

Folgender Befehl setzt ein transparentes ftp-Verzeichnis auf:

 
settrans -c /ftp: /hurd/hostmux /hurd/ftpfs /

Wechseln Sie nun mit cd z.B. nach /ftp://ftp.gnu.org/ und führen Sie dort ls aus. Ja, Sie können von Ihrem Home-Verzeichnis aus einfach tar xf ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.6.0/gcc-4.6.0.tar.bz2 ausführen!

Sub-Hurd

Ein Sub-Hurd ist ein vollständiges Untersystem, auf den ersten Blick Virtualisierungs-Containern sehr ähnlich. Außer dass man nicht root sein muss, um eines laufen zu lassen.

gdb ext2fs, pfinet, ...

Ja, Sie können gdb z.B. auf die ext2fs-Implementation laufen lassen oder auf den pfinet TCP/IP-Stack usw.

Und vieles mehr!

Zu weiteren Dingen, die noch in Arbeit sind, gehören mboxfs, tarfs, xmlfs, gopherfs ...

Abschließende Worte

Das folgende sind lediglich einige, während der Installation notierte kurze Hinweise, stellen Sie sicher, dass Sie auch Dokumentation für das installierte System lesen: die Debian GNU/Hurd-Dokumentation, aber auch die Original-Website des GNU/Hurd-Projekts.

Weitere Pakete installieren

Es gibt mehrere Wege, um Pakete zu ergänzen. Herunterladen und dpkg -i verwenden funktioniert, ist aber sehr unbequem. Die einfachste Methode ist die Verwendung von apt-get. Editieren Sie /etc/apt/sources.list und ergänzen Sie einen der folgenden unreleased-Einträge für http://www.debian-ports.org/mirrors, installieren Sie dann das Paket debian-ports-archive-keyring:

 
deb http://ftp.debian-ports.org/debian unreleased main

http://ftp.debian-ports.org/ und seine Spiegel enthalten Pakete, die Korrekturen oder Patches enthalten, die noch nicht von den Originalautoren oder Debian integriert wurden.

Und den Unstable-Eintrag von einem der Debian-Spiegel (schauen Sie auf https://www.debian.org/mirror/list für die komplette Liste), der diese Architektur bedient (falls apt bad archive mirror meldet, versuchen Sie einen anderen Spiegel):

 
deb http://ftp.fr.debian.org/debian unstable main

Wenn beim ersten apt-get-Aufruf Meldungen von dpkg über fehlende Programme auftauchen, wechseln Sie in einer Login-Shell zu root (also su -, nicht einfach nur su).

Falls GNU Mach Ihre Netzwerk-Karte nicht erkennt oder Sie ein Modem verwenden, ist der einzige Weg, ein Upgrade durchzuführen, das Herunterladen der Pakete und die Übertragung in das GNU System. Der einfachste Weg hierzu ist die Verwendung von apt off-line. Lesen Sie /usr/share/doc/apt-doc/offline.text.gz für detaillierte Instruktionen.

Die Hurd-Konsole

Neben der Mach-Konsole, der Sie während der Installation begegnen, weist der GNU/Hurd eine mächtige Konsole mit virtuellen Terminals im Userspace auf. Sie sollte automatisch beim Booten gestartet werden, ansonsten können Sie sie manuell mit dem folgenden Befehl starten:

 
 # console -d vga -d pc_mouse --repeat=mouse -d pc_kbd --repeat=kbd -d generic_speaker -c /dev/vcs

Das automatische Starten der Konsole wird in /etc/default/hurd-console aktiviert.

Innerhalb der Hurd-Konsole können Sie zwischen virtuellen Terminals via ALT+F1, ALT+F2 und so weiter wechseln. ALT+CTRL+BACKSPACE hängt die Hurd-Konsole ab und bringt Sie zurück zur Mach-Konsole, von der aus Sie sich wieder mit dem obigen Befehl zurückverbinden können.

X.Org

X.Org ist portiert worden und alle Grafikkarten, die es unterstützt und die kein Kernelmodul oder DRM erfordern, sollten funktionieren.

Die Hurd-Konsole muss bereits laufen und die Repeater müssen eingerichtet sein, wie dies in dem vorherigen Abschnitt beschrieben ist.

Sie müssen dpkg-reconfigure x11-common ausführen, um jedem Benutzer zu ermöglichen, Xorg zu starten, da der X-Wrapper nichts von den Hurd- und Mach-Konsolen weiß.

Sie müssen auch die Datei /etc/X11/xorg.conf mit folgendem Inhalt erstellen, um das Tastenkürzel Strg-Alt-Zurück (Ctrl-Alt-Backspace) zu aktivieren:

 
Section "InputDevice"
   Identifier "Generic Keyboard"
   Driver "kbd"
   Option "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection

Sie werden mehrere X-Pakete benötigen. xorg, rxvt und ein Window-Manager wie twm, fvwm, wmaker, icewm, openbox, ... sind ein guter Anfang.

X.Org sollte sofort ohne eine Konfigurationsdatei funktionieren. Allerdings könnte in manchen Fällen die Verwendung des VESA-Treibers notwendig sein.

Schließlich geben Sie startx ein.

Letzte Worte

Das SysV rc-System wird noch nicht verwendet. Um Ihr System herunterzufahren, benutzen Sie einfach halt oder reboot.