GNU Hurd
GNU Hurd /hörd/ ist der Basisbestandteil des freien Betriebssystems GNU. Es besteht aus einer Sammlung von Mach-Servern, die gemeinsam die Funktionalität eines Unix-Kernels auf Basis des Microkernelmodells anbieten. Hurd wird neben Mach auch auf den schnelleren L4-Microkernel portiert.
Bei dem Namen Hurd (früher auch als HURD bekannt) handelt es sich um ein rekursives Akronym, das ausgeschrieben Hird of Unix-Replacing Daemons (deutsch: Herde Unix ersetzender Dienste) lautet, wobei Hird wiederum für Hurd of Interfaces Representing Depth (deutsch: Herde von Tiefe darstellenden Schnittstellen) steht. Im Englischen benutzt man es immer mit dem Artikel – also the Hurd, während man sich im Deutschen nicht auf ein Genus einigen konnte und den Artikel weglässt.
GNU Hurd ist ein Projekt der Free Software Foundation und steht, wie der Linux-Kernel, unter der GNU General Public License. Wie Linux ist Hurd selbst noch kein vollständiges Betriebssystem, erst in Kombination mit weiterer Software (Kommandointerpreter, Dateiverwaltungsprogramme, Textwerkzeuge, Systembibliotheken usw.) formt es das Betriebssystem GNU/Hurd (analog dazu: GNU/Linux). Seit vielen Jahren steht eine offizielle Veröffentlichung des Kernels bevor, doch da diese auf sich warten lässt, wird in Newsgroups und anderen Diskussionsforen immer wieder gelästert, „nächstes Jahr“ sei er fertig – wie auch schon die letzten Jahre.
| Inhaltsverzeichnis |
Konzepte
GNU Hurd wurde entworfen, um dem Benutzer weitestgehende Freiheit zu gewähren, ohne die Sicherheit des Gesamtsystems oder anderer Benutzer zu gefährden.
In traditionellen Unix-Systemen, zu denen konzeptionell auch Linux zählt, erfordern viele Aktionen Privilegien, über die der normale Benutzer nicht verfügt. Dazu gehört etwa das Einbinden (mounten) von Dateisystemen (z. B. Disketten, CD-ROMs, Memory Sticks). Damit steht der Administrator vielfach vor der Wahl, entweder die Handlungsfreiheit der Benutzer einzuschränken, oder Sicherheitsrisiken in kauf zu nehmen, indem er Benutzern die Ausführung einiger privilegierter Aktionen zugesteht.
Das Design von GNU Hurd räumt dagegen mit den Einschränkungen radikal auf, indem es dafür sorgt, dass die meisten Aktionen keinerlei Privilegien mehr benötigen. Dies wird erreicht, indem Gerätetreiber, Dateisysteme, Netzwerkprotokolle und Ähnliches aus dem privilegierten Adressraum des Kernels herausgenommen werden und als normale Benutzerprozesse laufen, sodass sie (theoretisch) keinen Schaden am Gesamtsystem anrichten können.
Technisches
Das wichtigste Konzept von GNU Hurd ist das der Übersetzer, wobei der Begriff des Übersetzers im Kontext des Mach-basierten GNU Hurd durch „Mach-Server“ ersetzbar ist. Übersetzer oder Server erfüllen u.a. ähnliche Funktionen wie Treiber oder Mountpoints in traditionellen Unix-Systemen, stellen aber eine Reihe weitaus speziellerer Funktionen zur Verfügung.
Ein Übersetzer läuft jedoch im User-Space, also außerhalb des privilegierten Adressraums des Kernels. Er kann allerdings Privilegien genießen, um besondere Funktionen durchführen zu können. Dieses Konzept bietet eine Reihe von Vorteilen:
- Sollte ein Übersetzer in seinem Dienst versagen, kann er den Kernel nicht ohne Weiteres zum Erliegen bringen.
- Programme im User-Space sind leichter zu debuggen.
- Sofern nicht bestimmte Privilegien benötigt werden, kann jeder Benutzer selbst Übersetzer setzen, um zum Beispiel ein eigenes Dateisystem einzurichten. Da der entsprechende Übersetzer dann unprivilegiert läuft, stellt er kein Sicherheitsrisiko dar. Außerdem braucht der Benutzer nicht die eingebauten Funktionen des Kernels zu benutzen, sondern kann sich den Übersetzer selbst nach Belieben erstellen, ohne dass das die Integrität des System dadurch in Mitleidenschaft gezogen werden kann.
Der Namensraum, in dem man allgemein zugängliche Ports findet, auf denen die Server dienen, ist das Dateisystem. Dieses wird selbst vom Wurzel-Übersetzer kontrolliert. Dadurch können Programme mit den üblichen Dateioperationen von den Möglichkeiten von Hurd profitieren, auch ohne speziell dafür angepasst zu werden. Sinnvoll ist dies beispielsweise für Low-Level-Implementierungen virtueller Dateisysteme: Der Übersetzer ftpfs stellt zur Laufzeit auf der zugewiesenen Datei ein Verzeichnis dar (der Unterschied zwischen Dateien und Verzeichnissen ist in Hurd verschwindend gering), auf das wie ein normales Verzeichnis zugegriffen werden kann; allerdings übersetzt ftpfs die Dateioperationen in FTP-Operationen, die zu einem Server geschickt werden. Dies entspricht im Wesentlichen der Funktionalität graphisch orientierter FTP-Clients, wo entfernte Verzeichnisse wie lokale aussehen, ftpfs von Hurd ermöglicht es jedoch, mit normalen Programmen wie ls oder cat auf dem entfernten Server zu agieren.
Eine lange Geschichte
Seit 1984 wurde das GNU-System entwickelt, das ein vollständiges Betriebssystem nach dem Vorbild von Unix sein sollte. Im Jahr 1990 waren ein Entwicklungssystem mit dem GNU C-Compiler und viele Systemprogramme fertig, es fehlte nur noch der Kernel. Die Free Software Foundation entschloss sich nach langem hin und her dazu, den Mach-Kernel zu verwenden und darauf aufbauend ein Multiserverbetriebssystem zu schreiben, damit das System leichter um weitere Komponenten erweitert werden kann und auch Benutzer ohne Administratorrechte eigene Komponenten einbinden können, ohne die Stabilität des Gesamtsystems zu gefährden.
Da Hurd-Server sehr stark Multithreading nutzen, erwies sich das Debuggen jedoch als sehr schwierig. Da es sich bei Hurd um ein sehr umfangreiches und schwieriges Projekt handelt und zudem der pragmatischer entworfene Kernel Linux, entwickelt im traditionell monolithischen Entwicklungsmodell, stärkere Aufmerksamkeit erlangte, geht die Entwicklung schleppend voran. Dies ist sicher dadurch zu begründen, dass die Zahl effektiv aktiver und fähiger Entwickler beinahe an den Fingern abzuzählen ist. Mittlerweile hat sich die Frage, wann Hurd fertig werde, unter Unix-Anwendern zum beliebten Kalauer entwickelt.
1998 wurde das Debian GNU/Hurd Projekt ins Leben gerufen, durch das erstmals eine größere Zahl an Applikationen unter GNU/Hurd getestet wurde. Parallel dazu ist jedoch eine andere Entwicklerfraktion dabei, unter der Beobachtung und Beratung von Richard Stallman Distributionswerkzeuge wie einen Paketmanager zu entwickeln, die die von Hurd gebotene Funktionalität besser ausnutzen. Das fertige System soll dann das offizielle GNU-System werden. Seit 2001 gibt es außerdem Bestrebungen, Hurd von Mach auf L4, einen Mikrokernel der zweiten Generation, zu portieren (Hauptentwickler des L4-Kernels war der früh verstorbene Prof. Dr. Jochen Liedtke [1]).
Seit Februar 2005 ist diese Portierung zum Teil abgeschlossen und erste Programme können unter einem GNU/Hurd L4 Sytem ausgeführt werden. Außerdem wurden große Applikationen wie KDE nach GNU/Hurd portiert.
Weblinks
- GNU/Hurd Live-CD mit L4-Kernel - Gnuppix
- Debian GNU/Hurd Live-CD mit Mach Kernel
- The GNU Hurd (deutschspr. Seite)
- Debian GNU/Hurd
- Häufig gestellte Fragen zu GNU Hurd
