# Berkeley Software Distribution

Die Berkeley Software Distribution (BSD) ist eine Variante des Betriebssystems Unix, die an der Universität von Kalifornien in Berkeley ab 1977 entstanden ist. BSD basiert auf AT&Ts Unix Sixth Edition (V6) und Seventh Edition (V7) von 1975 (V6) und 1979 (V7).
AT&T hatte damals noch das Telekommunikationsmonopol in den USA inne und durfte keine Geschäfte im Computerbereich tätigen, sodass die Firma UNIX zum Selbstkostenpreis der Datenträger an Universitäten verteilte. Damit verbunden war die Erlaubnis, den Quelltext einzusehen und zu modifizieren. Sie blieb auch später noch zu Zwecken der Lehre erhalten. Nachdem in den 1990er Jahren AT&T UNIX-Lizenzzahlungen eingefordert hatte, wurde der Quelltext umgeschrieben, sodass es keine einzige Zeile originalen UNIX-Quelltext von AT&T mehr in aktuellen BSDs gibt.
Die ursprüngliche durch die Universität erstellte BSD ist praktisch nicht mehr gebräuchlich. Der Begriff BSD bezeichnet heute vielmehr eine ganze Klasse von Betriebssystemen, die von der Berkeley Software Distribution abgeleitet sind. BSD ist neben System V eine der großen Hauptlinien der Unix-Entwicklung.
Heute ist macOS von Apple das kommerziell erfolgreichste BSD und Unix für Personal Computer – eine Weiterentwicklung von NeXTs OPENSTEP. Es setzt auf dem Basisbetriebssystem Darwin auf, das unter anderem auf Grundlage von FreeBSD entstand. Darwin umfasst den Hybridkernel XNU, dessen Entwicklung auf dem OSF Mach-Kernel und dem Kernel von FreeBSD fundiert. Vielfältige Betriebsmittel für die Befehlszeile ergänzen Darwin bei macOS, ein Großteil davon stammt wiederum von FreeBSD, OpenBSD und NetBSD. Die Gründer der Unternehmen Apple und NeXT waren Studenten in Berkeley.

## Die BSD-Lizenz

Der Quelltext der Distribution wurde von Berkeley unter der BSD-Lizenz freigegeben, bei der es sich, in der heute modifizierten Form, um eine freie Lizenz handelt, welche auch für andere Programmpakete verwendet wird. Im Gegensatz zur GNU General Public License erlaubt es die BSD-Lizenz, unter Beachtung einiger Regeln den Quelltext zur Entwicklung eigener, proprietärer Programme zu verwenden.

## Neuerungen von Berkeley

BSD hatte großen Einfluss auf die Unix-Entwicklung. Es wurden Änderungen am Kernel vorgenommen und das System wurde auch sonst wesentlich erweitert. Viele dieser Neuerungen wurden später entweder direkt oder in ähnlicher Form auch in die konkurrierende System-V-Linie übernommen.
Die wichtigsten Neuerungen waren:
* Das Fast File System: ein schnelleres Dateisystem mit langen Dateinamen (die Edition 7 erlaubte nur 14 Zeichen)
* Die Internetprotokoll-Netzwerkimplementierung
* Die Socket-Schnittstelle: eine allgemeine Netzwerk-Programmierschnittstelle, die auf anderen Systemen übernommen wurde
* Die virtuelle Speicherverwaltung unter Unix wurde in Berkeley realisiert.
* Neue Kommandos: die C-Shell csh, der Editor vi sowie unter anderem rsh, rexec und rcp
* Neue Signale (bisher 15): die Berkeley-Jobkontrolle ermöglichte SIGSTOP und SIGCONT.
* Neue Daemons wie z. B. timed und sendmail

## Entwicklungsgeschichte

Im Folgenden wird die Geschichte der Berkeley Software Distribution vom Erwerb einer Kopie von Unix aus den Bell Laboratories durch die UCB bis zur Version 4.4-Lite2 beschrieben.

### Die Anfänge

Die Universität Berkeley erhielt 1974 von AT&T die 4er-Edition des noch neuen Betriebssystems Unix. Dieses war gerade in C umgeschrieben worden, ein C-Entwicklungssystem war Teil des Systems. Sofort wurde mit der Erweiterung des Systems begonnen, das auf einer PDP-11-Maschine der Firma Digital Equipment Corporation (DEC) lief. Die Arbeiten beschleunigten sich, als 1976 Ken Thompson, ein maßgeblicher Unix-Entwickler, eine Gastprofessur in Berkeley antrat. Inzwischen waren auch die Editionen 5 und 6 erschienen.
Die Erweiterungen und Änderungen fasste der damalige Student Bill Joy 1977 erstmals zusammen und stellte sie externen Interessenten auf einem Magnetband zur Verfügung – die erste Berkeley-Software-Distribution. 1978 waren bereits so viele neue Teile hinzugekommen, dass die zweite Berkeley Software Distribution (2BSD) zusammengestellt wurde. Diese enthielt bereits die erste Version des Editors vi.

### VAX-Computer und DARPA-Einfluss

Inzwischen hatte DEC eine neue Prozessorlinie namens VAX herausgebracht, deren erster Vertreter die VAX-11/780 war. VAX hieß eigentlich Virtual Address Extension und war zunächst als Erweiterung für die PDP-11-Linie gedacht. Die VAX wurde aber eine eigene Prozessorlinie, und DEC plante, den Verkauf von PDP-Maschinen zugunsten der VAX-Linie einzustellen. AT&T hatte zwar bereits eine Portierung von Unix V7 auf den VAX-Prozessor fertiggestellt (Version 32/V), diese unterstützte jedoch keine virtuelle Speicherverwaltung. Berkeley portierte 2BSD auf die VAX-11/780 und implementierte eine virtuelle Speicherverwaltung. Für VAX-Maschinen erschien 1979 3BSD und dann 1980 4BSD. Die Entwicklung von BSD-Versionen für PDP-11s wurde unabhängig davon mit 2BSD weitergeführt, da der Adressraum der PDPs von nur 64 KByte zu klein für die neuen Versionen war.
1980 wurde ein Vertrag mit der Forschungsabteilung des amerikanischen Verteidigungsministeriums DARPA geschlossen. 3BSD und 4BSD sollten die Grundlage für die DARPA-Entwicklungen, insbesondere im Bereich der Vernetzung, werden. Dies führte zur Integration der Internet-Netzprotokolle (TCP/IP) in die BSD-Varianten.
Gleichzeitig beschloss AT&T, ihre Edition V7 zum System III und dann zum System V weiterzuentwickeln und kommerziell zu vermarkten. Die neue Berkeley-Version hieß daher nicht 5BSD, sondern 4.1BSD, um Verwechslungen auszuschließen. Mit 4.1BSD und den internen Versionen 4.1a, 4.1b und 4.1c wurde die Leistung des Systems verbessert, erste TCP/IP-Protokolle eingefügt und Netzwerkwerkzeuge (rsh, rcp) entwickelt. Dies und viele von Berkeley erstellte Hilfsprogramme veranlassten Sun, DEC und andere Hersteller von Hardware, ihre Versionen von UNIX auf BSD aufzubauen anstatt auf dem offiziellen System V von AT&T. So etablierte sich BSD im akademischen und militärischen Bereich. AT&T übernahm diese Entwicklungen später in ihr System-V-Produkt. Da die Berkeley-Distribution immer noch frühen Quelltext von AT&T enthielt, verlangte AT&T den Erwerb einer teuren Lizenz von jedem, der Code aus Berkeley verwendete.

### Die kommerzielle Ära
#### Aufstieg

Computerhersteller übernahmen die Berkeley Software Distribution und passten sie auf ihre Maschinen an. 1982 wechselte Bill Joy zur neu gegründeten Firma Sun Microsystems, die im selben Jahr die erste Version ihres auf BSD basierenden Betriebssystems SunOS herausbrachte. SunOS wurde im Lauf seiner Entwicklungsgeschichte um viele Funktionen des ohnehin lizenzierten System V erweitert, blieb aber lange Zeit seinen BSD-Wurzeln treu.
1983 brachte DEC für PDP-11 Ultrix-11 und dann für VAX-Computer Ultrix-32 heraus. Ultrix basierte ebenfalls auf BSD. Es wurde später auch auf MIPS-Prozessoren portiert, die DEC in seiner Workstation-Linie verwendete.
Auch andere Unix-Hersteller verwendeten Teile der BSD. So setzte NeXT ab 1988 für ihr Betriebssystem NeXTStep ein BSD-System, allerdings mit einem Mach-Mikrokernel, ein. System V übernahm nach und nach Code von BSD, es bildete die Grundlage dieser Unix-Systeme.

#### Fall

DEC brachte um 1990 seinen Alpha-Mikroprozessor heraus, der die VAX- und MIPS-Produkte ablösen sollte. Gleichzeitig wurde die Weiterentwicklung von Ultrix eingestellt, da auf Alpha das neue OSF/1 – ein Unix-Klon – angeboten wurde.
Sun bildete 1988 mit Unix International eine Allianz mit AT&T und portierte sein SunOS ebenfalls auf System V mit BSD-Erweiterungen. 1992 erschien SunOS5 (auch Solaris 2), das nicht mehr ein direkter Abkömmling von BSD war.
Damit war der letzte große Unix-Hersteller auf System V umgeschwenkt, alle Unix-Systeme verwendeten jedoch immer noch große Teile der BSD, darunter die von BSD eingeführten Kommandos und die TCP/IP-Netzwerkimplementierung.

### Weiterentwicklungen bei Berkeley

Berkeley setzte seine Tradition fort und entwickelte die Distribution weiter. 1983 erschien 4.2BSD und 1986 4.3BSD. Es wurde klar, dass die VAX-Prozessoren durch andere Systeme abgelöst werden mussten, mit 4.3BSD-Tahoe (1988) wurde der Kernel in maschinenabhängige und portable Teile getrennt. 1990 erschien mit 4.3BSD-Reno eine Version, die unter anderem den Mach-Mikrokernel unterstützte.
4.3BSD wurde sogar auf die PDP-11-Maschinen zurückportiert und 1992 als 2.11BSD veröffentlicht. Der 250 KByte große Kernel wurde dabei mit Overlay-Techniken auf den nur 64 KByte großen Adressraum der PDP abgebildet.

### BSD und AT&Ts Unix-Quelltext

Ende der 1980er Jahre hatte Berkeley so viele Erweiterungen eingebaut, dass nahezu der gesamte Unix-Quelltext von AT&T durch eigene Versionen ersetzt war. Hersteller von auf BSD basierenden Unix-Versionen mussten trotzdem wegen der übrigen Teile eine teure System-V-Lizenz von AT&T erwerben. Da unter anderem die gesamte Netzwerkimplementierung von Berkeley stammte, hatten auch andere Hersteller Interesse an den Berkeley-Entwicklungen, jedoch ohne eine AT&T-Lizenz erwerben zu müssen. 1989 gab die Universität deshalb die Networking Release/1 heraus, die alle von Berkeley identifizierten Dateien ohne Code von AT&T umfasste. Diese Version stellte jedoch kein vollständiges Betriebssystem mehr dar.
1991 erschien dann die Networking Release/2. Bill Jolitz ergänzte 1992 diese Release um nur sechs Dateien und veröffentlichte einen Patch, so dass ein vollständiges, fortgeschrittenes Betriebssystem für Intel-80386-Prozessoren namens 386BSD entstand.
Ebenfalls 1992 begann eine von der Universität Berkeley gegründete Firma namens Berkeley Software Design Inc. (BSDi) mit der Vermarktung der auch zum Betriebssystem erweiterten Networking Release/2. Sie vermarkteten ihr System unter dem Namen „Unix“ inklusive Quelltext für den niedrigeren Preis von 995 Dollar. Die Unix System Laboratories (USL), ein Zweig von AT&T, verklagten BSDi und die Universität daraufhin auf Einstellung des Verkaufs wegen Markenverletzung und teilweiser Verwendung ihres Quelltextes. Eine einstweilige Verfügung wurde jedoch abgelehnt.
Im Laufe dieses Rechtsstreits stellte sich heraus, dass AT&T Quelltext von Berkeley übernommen hatte (was wegen der BSD-Lizenz legal war), dabei jedoch die Urheberschaft Berkeleys aus dem Quelltext und der Dokumentation entfernt hatte (was in der BSD-Lizenz untersagt ist). Der Rechtsstreit endete 1994 damit, dass AT&T in einigen seiner Dateien die Urheberschaft von Berkeley wieder eintragen musste. Berkeley musste nur drei der über 18.000 Dateien der Networking Release/2 entfernen und einige kleine Änderungen durchführen. Die Release war damit frei von Unix-Quelltext.
Im selben Jahr gab Berkeley dann die Version 4.4BSDLite als Nachfolger der Networking Release/2 heraus. 1995 war dann die Version 4.4BSDLite2 die letzte Version der Berkeley Software Distribution. 4.4BSDLite und Lite2 wurden zusammen mit 386BSD zur Grundlage von NetBSD, FreeBSD und kurz darauf OpenBSD.
Die BSDi entwickelte und vertrieb ihr System weiter unter dem Namen BSD/OS. Im Jahre 2001 wurde BSDi von der kalifornischen Firma Wind River Systems aufgekauft.

### Versionsgeschichte

| Version | Veröffentlichung | Anmerkungen |
| BSD | 1977 | Erste BSD-UNIX-Version, entwickelt durch Bill Joy Unterstützung für PDP-11 Auszug (Programme): Pascal, ex |
| 2BSD | 1978 | Weiterentwicklung (PDP-11) Auszug (Programme): vi |
| 3BSD | 1979 | Portierung von 2BSD auf VAX Erste virtuelle Speicherverwaltung |
| 4BSD | 1980 | Weiterentwicklung (VAX) Auszug (Programme): mail, Job-Control |
| 2.8BSD | 1981 | Weiterentwicklung (PDP-11) |
| 4.1BSD | 1981 | Weiterentwicklung (VAX) Diverse Leistungsverbesserungen |
| 4.1BSDx | 1982 | Interne Versionen: BSD4.1a, BSD4.1b, BSD4.1c Netzwerk-Weiterentwicklung Diverse Leistungsverbesserungen |
| 2.9BSD | 1983 | Weiterentwicklung (PDP-11) |
| 4.2BSD | 1983 | Neues Dateisystem, TCP/IP |
| 4.3BSD | 1986 | Robuste Netzwerkimplementierung Diverse Leistungsverbesserungen |
| 4.3BSD-Tahoe | 1988 | Separation der maschinenabhängigen und portablen Kernelteile |
| 2.10.1BSD | 1989 | Letzte Version und Weiterentwicklung der ursprünglichen PDP-11-Linie |
| 4.3BSD-Net/1 | 1989 | Networking Release/1 |
| 4.3BSD-Reno | 1990 | Mach-Unterstützung Portierung von Suns Network File System (NFS) |
| 4.3BSD-Net/2 | 1991 | Networking Release/2 (auch 4.3BSD-Lite) |
| 2.11BSD | 1992 | Rückportierung von 4.3BSD auf PDP-11 |
| BSD/386 | 1992 | Kommerzielle Version von Berkeley Software Design, Inc. mit Unterstützung für Intel-i386-Prozessoren |
| 386BSD | 1992 | Portierung von 4.3BSD-Lite auf Intel-i386-Prozessoren durch Bill Jolitz |
| 4.4BSD-Lite | 1994 | Erste vollständig von AT&T-Quelltext freie Version (auch 4.4BSD-Encumbered) |
| BSD/OS | 1994 | Weiterentwicklung (386BSD) Zusätzliche Unterstützung von Sun-SPARC- und PowerPC-Prozessoren |
| 4.4BSD-Lite2 | 1995 | Letzte Version der Berkeley Software Distribution |

## Die Projekte NetBSD, FreeBSD und OpenBSD

Das freie 386BSD (1992) von Bill Jolitz zog Entwickler an, zumal PCs mit 80386-Prozessor sehr preiswert wurden. Jolitz war fest angestellt und hatte nicht immer genügend Zeit für die Fehlerbehebung und Einarbeitung von Verbesserungsvorschlägen. Dies veranlasste einige Entwickler im Jahre 1993, zwei Nachfolgeprojekte, NetBSD und FreeBSD, fast gleichzeitig ins Leben zu rufen.
Nachdem 1994 der Streit mit AT&T beigelegt war, brachten beide Projekte neue Versionen auf Grundlage von 4.4BSD-Lite heraus, die keinen AT&T-Quelltext mehr enthielten: NetBSD 1.0 (1994) und FreeBSD 2.0 (Anfang 1995).
1995 zerstritt sich einer der Gründer des NetBSD-Projektes, Theo de Raadt, mit den anderen Entwicklern und spaltete ein eigenes Projekt namens OpenBSD ab. Seit 2003 gibt es mit DragonFly BSD, einer Abspaltung von FreeBSD, ein weiteres BSD-Projekt. Auch das Betriebssystem Mac OS X und dessen Open-Source-Pendant Darwin von Apple basieren in Teilen (welche der „normale“, GUI-orientierte Anwender allerdings kaum bemerkt) auf BSD, speziell FreeBSD. Durch die Fortführung und Weiterentwicklung von NeXTStep als Mac OS X erfuhr BSD erneut einen technischen Aufschwung und eine weite Verbreitung.

### Gemeinsamkeiten und Unterschiede der BSDs

Neuentwicklungen und insbesondere die zahlreichen Gerätetreiber eines Projekts werden von den anderen meist problemlos übernommen. Alle Projekte haben die Entwicklung eines freien Systems zum Ziel, ins eigentliche System soll daher nur mit der BSD-Lizenz kompatibler Code einfließen. Die Details der Interpretation des Begriffs freie Software unterscheiden sich jedoch geringfügig.
NetBSD möchte eine möglichst große Zahl verschiedener Hardwarearchitekturen und Prozessoren unterstützen. Of course it runs NetBSD ist der Slogan des Projekts. Ein besonderes Augenmerk liegt auf der Durchsetzung eines systemweiten, sauberen Designs und einer klaren Struktur. Dazu gehört die kontinuierliche Schaffung und Verbesserung maschinenunabhängiger Schnittstellen, etwa für Gerätetreiber, welche die sprichwörtliche Portabilität von NetBSD überhaupt erst ermöglichen.
Aufgrund seiner Öffentlichkeitsarbeit zählt FreeBSD zu den am weitesten bekannten BSD-Varianten. FreeBSD konzentrierte sich anfangs auf PC-Hardware mit Intels 80386-Prozessor. Eine einfache Installation ist ein Ziel des Projekts, so dass auch Nichtfachleuten die Verwendung dieses Systems ermöglicht wird. Schon früh veröffentlichte das Projekt daher Installations-CDs. Neben Intel- und AMD-Prozessoren werden auch andere Prozessoren wie Sun SPARC und Alpha unterstützt.
OpenBSD verfolgt als eines der Hauptziele die Entwicklung des sichersten freien Systems. Dazu gehört zum einen proaktive Sicherheit, das heißt über Code-Audits sollen so weit wie möglich Fehler entdeckt und im Voraus eliminiert werden. Dies bedeutet aber bei weitem nicht, dass bei den anderen BSD-Varianten die Sicherheit vernachlässigt würde. OpenBSD ist führend in der Implementierung von sicheren, verschlüsselten Übertragungsverfahren. IPsec-Unterstützung gehört ebenso dazu wie eine offene Implementierung der Secure Shell namens OpenSSH.

#### Weitere BSD-Varianten

* GhostBSD
* MidnightBSD
* PicoBSD
* Gentoo
* OPNsense
* FreeNAS

#### BSD-Derivate

* Debian GNU/kFreeBSD, Portierung des Debian GNU-Betriebssystems auf den FreeBSD-Kernel
* Debian GNU/NetBSD, Portierung des Debian GNU-Betriebssystems auf den NetBSD-Kernel
* Darwin, Basissystem mit Hybridkernel aus dem Betriebssystemprojekt Rhapsody; Basis von macOS, iOS, tvOS, watchOS und audioOS
* Orbis OS, eine bedeutende Verbreitung erreichte BSD auch als Betriebssystem der Sony PlayStation 4

#### Ehemalige BSD-Varianten oder -Derivate

* UbuntuBSD, Portierung des Ubuntu-Betriebssystems auf den FreeBSD-Kernel; wird nicht mehr weiterentwickelt;
* TrueOS (PC-BSD)
* DesktopBSD
* MirOS BSD