Berkeley Software Distribution: FreeBSD, NetBSD, OpenBSD  

Patrick Hausen 
 

Ich möchte Ihnen die "Alternative zu Linux", so wird es manchmal genannt, die freien BSD-Varianten vorstellen. Hintergrund ist, daß wir im letzten Jahr und dieses Jahr eine regelrechte Linux-Hysterie im Markt haben. Auf der CEBIT dieses Jahr konnte man sich vor lauter Pinguinen nicht mehr retten. Und jedes Software-Unternehmen, das irgendwie eine Warenwirtschaft oder eine Zahnärtzelösung oder sonstwas hat, kündigte groß an: 'Jawohl, ja, wir machen das jetzt auch für Linux. Das ist ganz, ganz toll. Und dann werden wir ganz, ganz reich, genauso wie wir mit dem Internet alle ganz schnell ganz, ganz reich werden.' Und der Witz dabei ist, was für Unix Die-hards, so wie ich zum Beispiel einer bin, die seit 10 Jahren oder länger Unix machen, ein bißchen befremdlich ist: Das ganze ist eigentlich überhaupt nichts Neues. Wir machen das seit Jahren. Es gibt die Programme von der Free Software Foundation, GCC, Emacs. Es gibt Perl. Jeder Unix-Administrator in jeder Uni dieser Welt setzt seit Jahren, länger als Linux überhaupt existiert, frei verfügbare Software auf seinen Unix-Maschinen ein.  

Es ging letztendlich bei Unix um die freie Austauschbarkeit von Source Code und um das Implementieren von Lösungen auf Source-Code-Basis. Denn wenn man mal ein bißchen zurückdenkt in die Zeit, bevor überall Intel-PCs standen, dann gilt natürlich, daß Unix-Maschinen untereinander nicht binärkompatible sind. D.h., wenn ich eine Anwendung von einer Maschine auf die andere tragen will, dann muß ich diese Anwendung portieren, d.h. ich muß den Source Code nehmen und durch meinen C-Compiler jagen. Und Source-Code-Kompatibilität war eben das Konzept, das Unix auch vorangebracht und am Leben erhalten hat, allen Anstrengungen internationaler Software-Konzerne zum Trotz, das ganze irgendwie zu Fall zu bringen. Ich bin mit etwas leichterem Gepäck unterwegs, weil man mir versichert hat, daß es hier Internet gibt, d.h. die Information, die ich Ihnen darstellen möchte im Vortrag über BSD, die hole ich mir jetzt einfach live aus dem Netz, denn da steht sie. Und wenn Sie Interesse haben sollten, dann können Sie sich das hinterher genauso wieder angucken.  

Ein Paar Worte zur Geschichte. Was ist BSD, für die, die noch nicht so sehr mit Unix im Kontakt sind? Das erste Unix von AT&T gab es kostenlos, weil AT&T sich damals per Gesetz in Betriebssystemen und Software-Dingen nicht engagieren durfte. Das Stichwort hier ist Antitrust, Antimonopolregelung, d.h., man hat gesagt: 'O.K, Leute, ihr könnt das Unix geschenkt haben. Es gibt keine Garantie. Wir machen keine Werbung. Jeder, der uns fragt, bekommt von mir aus kostenlos ein Unix geschenkt.' Und das haben sehr, sehr viele Universitäten über die ganze Welt gestreut genutzt, um auf Unix Forschungsprojekte aufzuziehen. Die wohl wichtigsten Anstöße hierfür kamen hier von der Universität Berkeley in Kalifornien. Dort hat man 1979 angefangen, sich ernsthafter mit dem Unix von AT&T auseinanderzusetzen, und sehr schnell, sehr viele wichtige Erweiterungen reinprogrammiert, beispielsweise, gesponsert vom Verteidigungsministerium, vom ARPA-Projekt, das wir heute alle als Internet kennengelernt haben, die Implementation dieser neuen Methode zwischen Rechnern zu kommunizieren. Eben dieses IP-Protokoll hat man auf der Basis von Berkeley-Unix gemacht und hat so auf der Basis von diesem Betriebssystem für die ersten weit und frei verfügbaren Implementationen von TCP/IP gesorgt.  

Alle diese Berkeley Software, die da entstanden ist, BSD, Berkeley Software Distribution, war von Anfang an Open Source, war kostenlos erhältlich und hat ein Copyright, das sagt: 'Credit where credit is due'. D.h., ich habe die Pflicht, wenn ich das in einem Produkt benutze, das ich selber weiterentwickle, zu sagen: 'Teile von der Software, die ich Euch da verkaufe, stammen von der Uni Berkeley.' Und ich darf natürlich nicht behaupten, ich habe das ganze selber geschrieben, d.h., ich darf nicht das Copyright rausnehmen und mein eigenes Copyright reinpacken. Und ich darf nicht explizit mit der Uni werben, aber ansonsten ist das völlig frei. Ich kann das entweder nehmen und meine eigenen Änderungen, die ich dazufüge, wieder herschenken, wie das bei der GPL ist, oder ich kann das ganze in eine Box packen, z.B. in einen kleinen Printer-Server oder so etwas und das ganze als kommerzielles Produkt verkaufen.  

Der Ansatz ist, daß man über dieses völlig freie Zurverfügungstellen Dinge bereitstellt, die, ich sage mal, die Menschheit braucht. Und zwar common Infrastructure. Bei TCP/IP-Implementierungen ist sehr, sehr wichtig, daß sie halbwegs funktionieren und sich alle halbwegs an die Standards halten. Und indem ich jetzt eben auch kommerziellen Unternehmen die Sourcen zur Verfügung stelle von einer sehr ausgereiften, sehr alten, sehr stabilen Implementierung, sorge ich dafür, daß das mit dem IP über Plattformgrenzen hinweg, also auch mit Windows, mit OS/2, mit den ganzen anderen Rechnerplattformen, die wir haben, sehr gut funktioniert. Der OS/2 TCP/IP-Stack z.B. ist 100% BSD. Wenn Sie sich das Net-Stat-Kommando auf einem OS/2-Rechner angucken, dann stellen sie fest, daß da Ausgabe von internen Strukturen möglich ist, wie sie nur im BSD TCP/IP-Stack existieren.  

Um die ganze Sache war es sehr lange sehr still. Es existierte einfach vor sich hin, genauso wie GCC, Emacs und andere Sachen auch, und keiner hat sich groß darum gekümmert, bevor das mit dem Linux richtig losging. Die Universität Berkeley hat etwa 1992 eine final Release vorbereitet. Man sagte einfach: 'Es gibt in dem Betriebssystembereich nicht mehr soviel zu forschen. Wir lassen das jetzt '93, '94 auslaufen. Wir veröffentlichen das, was wir im Moment haben, noch einmal komplett unter dem Namen Networking Release 2 und machen uns noch mal daran, einen endgültigen Abschluß von diesem Projekt zu machen und das dann zu releasen.' Und diesen Net 2 Release hat jemand namens Bill Jolitz genommen und hat gesagt: ' Hey, das könnte ich doch nehmen und auf dem 386er, 486er, auf einer Intel CPU zum Laufen bringen. Das hat er getan, und daraus entstand das, was heute die freien Software-Projekte sind.  

Es gibt im Moment drei von diesen BSD-Projekten. Ich hoffe auch selber, daß das nicht noch mehr werden. Es gab ganz am Anfang bei der Weiterentwicklung von diesem 386-BSD einen Split aus persönlichen Gründen oder auch aus Motiven, was die Weiterentwicklung angeht. Das eine ist die sogenannte FreeBSD-Gruppe. Die FreeBSD-Gruppe, hat als Ziel, das beste mögliche, solide Unix-Server-Betriebssystem für Intel-CPUs oder ähnliche Architekturen zu machen. Es gibt inzwischen einen Alpha-Port im Beta-Stadium, der auf den CDs auch drauf ist und schon recht gut laufen soll, aber der Fokus war höchstmögliche Performance, höchstmögliche Stabilität auf dem Intel-Rechner. Die NetBSD-Gruppe, die ungefähr zur gleichen Zeit entstanden ist, hat als Ziel eine möglichst große Verbreitung auf möglichst viel Plattformen zu haben. Ich möchte hier jetzt nicht irgendwie gegen Linux argumentieren, aber Linux wird auf den Alpha portiert und sofort schreibt man zwei-, dreiseitige Artikel darüber, wenn die erste Alphaversion vom Alpha-Port von Linux läuft. Was glauben Sie, was die Betriebssystemsplattform ist, die auf den meisten verschiedenen Hardwareplattformen läuft, aus einem Source-Baum? Na, das ist NetBSD. Der Slogan des NetBSD-Projektes ist: 'Of course it runs NetBSD.' Es gibt mehr oder weniger nichts, was einen 32-Bit-Prozesser und eine Memory Management Unit hat, wo NetBSD nicht darauf läuft. Sie sehen hier die ganze Liste der unterstützten Plattformen am Bildschirm, und da läuft das drauf, ohne daß man das speziell irgendwie promotet. Es tut einfach. Ich meine, es ist Unix. Unix wurde entwickelt mit dem Ziel der größtmöglichen Hardwareportabilität. Natürlich läuft das auf einer breiten Hardwarebasis.  

Es gab im letzten, vorletzten Jahr noch mal ein Split zwischen einem Mitglied der NetBSD-Gruppe und dem Rest der Net-BSD Gruppe. Die konnten sich einfach nicht mehr einig werden, und er hat gesagt: 'Ich mache mein eigenes Projekt auf', und im Gegensatz zum GIMP läuft das bis jetzt recht erfolgreich, d.h., beide Projekte leben weiter nebeneinander her. Das Projekt nennt sich OpenBSD. Ich verzichte jetzt mal darauf, das auch noch ranzuholen. Die unterstützen Hardwarplattformen sind ganz ähnlich wie bei NetBSD, und der Schwerpunkt liegt hier bei der Security, d.h., es werden ganz intensiv Code Reviews gemacht und z.B. Buffer Overflows und solche Schwachstellen gesucht und eliminiert.  

Wie sieht das Entwicklungsmodel aus? Es gibt, genauso wie wir es bei den Apache- und bei den X-Free-Gruppen haben, ein Core-Team, d.h., es gibt ein zentrales Steuerungs-Board bei diesen drei BSD-Projekten. Es gibt für jedes Team mehrere Dutzend bis hundert Entwickler weltweit, die daran mitarbeiten. Änderungen werden an das Core-Team geschickt und von den Leuten im Core-Team in den Source-Baum integriert. Der Source-Baum liegt natürlich auch unter CVS-Kontrolle. Man kann lesend weltweit auf die ganzen Source-Bäume zugreifen. D.h., Sie können jederzeit sagen: 'Lieber CVS-Server, schenk mir doch mal bitte eine Free BSD Version current vom 15. Juli 1999 aus.' Und dann bekomme ich eben die Version von gestern auf meine lokale Festplatte. Und daher ist das wirklich richtig Open Source.  

Der Vorteil, gegenüber dem, was sich in der Linux-Welt abspielt, daß man einen Kernel hat und dann jemand eine Distribution mit sehr viel third-party-Software drumherum packt, ist der, daß ich ein zentrales Source-Code-Management habe für Kernel und Userland. Das bedeutet, sämtliche Utilities drum herum, egal ob das jetzt GNU-Utilities sind, ob das Perl ist oder GCC, TOP, alles, was in so eine Unix-Anlage einfach reingehört, UUCP und der Kernel, werden von einer Gruppe zentral gemanagt und ich kann das auf meiner Maschine zu Hause komplett neu bauen. D.h. ich habe einen Source-Baum unter user source und gebe in diesem Verzeichnis einfach nur make world ein. Und dann wird das gesamte FreeBSD-System komplett neu durchkompiliert, Kernel, Userland -- alles. Ein Update ziehe ich auch genau in dieser Form durch. Wenn ich einen laufenden Produktions-Server habe -- wir haben davon recht viele, als Internetprovider setzen wir hier schwerpunktmässig auf FreeBSD als Server-Plattform -- dann gehe ich auf einer Maschine hin und sage: 'OK, wir haben ein Security-Fix gekriegt.' Es gab irgendein Sicherheitsloch. Dann kompiliere ich das gesamte System auf diesem Server neu durch, exportiere das, was ich da erzeugt habe per NFS kurzzeitig an alle meine anderen Maschinen und ziehe mir da die Updates rein. Das heißt, ich habe wirklich ein zentral gemanagtes Source Repository für das gesamte System. Und das ist für die Stabilität sehr, sehr förderlich und auch für die Managebarkeit, wenn man größere Mengen von Servern betreut. Denn Updates kann ich nächtens vollautomatisch laufen lassen und muß nur dann, wenn ich sie tatsächlich installiere, dabei sitzen und gucken: 'Hat es geklappt? Hat's nicht geklappt? Funktioniert noch alles? Wunderbar.'  

Wer benutzt alles FreeBSD, beziehungsweise die anderen BSDs? Ich kann hier verstärkt für FreeBSD sprechen, weil das das ist, was wir hier benutzen auf Intel-Servern. Wer benutzt alles FreeBSD? Da finden sich dann so interessante Namen wie Yahoo oder Hotmail. Microsoft z.B. ist Besitzer von Hotmail. Die versuchen seit Jahren, seitdem sie das besitzen, diesen Service auf NT-Servern zu fahren. Der größte FTP-Server der Welt, 5.000 User gleichzeitig -- das war der letzte Stand, den ich habe, es kann sein, das es inzwischen 6.000 bis 7.000 sind, über ein Terra-Bit an täglichem Datendurchsatz -- ist eine FreeBSD-Maschine. An der Stabilität von dem Produkt kann man hier keinen Zweifel lassen. Womit ich jetzt nicht gesagt habe, da Linux nicht stabil wäre. Es ist nur so, daß, wenn man schon sehr viel länger Unix macht, als es Linux überhaupt gibt, dann waren die ersten Linux-Distributionen ein bißchen... naja, gewöhnungsbedürftig. Und dann kam ungefähr zur gleichen Zeit BSD raus, und da hab ich gesehen: 'O.K., das ist eigentlich genau so, wie das sein soll, und noch dazu kostenlos. Das nehmen wir. Das paßt.'  

Wie sieht das aus mit der Kompatibilität, mit den Applikationen? Es ist ja immer wichtig: Was kann ich darauf laufen lassen? Wir haben natürlich fertige Unterstützung von seiten der X-Free-Gruppe und von seiten der Apache-Gruppe. Wir haben Unterstützung von seiten des KDE-Projektes, d.h., die ganzen Desktops. Von sämtlichen Open Source-Projekten, die Sie aus der Linux-Welt kennen, können Sie erwarten, daß die auf dem FreeBSD, auf dem NetBSD, auf dem OpenBSD auch ohne Probleme laufen. Für diese Applikationen gibt es eine recht geniale Erfindung, in meinen Augen. Das nennt sich bei FreeBSD die Ports-Collection. Es ist ja klassisch so, daß man in der Unix-Welt, wenn man eine Applikation installiert -- das hatte ich ganz am Anfang erwähnt, wir haben Source-Code-Portabilität -- dann holt man sich als Administrator den Source Code, kompiliert den, testet, installiert. Jeder, der sehr lange Unix macht, ist das so gewöhnt. Dinge, wie der RedHat Package Manager oder dselect, die einfach fertige Binary-Packages auf mein System tun, wie das in der PC-Welt üblich ist, sind eine relativ junge Erfindung. Weil eben die Linux-Entwicklung auch sehr, sehr stark aus der PC-Welt, aus den PC- Anwendern heraus angetrieben wird und man das eben so einfach wie möglich haben will. Wenn Linus Torvalds das mit seiner World Domination wirklich schaffen will, dann muß man es halt den normalen Windows-Anwender so einfach oder auch kompliziert machen, wie das eben unter Windows auch ist. D.h., unter Linux wird Software sehr, sehr oft als Binary installiert, während für alte Unix-Admins der normale Weg die Source Code-Installation ist.  

Nun kann ich hingehen und sagen: 'O.K, ich automatisiere die Source Code-Installation.' Und genau das ist hier passiert. Das ganze nennt sich Ports Collection, besteht aus mittlerweile etwa 10 bis 15 MB an Baum, den man auf seine Platte spielt. Und der besteht aus Make Files. Make ist ein Projektverwaltungs-Tool, mit dem ich automatisiert Software übersetzen kann. Und ich brauche jetzt eben nicht auf meine FreeBSD-CD jede Menge Packages mit draufzupacken, sondern ich habe einfach diesen Ports-Baum, in dem für mehrere tausend Applikationen Make Files vorgesehen sind. Und wenn ich so einen Make File anstoße mit dem Befehl 'make', dann wird das Originalsoftware-Paket, beispielsweise der Apache, direkt vom passenden FTP-Server der Apache Group geholt, eventuell für FreeBSD angepaßt, irgendwelche Variablen gesetzt, durchkompiliert, installiert und in einer Package-Datenbank registriert, so daß ich das wieder sauber deinstallieren kann. Das gleiche mit KDE und mit allem anderen. Zusätzlich löst die Ports Collection Abhängigkeiten auf. Das heißt, wenn ich jetzt sage: 'Ich möchte Apache mit PHP3 mit MySQL Support haben', dann holt sich dieser Port vollautomatisch den Apache, das MySQL-Paket, MySQL-Client, PHP, patcht den Apache, installiert das, registriert das, und ich hab die ganzen Anwendungen sauber bei mir drauf. Und weil diese Ports Collection eine vollständig Source Code-getriebene Sache ist, kann ich mir auch hier wieder vollautomatisiert über das Internet jede Nacht in einem Chron-Job Updates holen. D.h., ich profitiere mit ein, zwei, drei Tagen Verspätung unmittelbar von Änderungen, wie sie z.B. die Apache Group macht: Es kommt ein neuer Apache raus, dann muß ich bei Debian oder RedHat, wenn ich binary Packages einsetzen will, immer ein bißchen warten, bis die Leute die Packages nachgezogen haben. Beim Port ist das normalerweise eine Sache, einfach einen entsprechenden Eintrag in dem Make File zu ändern, und sofort kommen die aktuellen Apache-Sourcen auf meine Maschine.  

Hier ist nur mal so ein Überblick über die Kategorien, nach denen die Ports sortiert sind. Man sieht da Datenbanken, Editoren, Shells, Webserver, alles. Wenn einem das nicht reicht -- mehrere Tausend freie Applikationen --, dann kann man noch auf die Idee kommen, kommerzielle Applikationen einzusetzen, z.B. unser Shopping-System. Die Firma, die das gemacht hat, was wir im Einsatz haben, die hat eine Version für NT, eine Version für Solaris und eine Version für Linux. Und da kommt die gute Nachricht: FreeBSD, NetBSD, OpenBSD auf der Intel-Plattform führen Linux-Binarys aus. d.h., ich kann einfach ein Linux-Programm nehmen, was nur als kommerzielle Binärversion vertrieben wird, kann das bei mir installieren. Ich schreibe zu Hause z.B. meine Korrespondenz mit der privaten Lizenz von WordPerfect 8 "für Linux" und das auf meiner FreeBSD-Workstation. Wie gesagt, wir setzten im Produktionsbetrieb diese Shopping-Lösung ein als Linux-Binary. Und es kam auch die Frage vom Hersteller: 'Sollen wir eine FreeBSD Version machen?' Und wir haben gesagt: 'Nein, laßt es. Die Linux-Version läuft so einwandfrei und so problemlos. Bündelt lieber eure Ressourcen, um die weiterzuentwickeln. Wenn es irgendwelche Probleme auf FreeBSD geben sollte, dann kriegt ihr von uns Feedback, aber eine extra BSD-Version rentiert sich eigentlich nicht.' So sieht das momentan aus. Wenn Sie sich das morgen live angucken wollen, um 16.00 Uhr machen wir einen kleinen Workshop. Wenn ich Ihr Interesse geweckt habe: www.freebsd.org. Es ist alles da. Es ist alles ausführlich dokumentiert und es ist ein zwanzig Jahre altes, ausgereiftes Unix, so wie es meines Erachtens sein soll.  
 

(Transkription: Katja Pratschke)