Hintergrundwissen zu BSD

Greg Lehey

<grog@FreeBSD.org>

Version: 47809

Rechtlicher Hinweis

2015-11-29 11:40:28 von bhd.

Zusammenfassung

In der Open Source-Welt steht das Wort „Linux“ oft synonym für „Betriebssystem“, obwohl es nicht das einzige frei verfügbare Betriebssystem ist. Laut Internet Operating System Counter liefen im April 1999 weltweit 31,3 Prozent der vernetzten Rechner unter Linux, 14,6 Prozent liefen hingegen unter BSD UNIX®. Einige der weltweit größten Internetdienstleister, darunter Yahoo!, verwenden BSD. Der im Jahre 1999 weltgrößte FTP-Server ftp.cdrom.com (inzwischen abgeschaltet) verwendete BSD, um täglich 1,4 Terabyte an Daten zu übertragen. Hier geht es offensichtlich nicht um einen Nischenmarkt, BSD ist vielmehr ein gut gehütetes Geheimnis.

Worin besteht nun dieses Geheimnis? Warum ist BSD nicht bekannter? Dieser Artikel versucht, diese und andere Fragen zu beantworten.

Unterschiede zwischen BSD und Linux werden in diesem Artikel kursiv dargestellt.

Übersetzt von Fabio Tosques.

[ einzelne Abschnitte / komplettes Dokument ]

1. Was ist BSD?

BSD steht für „Berkeley Software Distribution“, also für die Verbreitung des Quellcodes der University of California, Berkeley, und war ursprünglich als Erweiterung für ein von AT&T's Research entwickeltes UNIX® Betriebssystem gedacht. Verschiedene Open Source-Projekte beruhen auf dieser, als 4.4BSD-Lite bekannten Quellcodeausgabe. In dieser Ausgabe sind auch Softwarepakete anderer Open Source-Projekte, insbesondere jene des GNU-Projekts, enthalten. Das komplette Betriebssystem umfasst:

Den BSD-Kernel, der sich um Prozessscheduling, Speichermanagement, die Unterstützung mehrerer Prozessoren (symmetric multi-processing, SMP), Gerätetreiber und anderes mehr kümmert.

Im Gegensatz zum Linux-Kernel gibt es verschiedene BSD-Kernel mit unterschiedlichen Fähigkeiten.

Die C-Bibliothek, die grundlegende API des Systems.

Die C-Bibliothek von BSD basiert auf Berkeley-Code und nicht auf Code des GNU-Projekts.

Nützliche Programme wie Shells, Programme für Dateioperationen, Compiler und Linker.

Einige Programme stammen aus dem GNU-Projekt, andere hingegen nicht.

Das X Window-System für die grafische Benutzeroberfläche.

Bei den meisten BSD-Versionen wird das X Window-System eingesetzt und zwar die Version des X.org-Projekts. FreeBSD erlaubt es dem Benutzer, aus einer grossen Anzahl an Desktop-Umgebungen zu wählen, wie beispielsweise Gnome, KDE oder Xfce. Ebenso gibt es leichtgewichtige Window-Manager wie Openbox, Fluxbox oder Awesome.

Viele weitere Programme und Werkzeuge.

2. Ein echtes UNIX®?

BSD-Betriebssysteme sind keine Nachbauten, sondern Weiterentwicklungen des UNIX® Betriebssystems von AT&T's Research, das als Vorfahre des modernen UNIX® System V gilt. Überrascht Sie diese Aussage? Wie kann das sein, wenn AT&T seine Quellen nie als Open Source veröffentlicht hat?

Es stimmt, dass AT&T UNIX® kein Open Source ist. Im Sinne des Copyright ist BSD daher eindeutig kein UNIX®. Andererseits fügte AT&T aber Quellcode von anderen Projekten in den eigenen Code ein, insbesondere jenen der Computer Sciences Research Group (CSRG) der University of California in Berkeley, CA. Im Jahr 1976 begann die CSRG damit, Bänder ihrer Software zu vertreiben, die sie Berkeley Software Distribution oder BSD nannten.

Anfangs wurden vor allem Anwendungen veröffentlicht. Das änderte sich schlagartig, als die CSRG von der Advanced Research Projects Agency (DARPA) den Auftrag bekam, deren Kommunikationsprotokolle (ARPANET) zu überarbeiten. Die neuen Protokolle wurden als Internet Protocols bezeichnet, und wurden später als TCP/IP weltbekannt. Die erste Implementierung dieser Protokolle erfolgte 1982 als Teil von 4.2BSD.

Im Laufe der 80er Jahre entstanden einige neue Firmen, die Workstations vertrieben. Viele zogen es vor, UNIX® zu lizenzieren und kein eigenes Betriebssystem zu entwickeln. Sun Microsystems lizenzierte UNIX®, implementierte eine Version von 4.2BSD und bezeichnete das fertige Produkt als SunOS™. Als es AT&T gestattet wurde, UNIX® kommerziell zu vertreiben, verkaufte AT&T eine abgespeckte Version namens System III, der schnell System V folgte. Im System V-Basissystem waren keine Netzwerkfunktionen enthalten, daher wurden alle Implementierungen zusätzlich mit Software des BSD-Projekts, darunter TCP/IP sowie diverse nützliche Programme wie csh oder vi. Diese Erweiterungen wurden unter der Bezeichnung Berkeley Extensions zusammengefasst.

Da die BSD-Bänder AT&T-Quellcode enthielten, war eine UNIX® Lizenz erforderlich. Als im Jahre 1990 die Förderung der CSRG auslief, beschlossen einige Mitglieder der Gruppe, den quelloffenen BSD-Code ohne den proprietären AT&T-Code zu veröffentlichen. Das Ergebnis dieser Bemühungen war Networking Tape 2, besser bekannt als Net/2. Net/2 war aber kein komplettes Betriebssystem, da gut 20 Prozent des Kernelcodes fehlten. William F. Jolitz, ein Mitglied der CSRG, schrieb den fehlenden Code und veröffentlichte diesen Anfang 1992 als 386BSD. Zur gleichen Zeit gründete eine andere Gruppe ehemaliger CSRG-Mitglieder das kommerzielle Unternehmen Berkeley Software Design Inc. und veröffentlichte eine Betaversion des Betriebssystems unter dem Namen BSD/386, die auf den gleichen Quellen basierte. Später wurde dieses Betriebssystem in BSD/OS umbenannt.

386BSD war niemals wirklich stabil. Daher spalteten sich 1993 zwei neue Projekte ab: NetBSD sowie FreeBSD. Beide Projekte entstanden, weil sich 386BSD zu langsam weiterentwickelte. Die erste NetBSD-Version entstand Anfang 1993, die erste FreeBSD-Version Ende 1993. Zu dieser Zeit hatte sich der Quellcode aber derart verändert, dass es schwer war, ihn wieder zu verschmelzen. Zudem hatten die beiden Projekte unterschiedliche Ziele, die dieser Artikel noch beschreiben wird. 1996 spaltete sich ein weiteres Projekt von NetBSD ab: OpenBSD. 2003 spaltete sich schließlich DragonFlyBSD von FreeBSD ab.

3. Warum ist BSD nicht bekannter?

BSD ist aus vielen Gründen relativ unbekannt:

BSD-Entwickler sind eher an der Verbesserung des Codes interessiert als an der Vermarktung desselben.

Die Popularität von Linux beruht auch auf externen Faktoren wie der Presse, sowie auf Firmen, die gegründet wurden, um Linux zu vertreiben. Bis heute fehlen den freien BSD-Systemen solche Förderer.

BSD-Entwickler sind vielleicht erfahrener als Linux-Entwickler, und haben deshalb weniger Interesse daran, die Benutzung des Systems einfacher zu gestalten. Einsteiger sind bei Linux wahrscheinlich besser aufgehoben.

1992 verklagte AT&T BSDI, den Verkäufer von BSD/386, mit der Behauptung, der Quellcode enthalte urheberrechtlich geschützten AT&T Code. Zwar kam es 1994 zu einer außergerichtlichen Einigung, die Leute waren aber erst einmal verunsichert. Noch im März 2000 behauptete ein im Web publizierter Artikel, das Verfahren sei erst „kürzlich“ eingestellt worden.

Bezüglich der Bezeichnung schaffte der Gerichtsprozess jedoch Klarheit: In den 80er Jahren war BSD unter dem Namen „BSD UNIX®“ bekannt. Durch die Entfernung der letzten Zeilen des AT&T-Codes verlor BSD das Recht, sich UNIX® zu nennen. Deshalb finden Sie in der Literatur sowohl Verweise auf „4.3BSD UNIX®“ als auch auf „4.4BSD“.

Nach wie vor existiert das Vorurteil, die einzelnen BSD Projekte seien gespalten und zerstritten. Das Wall Street Journal sprach gar von einer „Balkanisierung“ des BSD-Projekts. Wie der Prozess, basiert auch dieses Vorurteil hauptsächlich auf alten Geschichten.

4. Ein Vergleich zwischen BSD und Linux

Wo sind nun die Unterschiede zwischen, sagen wir Debian GNU/Linux und FreeBSD? Für die meisten Benutzer sind die Unterschiede nicht groß: Beide sind UNIX® ähnliche Betriebssysteme. Beide sind nichtkommerzielle Projekte (was für eine Vielzahl anderer Linux-Distributionen nicht gilt). Der folgende Abschnitt betrachtet BSD näher und vergleicht es mit Linux. Die meisten Erläuterungen beziehen sich auf FreeBSD, da es sich dabei um das am häufigsten installierte BSD-System handelt. Die Unterschiede zu NetBSD, OpenBSD und DragonFlyBSD sind aber gering.

4.1. Wem gehört BSD?

BSD gehört weder einer einzelnen Person, noch gehört es einem Unternehmen. Entwickelt und zur Verfügung gestellt wird es von einer technisch interessierten und engagierten Gemeinschaft, die über die ganze Welt verteilt ist. Einige BSD-Komponenten sind eigenständige Open Source-Projekte mit eigenen Rechten, die getrennt verwaltet und gewartet werden.

4.2. Wie erfolgt die Weiterentwicklung von BSD?

BSD-Kernel werden nach dem Open Source-Modell weiterentwickelt. Jedes Projekt unterhält einen öffentlich zugänglichen Quellcode-Baum, der mit dem Concurrent Versions System (CVS) verwaltet wird, und alle Quellen des Projekts, die Dokumentation und andere notwendige Dateien enthält. CVS erlaubt es Anwendern, jede gewünschte Version des Systems „auszuchecken“ (mit anderen Worten, eine Kopie des System zu erhalten).

Eine Vielzahl von Entwicklern trägt weltweit zur Verbesserung von BSD bei. Dabei werden drei Typen unterschieden:

Ein Contributor schreibt Code oder Dokumentationen. Ihm ist es nicht gestattet, seinen Beitrag direkt in den Quellbaum einfließen zu lassen. Bevor dieser Code in das System eingebracht wird, muss er von einem registrierten Entwickler, dem Committer geprüft werden.

Committer können Code in den Quellbaum einbringen, das heißt sie besitzen Schreibrechte für den Quellcode-Baum. Um ein Committer zu werden, muss man zuerst seine Fähigkeiten im gewünschten Gebiet unter Beweis stellen.

Es liegt im Ermessen des Committers, ob er die Allgemeinheit befragt, bevor er Änderungen am Quellbaum vornimmt. In der Regel wird ein erfahrener Committer korrekte Änderungen einfügen, ohne sich mit anderen abzustimmen. Ein Committer des Documentation Projects könnte etwa typografische oder grammatikalische Korrekturen ohne lange Diskussion durchführen. Auf der anderen Seite sollten Änderungen mit weitreichenden Konsequenzen vor dem Commit zur Begutachtung bereitgestellt werden. Im Extremfall kann ein Mitglied des Core Teams, das als Principal Architect fungiert, sogar die Entfernung der Änderung aus dem Quellcodebaum veranlassen. Dieser Vorgang wird als backing out bezeichnet. Alle Committer werden durch eine E-Mail über die erfolgte Änderung informiert. Es ist daher nicht möglich, heimlich eine Änderung durchzuführen.

Das Core Team. Sowohl FreeBSD als auch NetBSD besitzen ein Core Team zur Betreuung des jeweiligen Projekts. Da die Core Teams erst im Projektverlauf entstanden, ist ihre Rolle nicht genau definiert. Um ein Mitglied des Core Teams zu sein, muss man kein Entwickler sein, obwohl dies die Regel ist. Die Regeln der Core Teams unterscheiden sich von Projekt zu Projekt, generell gilt aber, das dessen Mitglieder mehr Einfluss auf die Richtung des Projekts haben als Nichtmitglieder.

Diese Konstellation unterscheidet sich von Linux in einigen Punkten:

Es sind stets mehrere Personen für das System verantwortlich. In der Praxis ist dieser Unterschied aber nicht gravierend, da zum einen der Principal Architect verlangen kann, dass Änderungen zurückgenommen werden, und zum anderen auch beim Linux-Projekt mehrere Personen das Recht haben, Änderungen vorzunehmen.

Es existiert ein zentraler Aufbewahrungsort (Repository), in dem die kompletten Betriebssystemquellen zu finden sind, einschließlich aller älteren Versionen.

BSD-Projekte pflegen das komplette „Betriebssystem“, nicht nur den Kernel. Dieser Unterschied ist aber marginal, da weder BSD noch Linux ohne Anwendungsprogramme sinnvoll einsetzbar sind. Die unter BSD eingesetzten Applikationen sind oft identisch mit denen von Linux.

Da beim BSD-Projekt nur ein CVS-Quellbaum gepflegt werden muss, ist die Entwicklung übersichtlicher, und es ist möglich, auf jede beliebige Version einer Datei zuzugreifen. CVS ermöglicht auch inkrementelle Updates: Das FreeBSD-Repository wird beispielsweise etwa 100 Mal pro Tag verändert. Viele dieser Änderungen betreffen aber nur einen relativen kleinen Bereich von FreeBSD.

4.3. BSD-Versionen

FreeBSD, NetBSD und OpenBSD stellen drei verschiedene „Ausgaben“ (Releases) zur Verfügung. Analog zu Linux erhalten diese Ausgaben eine Nummer, etwa 1.4.1 oder 3.5. Die Versionsnummer erhält zusätzlich ein Suffix, das den Verwendungszweck bezeichnet:

Die Entwicklerversion hat das Suffix CURRENT. FreeBSD weist diesem Suffix eine Nummer zu, z.B. FreeBSD 5.0-CURRENT. NetBSD verwendet ein etwas anderes Bezeichnungsschema und hängt als Suffix nur einen Buchstaben an die Versionsnummer an, der Änderungen an den internen Schnittstellen anzeigt, z.B. NetBSD 1.4.3G. OpenBSD weist der Entwicklerversion keine Nummer zu, sie heißt also einfach „OpenBSD-current“. Neue Entwicklungen werden zuerst in diesen Zweig eingefügt.

In regelmäßigen Intervallen, durchschnittlich zwei- bis viermal im Jahr, wird eine so genannte RELEASE-Version des Systems veröffentlicht, die dann beispielsweise als OpenBSD 2.6-RELEASE oder NetBSD 1.4-RELEASE bezeichnet wird. Diese sind sowohl auf CD-ROM als auch als freier Download von den FTP-Servern der Projekte erhältlich. Diese RELEASE-Versionen sind für Endbenutzer gedacht. NetBSD verwendet sogar eine dritte Ziffer, um gepatchte Releases zu kennzeichnen (etwa NetBSD 1.4.2).

Sobald Fehler in einer RELEASE-Version gefunden werden, werden diese beseitigt und in den CVS-Baum eingefügt. Beim FreeBSD-Projekt wird die daraus resultierende Version als STABLE bezeichnet, während sie bei NetBSD und OpenBSD weiterhin RELEASE heißt. Kleinere Änderungen, die sich nach einer Testphase im CURRENT-Zweig als stabil erweisen, können ebenfalls in die STABLE-Version einfließen.

Bei Linux werden hingegen zwei getrennte Code-Bäume gepflegt: Eine stabile Version und eine Entwicklerversion. Stabile Versionen haben an der zweiten Stelle eine gerade Ziffer (2.0, 2.2 oder 2.4). Entwicklerversionen haben an der zweiten Stelle eine ungerade Ziffer (2.1, 2.3 oder 2.5). In jedem Fall folgt der zweiten Ziffer noch eine dritte, welche die Version genauer bezeichnet. Zusätzlich fügt jeder Verkäufer einer Linux-Distribution selbst Programme und Werkzeuge hinzu. Daher ist auch der Name der Distribution nicht unwichtig, da dieser ebenfalls eine Versionsnummer enthält. So kann die vollständige Beschreibung beispielsweise so aussehen: „TurboLinux 6.0 mit Kernel 2.2.14“

4.4. Welche BSD-Versionen gibt es überhaupt?

Im Gegensatz zu den zahlreichen Linux-Distributionen gibt es nur vier große frei verfügbare BSDs. Jedes BSD-Projekt unterhält seinen eigenen Quellcode-Baum und seinen eigenen Kernel. In der Praxis scheinen die Unterschiede im Code der Anwenderprogramme aber geringer zu sein als bei Linux.

Es ist nicht einfach, die Ziele der einzelnen BSD-Projekte genau zu trennen, da die Unterschiede eher subtiler Natur sind:

FreeBSD will eine hohe Leistung erreichen, für den Benutzer einfach in der Bedienung sein, und wird von Internetanbietern bevorzugt eingesetzt. Es läuft auf einer Vielzahl von Plattformen, darunter i386™-Systeme („PCs“), Systeme mit einem AMD 64-Bit-Prozessor, UltraSPARC®-Systeme, Compaq Alpha-Systeme, sowie Systeme, die der Spezifikation NEC PC-98 entsprechen. Das FreeBSD-Projekt hat die mit Abstand größte Anwenderzahl unter den frei verfügbaren BSD-Systemen.

Bei NetBSD ist Portabilität das oberste Ziel: „Natürlich läuft NetBSD darauf“. NetBSD kann auf vielen verschiedenen Systemen, von Palmtops bis hin zu großen Servern, installiert werden, und wurde sogar schon im Raumfahrtprogramm der NASA eingesetzt. Besonders für alte Nicht-Intel®-Plattformen ist NetBSD die erste Wahl.

Bei OpenBSD stehen die Sicherheit und sauberer Code im Vordergrund. OpenBSD verbindet bei der Weiterentwicklung des Systems Open Source-Konzepte mit rigorosen code reviews. Dadurch entsteht ein sehr sicheres System, das OpenBSD für sicherheitsbewusste Unternehmen, Banken, Börsen und die US-Regierung zu ersten Wahl macht. Auch OpenBSD läuft, ähnlich wie NetBSD, auf vielen verschiedenen Plattformen.

Das Ziel von DragonFlyBSD ist eine hohe Leistung und Skalierbarkeit auf allen Systemen, vom Einzelplatzrechner bis hin zu riesigen Cluster-Systemen. DragonFlyBSD verfolgt dabei langfristig verschiedene technische Ziele, der Schwerpunkt der Entwicklung liegt aber auf der Bereitstellung einer SMP-fähigen Infrastruktur, die leicht zu verstehen, zu warten und weiterzuentwickeln ist.

Es gibt noch zwei weitere BSD UNIX® Systeme, die aber nicht Open Source sind: BSD/OS sowie Apples Mac OS® X:

BSD/OS war das älteste, von 4.4BSD abstammende Betriebssystem. Es war zwar nicht Open Source, Quellcode-Lizenzen konnten aber relativ günstig erworben werden. Es wies viele Gemeinsamkeiten mit FreeBSD auf. Zwei Jahre, nachdem BSDi von Wind River Systems übernommen worden war, wurde die Entwicklung von BSD/OS als eigenständiges Produkt eingestellt. Zwar wird BSD/OS von Wind River noch unterstützt, eine aktive Weiterentwicklung erfolgt allerdings nur noch für das Embedded-Betriebssystem VxWorks.

Bei Mac OS® X handelt es sich um die neueste Version des Betriebssystems der Mac®-Linie von Apple®. Darwin, der BSD-Kern des Betriebssystems ist als voll funktionsfähiges Open Source-Betriebssystem für x86- sowie PPC-Computer erhältlich. Die grafische Oberfläche Aqua/Quartz und andere proprietäre Anwendungen von Mac OS® X sind aber weiterhin closed-source Software. Einige Darwin-Entwickler sind auch FreeBSD-Committer, was auch für den umgekehrten Fall gilt.

4.5. Worin unterscheidet sich die BSD-Lizenz von der GNU Public License?

Linux steht unter der GNU General Public License (GPL), die entworfen wurde, um closed-source Software zu verhindern. Jede Software, die von einer Software abgeleitet wurde, die unter der GPL steht, muss wieder unter der GPL veröffentlicht werden. Auf Verlangen ist auch der Quellcode zur Verfügung zu stellen. Die BSD-Lizenz ist dagegen weniger restriktiv: Der Quellcode muss nicht zur Verfügung gestellt werden, es können also auch Binärdateien verbreitet werden. Dieser Umstand ist besonders für Anwendungen im Embedded-Bereich interessant.

4.6. Was sollte ich sonst noch wissen?

Da für BSD weniger Anwendungsprogramme verfügbar waren als für Linux, wurde ein Softwarepaket entwickelt, das die Ausführung von Linuxprogrammen unter BSD ermöglicht. Dieses Paket enthält zwei Dinge: Kernelmodifikationen zur korrekten Ausführung von Linux-Systemaufrufen sowie Linuxkompatibilitätsdateien, beispielsweise die C-Bibliothek von Linux. Unterschiede in der Ausführungsgeschwindigkeit von Linuxanwendungen auf einem Linuxrechner und einem vergleichbaren mit BSD ausgestatteten Rechner sind in der Praxis so gut wie nicht feststellbar.

Die „Alles-aus-einer-Hand“-Natur von BSD hat den Vorteil, dass Upgrades im Vergleich zu Linux häufig leichter durchzuführen sind. BSD aktualisiert Bibliotheken, indem es Kompatibilitätsmodule für ältere Versionen der Bibliotheken bereitstellt. Daher ist es möglich, auch mehrere Jahre alte Binärdateien ohne Probleme auszuführen.

4.7. Was soll ich nun benutzen, BSD oder Linux?

Was heißt das nun alles für die Praxis? Wer sollte BSD, wer Linux benutzen?

Diese Frage ist nicht einfach zu beantworten. Trotzdem folgen nun einige Empfehlungen:

„Wenn es nicht kaputt ist, fass' es nicht an!“: Wenn Sie schon ein frei verfügbares Betriebssystem verwenden und damit glücklich sind, gibt es eigentlich keinen vernünftigen Grund für einen Wechsel.

BSD-Systeme, inbesondere FreeBSD, können eine weitaus bessere Leistung als Linux-Systeme aufweisen. Diese Aussage ist aber nicht allgemein gültig. In den meisten Fällen sind die Leistungsunterschiede aber gering oder gar nicht festzustellen. In bestimmten Fällen kann auch Linux eine bessere Leistung aufweisen.

In der Regel haben BSD-Systeme den Ruf, zuverlässiger zu sein. Diese Aussage beruht auf der reiferen Codebasis.

Die BSD-Projekte haben den Ruf, über qualitativ und quantitativ bessere Dokumentation zu verfügen. Die verschiedenen Dokumentationsprojekte haben das Ziel, eine ständig aktualisierte und in zahlreiche Sprachen übersetzte Dokumentation zu erstellen, die alle Aspekte des System umfasst.

Die BSD-Lizenz kann attraktiver sein als die GPL.

BSD-Systeme können die meisten Linuxprogramme ausführen, während Linux keine BSD-Programme ausführen kann. Viele BSD-Systeme können sogar Programme von anderen UNIX® ähnlichen Systemen ausführen. Daraus könnte man ableiten, dass die Migration auf ein BSD-System einfacher ist, als es bei Linux der Fall wäre.

4.8. Wo gibt es Support, Serviceleistungen und Schulungen für BSD?

BSDi / FreeBSD Mall, Inc. bieten seit fast 10 Jahren Support-Verträge für FreeBSD an.

Darüber hinaus finden sich auf den folgenden Seiten der einzelnen Projekte Firmen, die Supportleistungen anbieten: FreeBSD, NetBSD, und OpenBSD.