Open Source im professionellen Einsatz
Linux-Magazin 11/2002
1114

L4 statt Mach

Zwar ist Mach ein Kernel mit sauberem Design und innovativen Konzepten, doch er enthält eine reichlich große Menge an Abstraktionen, die Hurd nicht benötigt und die das System nur langsam machen. Auch erledigt Mach zu viele Dinge selbst, was Hurds angestrebter Dezentralität in einzelnen Bereichen widerspricht.

Langfristig plant die Hurd-Community darum eine sehr einschneidende Änderung: die Umstellung vom Mach- auf den L4-Mikrokernel (siehe[4] und[5]). L4 ist ein zumindest im Vergleich zu Mach relativ neuer Mikrokernel, der eine andere Strategie verfolgt: Er bietet nur Mechanismen an, während diverse Server die Regeln bestimmen und umsetzen. Das Konzept führt dazu, dass die von L4 angebotenen primitiven Operationen sehr schnell sind und man auf ihnen exakt die benötigte Funktionalität aufbauen kann.

An dieser Infrastruktur wird derzeit gearbeitet. Das soll aber keinesfalls bedeuten, dass es noch nicht interessant ist, sich mit Mach näher zu beschäftigen. Wie hier gezeigt, ist GNU/Hurd bereits mit dem aktuellen Mach als Basis ein System mit interessanten Konzepten.

GNU/Hurd ausprobieren

Nach dieser Rundreise durch GNU/Hurd ein paar praktische Hinweise: Es gibt zwar noch keine offizielle Release von Debian GNU/Hurd, doch in unregelmäßigen Abständen erscheinen neue CD-Images, von denen sich das System einigermaßen komfortabel installieren lässt. Für die Installation wird derzeit GNU/Linux eingesetzt. Entsprechend bestehen die Versionsnummern für die CDs aus zwei Komponenten: Ein Buchstabe (gegenwärtig "J") kennzeichnet die Version der Linux-Komponente, während die angehängte Zahl die Änderungen an den Paketen widerspiegelt.

Empfehlenswert ist es, sich vor jeder Hurd-Installation auf den Webseiten von Hurd[3] ausgiebig zu informieren, denn Schwierigkeiten sollte man einkalkulieren. Die Lösungen für einige häufig auftretende Probleme erläutert der Kasten "Typische Probleme".

Upgrades sind normalerweise mittels APT bequem möglich. Eine Ausnahme machen die J1-CDs, die Unterstützung für große Dateien ermöglichen. Die damit verbundenen inkompatiblen Änderungen erzwingen eine besondere Upgrade-Prozedur[2]. (jk)

 

Wie alles begann

Anfang der 80er Jahre begann Richard M. Stallman (RMS) mit der Entwicklung des GNU-Betriebssystems, das anderen Betriebssystemen nicht nur technisch, sondern vor allem auch "sozial und ethisch" überlegen sein sollte. Er meinte damit, dass Benutzer nicht durch tyrannische Lizenzbestimmungen davon abgehalten werden sollen, miteinander zu kooperieren und jene Freiheit zu nutzen, die Software bieten kann.

Stallman war sich bewusst, dass die Entwicklung eines vollständigen Systems lange dauern würde und dass nicht vorhersagbar ist, welche Hardware in Jahren verbreitet sein wird. Darum verschob er die Entwicklung der hardwarenahen Komponente, des Kernels, an den Schluss. Da das Debuggen von Code, der im Kernel-Modus läuft, kompliziert ist, entschied man sich für das moderne Design einer Mikrokernel-Architektur. Es dauerte allerdings mehrere Jahre, bis der Mach-Mikrokernel [4], eine Entwicklung der University of Rochester aus den 70ern, die alsbald an die Carnegie Mellon University überging, unter einer Lizenz bereitgestellt wurde, die für die GNU-Gemeinde akzeptabel war. Daher begann die Entwicklung von Hurd erst 1991.

Ebenfalls ziemlich lange dauerte die Entwicklung von Schnittstellen, die einerseits mächtiger und sauberer als ihre Äquivalente aus der Unix-Welt sein sollten und andererseits dennoch der Unix-Semantik folgen.

Da Linux, eine Kombination aus dem Rest des GNU-Systems und dem monolithischen Linux-Kernel, sehr beliebt und zuverlässig ist, hatte Hurd im GNU-Projekt kaum Priorität - das damalige Fehlen eines freien Desktops war wichtiger. Zwischenzeitlich kam die Entwicklung von Hurd sogar ganz zum Erliegen.

Politik ist bei GNU wichtig

Um den Erfolg von freier Software langfristig zu sichern, wird Hurd nach Ansicht mancher GNU-Akteure wieder interessanter. Sie meinen, dass einige der Linux-Hauptentwickler den Status des Linux-Kernels als freie Software durch ihre unpolitischen Ansichten und Handlungen gefährden würden.

 

Typische Probleme

Neal Walfields Installationsanleitung[1] beschreibt die Installation von Hand. Wenn man von den Debian-GNU/Hurd-CDs installiert - was sinnvoll ist -, werden einige der dort beschriebenen Punkte bereits automatisch ausgeführt. Dennoch ist die Anleitung außerordentlich hilfreich. Da zudem die Installation nicht übermäßig schwierig ist, seien hier nur häufig auftretende Probleme mit passenden Lösungen beschrieben.

Problem: Bei der Installation wird kein Bootmanager eingerichtet

Lösung: Der Bootmanager muss derzeit manuell eingerichtet werden. Prinzipiell eignet dazu jeder Bootloader, der den Multiboot-Standard implementiert. Das ist derzeit allerdings nur GNU Grub. Der bekannte Lilo dagegen funktioniert nicht. Disketten-Images, auf denen sich Grub befindet, liegen auf den Installations-CDs bereit.

Problem: Der Mach-Kernel bootet nicht

Lösung: Es gibt für dieses Verhalten zwei typische Ursachen. Erstens: Mach hat Probleme mit großen Arbeitsspeichern. Bei Rechnern mit mehr als 700 MByte muss das »uppermem«-Kommando in Grub die für Mach sichtbare Menge einschränken. Zweitens: Mach unterstützt kein IRQ-Sharing, das also deaktiviert werden sollte.

Problem: Der »ext2fs.static«-Server stürzt beim Booten ab

Lösung: Hurd unterstützt derzeit nur Dateisysteme bis etwa 1,9 GByte, da »libdiskfs« das Dateisystem in den virtuellen Adressraum des Übersetzers einblendet (mappt). Für Ext 2 und UFS gilt diese Einschränkung, über NFS sind jedoch größere Dateisysteme nutzbar.

Problem: »native-install« schlägt fehl

Lösung: Beim Erzeugen des Root-Dateisystems muss als Besitzer »hurd« angegeben werden (»mkfs.ext2 -o hurd«), da sonst das Verwenden von Übersetzern nicht möglich ist.

Problem: »native-install« bleibt hängen

Lösung: Der »ext2fs«-Server hat Probleme mit dem Schreibzugriff bei manchen Blockgrößen. Die Option »-b 4096« beim Erzeugen des Dateisystems soll dieses Problem lösen.

Problem: Das Installieren von Paketen schlägt wegen nicht erfüllbarer Abhängigkeiten fehl

Lösung: Einige wichtige Pakete befinden sich nicht auf den Debian-Servern, sondern auf [alpha.gnu.org] und dessen Mirrors. Es ist daher in der Datei »/etc/apt/sources.list« folgende Zeile erforderlich:

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

Problem: X11 funktioniert nur als Root

Lösung: GNU/Hurd kennt keinen Library-Mechanismus mit »/etc/ld.so.conf« oder Ähnlichem. Der Loader sucht nach Bibliotheken nur in »/lib« und den Pfaden, die in »LD_LIBRARY_PATH« stehen. Da SUID- und SGID-Binaries wie Xterm diese Umgebungsvariable ignorieren, geht der XFree-Aufruf vielfach ins Leere. Es bleibt hier nur, die X11-Bibliotheken aus »/X11R6/lib« entweder nach »/lib« zu kopieren oder symbolische Links anzulegen.

 

Infos

[1] Neal Walfields's Installationsanleitung: [http://web.walfield.org/papers/hurd-installation-guide/english/hurd-install-guide.html]

[2] Upgrade-Anleitung: [http://www. debian.org/ports/hurd/extra-files/hurd-upgrade.txt]

[3] Hurd-Homepage: [http://www.gnu.org/software/hurd/]

[4] Mach-Kernel: [http://www-2.cs.cmu.edu/afs/cs.cmu.edu/project/mach/public/www/mach.html]

[5] L4-Mikrokernel: [http://www.l4ka.org]

 

Der Autor

Wolfgang Jährling ist einer der wenigen Hacker, die gerne an einer Dokumentation schreiben. Er versucht daher in der Hauptsache, Hurd in dieser Hinsicht zu verbessern, steuert aber auch gelegentlich Code bei.

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

comments powered by Disqus

Ausgabe 08/2016

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.