GNU
GNU | |
---|---|
![]() | |
![]() | |
Entwickler | Free Software Foundation |
Lizenz(en) | GPL |
Akt. Version | 0.3 (CVS) |
Abstammung | - |
Sonstiges | Preis: kostenlos Status: in Entwicklung vielsprachig |
www.gnu.org |
GNU ist ein rekursives Akronym von GNU's Not Unix und bezeichnet das im Rahmen des GNU-Projekts in Entwicklung befindliche, vollständig freie Betriebssystem. Es wird mit dem Ziel entwickelt, eine vollständig freie Alternative für Unix zu bieten, und steht unter der GNU General Public License (GPL). Es besteht aus dem Mach Microkernel, den dazugehörenden Services, die mit dem Namen Hurd bezeichnet werden, und der weiteren Software des GNU-Projekts.
Geschichte
Nach der Gründung des GNU-Projekts 1983, das die Entwicklung von GNU zum Ziel hatte, wurde das GNU-System seit 1984 entwickelt. GNU wurde darauf ausgelegt, möglichst kompatibel zu Unix zu sein. Diese Entscheidung hatte mehrere Gründe: Zum einen war man sich sicher, dass die meisten Firmen ein grundlegend neues Betriebssystem ablehnen würden, wenn die Programme, die sie benutzten, darauf nicht laufen würden. Andererseits ermöglichte die Architektur von Unix eine schnelle, einfache und verteilte Entwicklung, da Unix aus vielen kleinen Programmen besteht, die größtenteils unabhängig von einander entwickelt werden können.
Im Jahr 1990 waren dann ein Entwicklungssystem mit dem GNU C-Compiler und viele Systemprogramme fertig gestellt, es fehlte aber noch ein Kernel. Die Free Software Foundation entschloss sich daraufhin 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.
Das Multiserversystem wurde GNU Hurd getauft. Da es aber sehr stark Multithreading nutzte, erwies sich das Debuggen als sehr schwierig. Das Projekt wurde sehr umfangreich und schwierig zu verwalten. Gleichzeitig zog das wesentlich pragmatischer entwickelte Linux immer mehr Entwickler an, die damit GNU Mach und GNU Hurd fehlten. Die Entwicklung dieser Teile ging schleppend voran. In dieser Zeit entstand ein Running Gag, bei dem Anwender fragten, wann Hurd fertig sei, und in der Antwort auf das jeweilige nächste Jahr verwiesen wurde.
1998 rief dann Marcus Brinkmann das Debian GNU/Hurd-Projekt ins Leben, um der Entwicklung wieder mehr Schwung zu verleihen. Die Infrastruktur des Debian-Projekts wurde so für GNU Mach und GNU Hurd nutzbar gemacht, wodurch erstmals eine größere Zahl an Applikationen auf das System portiert wurden. Im Rahmen von Debian GNU/Hurd entstand eine nutzbare Installationsroutine, auch wurden X11, GNOME und KDE auf die Plattform portiert. Zusätzlich profitierte sie von der ausgereiften Paketverwaltung mittels apt-get, dpkg sowie den anderen Hilfsmitteln, die Debian zur Systemverwaltung bereitstellt. Brinkmann erweiterte GNU Hurd zudem um eine Unicode-fähige Konsole, die auf einer Client/Server-Architektur beruht und somit die Linux-Konsole an Flexibilität deutlich übertrifft.
Seit 2001 gibt es außerdem Bestrebungen, GNU Hurd von dem Mach-Microkernel GNU Mach auf einen L4-Kernel, einen Mikrokernel der zweiten Generation, zu portieren. Dieses Projekt, genannt "L4-Hurd", wird, wie schon Debian GNU/Hurd, ebenfalls maßgeblich von Marcus Brinkmann bearbeitet und koordiniert. Seit Februar 2005 ist die erste Phase dieser Portierung abgeschlossen. Erste kleine Programme können seitdem unter einem GNU-Hurd-L4-System ausgeführt werden. Allerdings stehen bisher weder eine Shell, noch die GNU Software zur Verfügung, sodass sich die Interaktion mit dem System vorerst auf die Bedienung des Kernel-Debuggers beschränkt. Zur Zeit (Januar 2006) gibt es Überlegungen, statt des L4-Microkernels Coyotos zu verwenden.
Unterscheidung von GNU, GNU Hurd, GNU Mach und GNU Software
"GNU" bezeichnet das volle Betriebssystem, das vom GNU-Projekt entwickelt wird. Es umfasst alle Bestandteile des Systems. Diese Bestandteile gliedern sich wiederum in "GNU Mach", "GNU Hurd" und die "GNU Software":
- "GNU Mach" ist der Microkernel selbst Vorlage:Ref, der die Abstraktion der Hardware ermöglicht.
- "GNU Hurd" stellt die Sammlung von Servern dar, die auf GNU Mach laufen Vorlage:Ref. Diese Services implementieren Dateisysteme, Netzwerkprotokolle, Datei-Zugriffs-Kontrollen und andere Eigenschaften.
- "GNU Software" beschreibt die Sammlung von Software, die rund um den Kernel und die Services programmiert wurde, um ein vollständiges Betriebssystem zu ermöglichen Vorlage:Ref. Dazu gehören unter anderem auch die GNU Compiler Collection, die Bash (Bourne-Again-Shell) und GNU Emacs.
- "Hurd/L4" oder auch "L4-Hurd" Vorlage:Ref ist ein Projekt, das "GNU Hurd" auf den L4-Microkernel übertragen und damit langfristig GNU Mach ablösen soll Vorlage:Ref.
Häufig werden einige dieser Bezeichnungen aber äquivalent genutzt. So wird das ganze System teilweise als Hurd bezeichnet, was streng genommen aber falsch ist.
Der Name GNU soll, um Verwechslungen zu vermeiden, wie der deutsche Name des Tieres Gnu ausgesprochen werden, nicht wie im Englischen (also wie new). Auch als Symbol wurde der Kopf eines afrikanischen Gnu-Rindes gewählt.
GNU Hurd
Namensbedeutung
Bei dem Namensteil Hurd (früher auch HURD) von GNU Hurd 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.
Grundlegendes Konzept
GNU Hurd wurde entworfen, um dem Benutzer weitestgehende Freiheit zu gewähren, ohne die Sicherheit des Gesamtsystems oder anderer Benutzer zu gefährden Vorlage:Ref.
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.
Technische Realisierung
Das wichtigste Konzept von GNU Hurd ist der Übersetzer. Ü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 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 root-Ü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.
GNU Software
Der Teilbereich GNU Software von GNU ist der am weitesten verbreitete und eingesetzte Teilbereich von GNU. Die Software wird vor allen Dingen auf Linux-Systemen und kommerziellen Unix-Systemen eingesetzt. Gerade bei kommerziellen Unix-Systemen ersetzt sie dabei häufig proprietäre Lösungen, da sich bei Vergleichen die GNU Software als stabiler und weniger anfällig für Fehler herausgestellt hat Vorlage:Ref. Einige Programmteile der GNU Software, wie z.B. die GNU Compiler Collection, wurden auf nahezu alle verfügbaren Betriebssysteme portiert. Dazu gehören auch proprietäre Plattformen wie Microsoft Windows und Mac OS X.
Bekannte Bestandteile der GNU Software sind neben der GNU Compiler Collection die GNU C Library und der GNU Emacs Texteditor.
Zu beachten ist, dass nicht alle Software, die zum GNU-System gehört, vom GNU-Projekt erstellt wird. So hat das GNU-Projekt z.B. darauf verzichtet, einen eigenen X-Server zu entwickeln, und greift statt dessen auf vorhandene freie Software in diesem Bereich zurück.
Geschichte
Das erste für das GNU-System geschriebene Programm war der Texteditor GNU Emacs von Richard Stallman. Die Arbeit daran begann im September 1984 Vorlage:Ref, Anfang 1985 wurde es von Stallman selbst erstmals als benutzbar eingestuft. In dieser Zeit war die Verteilung der Software über das Internet noch nicht üblich, da Zugänge selten waren. Deshalb bot Stallman an, gegen Geld Kopien zu erstellen und zu versenden - dies war eines der ersten Geschäftsmodelle für freie Software.
Ab 1991 wurde die GNU Software auch im Zusammenhang mit Linux eingesetzt und erreichte damit eine große Verbreitung. Faktisch jedes eingesetzte Linux-System basiert auf dem GNU-System. Richard Stallman legt daher auch die Verwendung der Bezeichnung GNU/Linux nahe Vorlage:Ref, was seit dem immer wieder kontrovers diskutiert wurde (siehe auch Geschichte von Linux).
Status
Das Betriebssystem befindet sich nach wie vor in der Entwicklung, da noch nicht alle Hurd-Server fertig implementiert wurden. Auf der anderen Seite aber ist der Teilbereich GNU Software nahezu vollständig. GNU Software wird seit Jahren z.B. auf Linux-Systemen und auf kommerziellen Unix-Systemen in allen Bereichen eingesetzt.
Debian GNU/Hurd
Die am weitesten forgeschrittene und aktivste GNU-Distribution ist derzeit Debian GNU/Hurd. Etwa 45% der ca. 15.000 im offiziellen Debian-Archiv enthaltenen Pakete wurden bislang erfolgreich für Debian GNU/Hurd übersetzt. Im ersten Halbjahr 2005 konnten große Applikationen wie KDE und GNOME nach Debian GNU/Hurd portiert werden. Von Debian GNU/Hurd wird zur Zeit etwa halbjährlich ein Schnappschuss in Form von CD-ROMs veröffentlicht. Die Installation, Benutzung und Administration des Systems unterscheidet sich, abgesehen von vorhandenen Einschränkungen, kaum von Debian GNU/Linux. Soundkarten sowie moderne Peripherie-Geräte via USB, Firewire, Bluetooth sowie eine automatische Hardware-Erkennung (Hotplug) werden z.Z. noch nicht unterstützt, auch fehlt die Unterstützung für zahlreiche Dateisysteme (ext3, ReiserFS etc.)
Neben der Debian-GNU/Hurd-Portierung existiert noch das Gentoo/Hurd Projekt.
Hardware-Voraussetzungen
Zur Zeit läuft GNU nur auf IA-32-Maschinen. Die Portierung auf andere Architekturen sollte jedoch nicht so schwer sein, und an einer Portierung auf die PowerPC-Architektur wird schon gearbeitet.
Varianten
Das GNU-System ist faktisch ein Betriebssystem, dem ein Kernel fehlt. Da die Software auf andere Kernel als GNU Mach mit den GNU Hurd Services übertragen werden kann, gibt es Systeme, die als Variante von GNU bezeichnet werden können. So wird Linux fast immer mit der GNU Software ausgegeben, weswegen einige Nutzer und Projekte solche Systeme auch als GNU/Linux bezeichnen.
Ebenfalls existiert das von Cygnus Solutions entwickelte Cygwin, einem auf Microsoft Windows lauffähigen GNU-System.
Quellen
- Vorlage:Fußnote
- Vorlage:Fußnote
- Vorlage:Fußnote
- Vorlage:Fußnote
- Vorlage:Fußnote
- Vorlage:Fußnote
- Vorlage:Fußnote
- Vorlage:Fußnote
- Vorlage:Fußnote
Weblinks
- Homepage des GNU Systems (englisch)
- Debian GNU/Hurd-Homepage
- Gentoo/Hurd-Homepage (englisch)