Bemerkung: Das Original ist neuer als diese Übersetzung.
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
http://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.
