FreeBSD
# FreeBSD

FreeBSD ist ein freies und vollständiges unixoides Betriebssystem, das direkt von der Berkeley Software Distribution (BSD) abstammt. Mit einer Community aus fast 390 dauerhaft aktiven, offiziellen und Tausenden mitwirkenden Entwicklern gehört FreeBSD zu den größten Open-Source-Projekten. Obwohl der Fokus der Entwickler auf der Erstellung einer stabilen Software-Plattform für Server und Appliances liegt, wird es auch auf Desktop-Computern verwendet. FreeBSD kommt hauptsächlich bei Internetdienstanbietern wie zum Beispiel Yahoo, für Hochlastanwendungen wie Netflix, in Internet-Backbone-Systemen wie Hochleistungsroutern und Namensdiensten sowie als Webhosting-Plattform zum Einsatz. Dort belegt es regelmäßig die vordersten Plätze in der Liste der zuverlässigsten Systeme.

Mehrere Standards im Bereich der Rechnernetze, wie beispielsweise IPv6, wurden von FreeBSD zuerst umgesetzt und verbreiteten sich von dort aufgrund der freizügigen BSD-Lizenz auch auf andere Systeme, unter anderem nach OpenBSD und Linux. Außerdem ist FreeBSD teilweise die Grundlage für Darwin, die Open-Source-Plattform von Apple, auf der macOS basiert.

## Geschichte

Ursprünglich als inoffizielle Sammlung von Patches zur Fehlerbereinigung von 386BSD gedacht, gründeten Nate Williams, Rod Grimes und Jordan K. Hubbard 1993 ein eigenständiges Projekt, nachdem die Pflege des Patchkit-Mechanismus zu aufwändig wurde. Das ursprünglich als 386BSD-Interim bezeichnete Projekt musste eingestellt werden, als der Autor von 386BSD, Bill Jolitz, seine Mitarbeit an dem Projekt und auch 386BSD selbst aufgab. Als man einen neuen Namen suchte, wurde FreeBSD von Bill Greenman vorgeschlagen, einem Mitarbeiter des Unternehmens Walnut Creek CDROM, bei der die Software des Projekts auf Datenträgern und mittels FTP vertrieben wurde.

Genau wie bei dem kurz zuvor von anderen Autoren des Patchkits gegründeten NetBSD entschloss man sich gleich zu Beginn des Projekts im Juli 1993 dazu, die Software zentral mithilfe eines CVS-Archivs zu entwickeln. Man griff dafür bei den ersten Versionen von FreeBSD auf die Quellen von 4.3BSD-Lite (Net/2) zurück und auf 386BSD, welches die Berkeley Software Distribution auf die Intel-80386-Prozessorplattform portierte. Als jedoch die Unix System Laboratories begannen, die Anbieter von BSD-Software aufgrund von Lizenzverletzungen zu verklagen, änderte sich die Basis von FreeBSD auf 4.4BSD-Lite, welches die UC Berkeley 1994 veröffentlichte, nachdem der Rechtsstreit eingestellt worden war. Diese Version enthielt keinerlei Quellcode aus den Unix Laboratories mehr. Da hierdurch auch Teile des Betriebssystems fehlten, die zum Booten notwendig waren, dauerte es für die Herstellung einer funktionsfähigen Softwaredistribution, die als FreeBSD 2.0 veröffentlicht werden konnte, bis zum November 1994. Ältere Versionen dürfen aus rechtlichen Gründen nicht mehr vertrieben werden.

Seither wurde das Betriebssystem auf diverse andere Plattformen portiert und hat sowohl an Funktionen als auch an nativ unterstützter Software von Drittanbietern zugenommen. Aufgrund seiner Projektgröße und Verbreitung, ohne dabei öffentlich in Erscheinung getreten zu sein, wird FreeBSD auch inoffiziell als unbekannter Riese unter den freien Betriebssystemen bezeichnet. Neben diversen Derivaten haben sich aus dem Projekt heraus mehrere Organisationen gegründet, die sich die Förderung von FreeBSD und der BSD-Familie zum Ziel gesetzt haben. Hierzu gehören z. B. die FreeBSD Foundation und die BSD Certification Group.

## Eigenschaften

Das vollständige System umfasst folgende Komponenten:

* Kernel: implementiert die APIs und Datenstrukturen des Betriebssystems, sowie die Gerätetreiber
* Userland: alle wichtigen Programme, vom Texteditor bis zum Compiler oder auch Server-Anwendungen (Mailserver etc.)
* Ports: die nach FreeBSD portierten Anwendungen anderer Hersteller

FreeBSD ist als unixartiges System weitgehend POSIX-konform. Es unterstützt alle grundlegenden Funktionen des POSIX.1-Standards, jedoch nicht alle Erweiterungen des X/Open System Interfaces. Aus diesem Grund darf es auch nicht den rechtlich geschützten Namen UNIX tragen. An einer Herstellung der vollständigen Unterstützung der Schnittstellen von C99, POSIX und des XSI wird aber gearbeitet. Neben der x86-, AMD64- und ehemals in Japan verbreiteten PC-98-Architektur werden eine Reihe weiterer Prozessortypen unterstützt. Dazu gehören SPARC und PowerPC sowie die ARM- und experimentell auch die MIPS-Architekturen für eingebettete Systeme. Da FreeBSD eine eigene Binärschnittstelle (ABI) anbietet, ist die Installation proprietärer Software problemlos möglich. Ebenso können Windows-Netzwerkgerätetreiber, deren Hersteller die Hardware-Spezifikationen nicht freigegeben haben, über die NDIS-Schnittstelle verwendet werden, z. B. Intels Centrino.

### Dateisysteme

FreeBSD hat einige besondere Funktionen in Bezug auf die Speicherung von Daten.

Das UFS-Dateisystem, das häufig von den BSD-Betriebssystemen genutzt wird, verfügt über Metadaten-Journaling und Softupdates, die die Konsistenz des Dateisystems im Falle eines Systemabsturzes sicherstellen. Schnappschüsse von Dateisystemen können in kürzester Zeit effizient erzeugt werden. Sie ermöglichen unter anderem zuverlässige Backups von laufenden Dateisystemen. Des Weiteren verfügt FreeBSD über GEOM, ein modulares Framework, welches RAID, Verschlüsselung ganzer Festplatten, Journaling, Caching und Zugriff auf netzwerkbasierten Speicherplatz zur Verfügung stellt. Mit Hilfe von GEOM können komplexe Speicherlösungen aufgebaut werden, die mehrere dieser Mechanismen gleichzeitig nutzen.

Ein weiteres häufig eingesetztes Dateisystem unter FreeBSD ist das von Sun entwickelte ZFS. Dieses wurde zunächst aus freien Quellen, die mit OpenSolaris veröffentlicht wurden, auf FreeBSD portiert und wird seit FreeBSD 8.0 als stabil eingestuft. Inzwischen werden im Rahmen von OpenZFS Verbesserungen des Dateisystems entwickelt, die dann zum Teil für FreeBSD übernommen werden. ZFS wird vor allem wegen seiner einfachen Bedienung, Flexibilität und Stabilität geschätzt. Seit FreeBSD 10.0 ist es möglich, ausschließlich über den System-Installer ein komplett auf ZFS basierendes System zu installieren. Zuvor musste dies manuell erfolgen.

### Software-Verwaltung

Neben den Programmen aus dem Basissystem stehen über 26.000 Softwarepakete von Drittanbietern zur Verfügung. Über sie kann teilweise bereits während der Installation je nach Einsatzzweck eine Vorauswahl getroffen werden. Die meisten Pakete stehen auch als Binärdateien (package) zur Verfügung und können somit direkt vom Installationsmedium oder einem regionalen Projektrepository installiert werden.

Häufiger kommen jedoch die sogenannten Ports als Paketverwaltung zum Einsatz. Neben einer größeren Auswahl liegen die Vorteile der FreeBSD-Ports in der komfortablen Abhängigkeitsauflösung, einer möglichen prozessorspezifischen Optimierung und der Nutzung von Compilezeit-Optionen. Die meisten Ports werden als Quellcode geladen, meist aus dem Netz, und dann auf dem eigenen System kompiliert. Hier finden sich die meisten Open-Source-Programme für Server und Desktop sowie einige proprietäre Programme. Die Flexibilität und einfache Bedienung der FreeBSD-Ports haben zu einer Verbreitung dieser Paketverwaltung auch auf anderen Systemen geführt. Neben NetBSD, DragonFly BSD (als DPorts) und OpenBSD werden die Ports auch auf Darwin und Mac OS X/​OS X/​macOS unter dem Namen MacPorts eingesetzt. Aufgrund der weitgehenden Quellcode-Kompatibilität dieser Systeme sind dafür höchstens kleine Änderungen an den Metadaten der Ports notwendig.

### Netzwerk

Aufgrund der Ausrichtung des Projekts liegen die Stärken von FreeBSD im Netzwerkbereich. So waren wegen des KAME-Projekts die BSDs unter den ersten Betriebssystemen mit IPv6- und IPsec-Unterstützung. Es stehen mehrere redundante Paketfilter-Implementierungen zur Verfügung: das auch für proprietäre Unices verfügbare IPFilter, die Eigenentwicklung ipfw und pf aus OpenBSD. Des Weiteren existiert mit dummynet ein leistungsfähiger Trafficshaper.

FreeBSD beherrscht Netzwerkprotokolle auf verschiedenen Ebenen, zum Beispiel 802.1Q VLANs, PPP, L2TP. Mit netgraph gibt es außerdem ein graphenbasiertes Kernelsubsystem, welches die modulare Implementierung neuer Protokolle und flexible Kombination vorhandener unterstützt. Ebenso arbeitet FreeBSD mit verschiedener Netzwerkhardware zusammen, u. a. 10-Gigabit-Ethernet, WLAN, ATM, ISDN, FDDI und UMTS.

### Virtualisierung

FreeBSD stellt ab Version 4.x die Virtualisierungsumgebung jails (dt. Gefängnisse) zur Verfügung. Aus dem Inneren eines Jail ist kein Zugriff auf die System- und Konfigurationsdateien des Hauptsystems möglich – es verwendet seine eigenen Dateien, Prozesse und auch User-Accounts, so dass die Umgebung sich fast nicht von der eines vollwertigen Systems unterscheidet. Gegenüber etwa chroot bietet dies eine Reihe von Vorteilen, insbesondere im Hinblick auf Sicherheit, Administration und Performance. Im Vergleich zu Paketen wie Xen oder VMware wiederum ist die Umsetzung sehr viel einfacher und transparenter, bietet aber nicht die Möglichkeit, ein fremdes Betriebssystem zu betreiben. In anderen Systemen sind Abwandlungen von FreeBSD-Jails als sysjails oder container bekannt.

Die Open-Source-Edition der Virtualisierungssoftware VirtualBox ist in den Ports enthalten und ermöglicht es, FreeBSD sowohl als Gast-Betriebssystem als auch als Virtualisierungshost, der virtuelle Maschinen beherbergt, zu betreiben.

Mit FreeBSD 10.0 hielt der extra für FreeBSD entwickelte Typ‑2-Hypervisor bhyve Einzug in das Betriebssystem. Er unterstützt zurzeit diverse FreeBSD-Versionen, Open-/NetBSD, Linux und Windows als Gast-Betriebssysteme.

FreeBSD ist als Xen-Gastsystem inklusive des paravirtualisierten PVH-Modus einsetzbar, ebenso hat FreeBSD mittlerweile Unterstützung als Hostsystem.

### Binärkompatibilität

**FreeBSD**

Die FreeBSD-Entwickler sind sehr darauf bedacht, neue Versionen des Betriebssystems abwärtskompatibel zu halten. Das bedeutet, dass Programme, die unter einer älteren Version des Betriebssystems ausgeführt werden konnten, auch unter der neueren Version noch ausgeführt werden können. Dieser Anspruch wird für alle Teile des Betriebssystems erhoben (insbesondere auch Kernel-Module). Der Benutzer wird auf Ausnahmen von dieser Regel bei Bedarf hingewiesen.

**Linux**

FreeBSD bietet Linux-Binärkompatibilität. Das bedeutet, dass Programme, die für GNU/Linux geschrieben und kompiliert wurden, unter FreeBSD ausgeführt werden können. Dies bietet vor allem die Möglichkeit, Programme, die nur in kompilierter Form für Linux erhältlich sind (wie z. B. Adobe Reader, Adobe Flash Player, Skype) unter FreeBSD zu nutzen. Die Linux-Binärkompatibilität wird häufig Linux Emulator oder linuxulator genannt. Technisch gesehen nutzt dieses Feature allerdings keine Emulation, sondern es beruht auf der Implementierung einer Binärschnittstelle (ABI).

**Windows**

Mithilfe der Laufzeitumgebung Wine, die in der Ports-Collection sowie als Binärpaket zur Verfügung steht, können unter FreeBSD eine Reihe von Windows-Anwendungen ausgeführt werden, z. B. Microsoft Office.

## Entwicklung

Die Entwicklungszweige des Quelltextes werden durch zentrale Subversion/CVS-Archive zur Verfügung gestellt. Das System ist sehr homogen, da alle Systembestandteile von der gleichen Entwicklergruppe gepflegt werden. Diese Archive werden regional gespiegelt, um das Netzwerk des Hauptarchivs zu entlasten. Aus Gründen der Performance und um Inkonsistenzen zu vermeiden sind die Archive mit direktem Schreibzugriff getrennt von denen, die gelesen werden können.

Bei FreeBSD spielt die Verfügbarkeit des Quelltexts auch praktisch eine große Rolle: Viele Anwender halten einen lokalen Quelltextbaum vor und synchronisieren ihn regelmäßig über das Netz mit einem zentralen Quelltextarchiv (Repository). Dadurch ist es möglich, ein lokales System genau für seinen Einsatzzweck anzupassen, indem z. B. der Kernel mit systemspezifischen Treibern neu gebaut oder Software des Basissystems bzw. aus den Ports angepasst werden kann. Im Repository kann man in den alten Versionen der Quelltexte und den Anmerkungen der Entwickler recherchieren und somit sehr gut Einsicht in den Aufbau und die Funktionsweise des Systems gewinnen.

### Projektorganisation

Die Pflege des Quelltextes wird von drei Gruppen der FreeBSD-Entwicklergemeinde übernommen:

* src: In diesem Teil des Quelltextbaums sind der Kernel und das Userland enthalten. Committer mit Zugriff auf den src-Baum treiben daher auch die Entwicklung des Systems voran.
* ports: Benannt nach der gleichnamigen Paketverwaltung, wird hier die Software von Drittanbietern eingepflegt. Die FreeBSD-Ports sind von Kernel und Userland unabhängig.
* doc: Committer mit Zugriff auf diesen Teil des Quelltextbaums sind verantwortlich für die Pflege des sehr umfangreichen Handbuchs und der Manpages, die mit FreeBSD ausgeliefert werden.

Zusätzlich zu diesen drei Gruppen gibt es noch Teams, die für das Releasemanagement, die Administration der Projektserver, das Einpflegen von Sicherheitsupdates etc. zuständig sind. Dabei gibt es personelle Überlappungen zwischen all diesen Gruppen.

Koordiniert wird die Entwicklung vom Core Team, das alle zwei Jahre von den aktiven Entwicklern mit CVS-Zugriff gewählt wird.

Die Kommunikation zwischen Entwicklern untereinander und mit Benutzern findet wie bei vielen Opensource-Projekten hauptsächlich über das Internet statt (Mailinglisten, Newsgroups, IRC, Foren).

### Community-Treffen

Jedes Jahr werden weltweit mehrere Konferenzen abgehalten, sogenannte BSDcons. Entwickler und interessierte Nutzer stellen BSD-bezogene Projekte vor, diskutieren sie und erlernen in Workshops den Umgang mit ihnen. Im Rahmen der Konferenzen finden gesonderte Entwicklertreffen statt (sog. DevSummits), auf denen zukünftige Entwicklungen des Projektes diskutiert und koordiniert werden. Häufig finden die Konferenzen in universitärem Umfeld statt. Meist werden sie von der FreeBSD Foundation finanziell und logistisch unterstützt. So verwendet die FreeBSD Foundation einen Teil ihres Budgets, um Entwicklern die Teilnahme an Konferenzen zu finanzieren. Namhafte Firmen (darunter Google, Netflix, iXsystems), die in die Entwicklung von FreeBSD involviert sind oder FreeBSD in größerem Umfang nutzen, treten auch als Sponsoren von Konferenzen auf. Die Konferenzen werden geschätzt, da sie die Möglichkeit des Austausches zwischen Programmierern, System-Administratoren, Studenten, Professoren und IT-Firmen bieten. Immer häufiger werden Teile der Konferenzen live gestreamt oder es sind Mitschnitte von Vorträgen oder andere Konferenzmaterialien (Präsentationen, Handouts) online über die jeweilige Webseite zur Konferenz abrufbar.

Folgende Konferenzen finden regelmäßig statt:

* AsiaBSDCon (Asien, Japan)
* BSDCan (USA, Canada)
* EuroBSDcon (Europa)
* KyivBSD (Ukraine, Kiew)
* NYCBSDCon (USA, New York City)
* ruBSD (Russland)

Zusätzlich zu den Konferenzen finden unregelmäßige Zusammentreffen statt, sogenannte BSDDays. Sie dienen demselben Zweck wie die Konferenzen, sind aus Mangel an Zeit oder Finanzen aber nicht so umfangreich.

Des Weiteren gibt es noch in vielen Ländern sogenannte User Groups. Dies sind Gruppen, die aus Benutzern von FreeBSD oder solchen, die es werden wollen, bestehen. Sie dienen primär dem persönlichen Erfahrungsaustausch. Wann, wo und wie sich Mitglieder solcher Gruppen treffen, ist gruppenspezifisch und wird häufig auf den Webseiten dieser Gruppen öffentlich bekannt gegeben.

### Entwicklungszweige

Die Entwicklung des FreeBSD-Kernels und -Userlands läuft in mehreren Zweigen parallel ab:

* CURRENT, in dem neue Features entwickelt und getestet werden und nur für Entwickler oder fortgeschrittene Anwender geeignet ist. (CVS-Tag: CURRENT, HEAD oder .)
* STABLE, der als genügend getestete Software aus dem CURRENT-Zweig hervorgegangen ist und von dem etwa alle vier bis sechs Monate neue Versionen veröffentlicht werden.
* RELEASE sind Schnappschüsse des jeweiligen RELEASE-Zweiges, welche wiederum aus einem STABLE-Zweig hervorgehen. Bei Releases werden keine Änderungen mehr vorgenommen, sondern nur noch sicherheitsrelevante Änderungen eingepflegt.

Um zum Beispiel sicherheitsrelevante Änderungen zwischen den einzelnen Zweigen austauschen zu können oder Verbesserungen aus dem Stable-Zweig auch in Current einfließen lassen zu können, wird im Hintergrund auf eine Versionsverwaltung mit Perforce zurückgegriffen, da sich mit CVS keine zweigübergreifenden Änderungen durchführen lassen. Der Wartungszeitraum beträgt je nach Release und Priorität zwischen 6 und 24 Monaten.

### Versionstabelle

| Version | Veröffentlichung | Unterstützung bis | wesentliche Änderung |
| - | - | - | - |
| Ältere Version; nicht mehr unterstützt: 1.0 | 1. November 1993 | | erste Version |
| Ältere Version; nicht mehr unterstützt: 1.1 | Mai 1994 | | Wartungsrelease mit Bugfixes für 386BSD-Import, portierte Programme (XFree86, nntp) hinzugefügt |
| Ältere Version; nicht mehr unterstützt: 1.1.5 | | | |
| Ältere Version; nicht mehr unterstützt: 1.1.5.1 | Juli 1994 | | |
| Ältere Version; nicht mehr unterstützt: 2.0 | 22. November 1994 | | Codebasis von 386BSD wurde durch BSD-Lite 4.4 ersetzt, wegen des Vergleichs zwischen USL und BSDi, neuer Installer und Bootmanager, Unterstützung anderer Dateisysteme (FAT, unionfs, kernfs), dynamisch ladbare Kernelmodule aus NetBSD importiert |
| Ältere Version; nicht mehr unterstützt: 2.0.5 | 10. Juni 1995 | | vollständige Unterstützung von NIS-Client und Server, T/TCP, ISDN, FDDI und Fast-Ethernet-Karten (100Mbit), Übersetzung der Dokumentation in diverse Sprachen, Ports auf dem Installationsmedium enthalten |
| Ältere Version; nicht mehr unterstützt: 2.1 | 19. November 1995 | | |
| Ältere Version; nicht mehr unterstützt: 2.1.5 | Juli 1996 | | |
| Ältere Version; nicht mehr unterstützt: 2.1.6 | Dezember 1996 | | |
| Ältere Version; nicht mehr unterstützt: 2.1.7 | Februar 1997 | | |
| Ältere Version; nicht mehr unterstützt: 2.2 | März 1997 | | NFSv3, Linux-Emulations-Schicht inklusive ELF, Einführung der man section 9 für Kernelfunktionen |
| Ältere Version; nicht mehr unterstützt: 2.2.1 | April 1997 | | |
| Ältere Version; nicht mehr unterstützt: 2.2.2 | Mai 1997 | | |
| Ältere Version; nicht mehr unterstützt: 2.2.5 | 22. Oktober 1997 | | Unterstützung aktueller Cyrix- und AMD-Prozessoren, neue VGA-Bibliothek |
| Ältere Version; nicht mehr unterstützt: 2.2.6 | 25. März 1998 | | Unterstützung für Plug and Play |
| Ältere Version; nicht mehr unterstützt: 2.2.7 | 22. Juli 1998 | | Unterstützung für FAT32, Update zur PC-98-Architektur |
| Ältere Version; nicht mehr unterstützt: 2.2.8 | 29. November 1998 | | Traffic-Shaping mit dummynet, Paketfilterung mit ipfw, Unterstützung von IDE-Laufwerken größer als 8 GiB |
| Ältere Version; nicht mehr unterstützt: 3.0 | Oktober 1998 | | Unterstützung symmetrischer Multiprozessorsysteme (SMP), SCSI und VESA |
| Ältere Version; nicht mehr unterstützt: 3.1 | 15. Februar 1999 | | Einführung von USB und PAM |
| Ältere Version; nicht mehr unterstützt: 3.2 | 17. Mai 1999 | | |
| Ältere Version; nicht mehr unterstützt: 3.3 | 17. September 1999 | | Unterstützung des Advanced Power Management zur Energieverwaltung |
| Ältere Version; nicht mehr unterstützt: 3.4 | 20. Dezember 1999 | | |
| Ältere Version; nicht mehr unterstützt: 3.5 | 24. Juni 2000 | | |
| Ältere Version; nicht mehr unterstützt: 4.0 | 14. März 2000 | | Import von IPv6 und IPsec aus dem KAME-Projekt, Integration von OpenSSH in das Basissystem, Emulation für SVR4-Binärdateien, USB-Ethernet, telnet-Verschlüsselung |
| Ältere Version; nicht mehr unterstützt: 4.1 | 27. Juli 2000 | | Erweiterung der Unterstützung von Alpha-Prozessoren |
| Ältere Version; nicht mehr unterstützt: 4.1.1 | 27. September 2000 | | Virtueller Ethernet-Gerätetreiber für Bridge-Konfigurationen, Unterstützung von ATA100-Controllern |
| Ältere Version; nicht mehr unterstützt: 4.2 | 21. November 2000 | | Unterstützung von USB-Scannern, USB-Modems, Umstrukturierung der Ports |
| Ältere Version; nicht mehr unterstützt: 4.3 | 20. April 2001 | | |
| Ältere Version; nicht mehr unterstützt: 4.4 | 20. September 2001 | | Erkennung neuer Prozessoren (Transmeta Crusoe et al.), Unterstützung von Streaming SIMD Extensions (SSE) und SMB-Dateisystemen |
| Ältere Version; nicht mehr unterstützt: 4.5 | 29. Januar 2002 | 31. Dezember 2002 | TCP hinsichtlich Durchsatz, Performance und Robustheit gegen DoS-Attacken überarbeitet, Unterstützung des Bootloaders für Dateisysteme mit 16K-Blöcken |
| Ältere Version; nicht mehr unterstützt: 4.6 | 15. Juni 2002 | Mai 2003 | |
| Ältere Version; nicht mehr unterstützt: 4.6.2 | 15. August 2002 | Mai 2003 | |
| Ältere Version; nicht mehr unterstützt: 4.7 | 10. Oktober 2002 | Dezember 2003 | |
| Ältere Version; nicht mehr unterstützt: 4.8 | 3. April 2003 | 31. März 2004 | Unterstützung von FireWire und Hyper-Threading, Framework aus OpenBSD zur Verschlüsselungsunterstützung des Kernels importiert |
| Ältere Version; nicht mehr unterstützt: 4.9 | 28. Oktober 2003 | 31. Oktober 2004 | Experimentelle Unterstützung von Physical Address Extensions |
| Ältere Version; nicht mehr unterstützt: 4.10 | 27. Mai 2004 | Mai 2006 | Unterstützung von USB 2.0 |
| Ältere Version; nicht mehr unterstützt: 4.11 | 25. Januar 2005 | 31. Januar 2007 | |
| Ältere Version; nicht mehr unterstützt: 5.0 | 14. Januar 2003 | 30. Juni 2003 | Unterstützung von UltraSPARC- und IA-64-Prozessoren, SMP-Unterstützung durch Umwandlung des Giant lock in kleinere Locks, GEOM, Mandatory Access Control aus TrustedBSD importiert, fsck im Hintergrund, Bluetooth, ACPI, CardBus, devfs, UFS2, Universal Disk Format, Treiber für die Direct Rendering Infrastructure (DRI), Pluggable Authentication Modules, Unterstützung für 80386-Prozessoren, kernfs und UUCP entfernt, Perl aus dem Basissystem in die Ports verschoben, das rc.d Framework aus NetBSD importiert |
| Ältere Version; nicht mehr unterstützt: 5.1 | 9. Juni 2003 | Februar 2004 | Experimentelle Unterstützung von AMD64-Prozessoren, 1:1- und M:N-Thread-Bibliotheken für Multithreading, Name Service Switch und des ULE-Schedulers, Unterstützung von Physical Address Extensions, zwingende Verwendung von GEOM und devfs, IPv6 Unterstützung des Linux-Emulators, Beginn der Dokumentationsübersetzung ins Dänische |
| Ältere Version; nicht mehr unterstützt: 5.2 | 9. Januar 2004 | 31. Dezember 2004 | AMD64 als Tier1-Architektur unterstützt, Protocol Independent Multicast, ATA-Treiber aus dem Giant lock entfernt, Unterstützung des NFSv4-Client, Start der Dokumentationsübersetzung ins Türkische, Einführung von Cardbus- und 802.11a/b/g-Treibern, experimentelle Unterstützung für die Filterung und Forwarding von IP-Daten in mehreren Threads |
| Ältere Version; nicht mehr unterstützt: 5.2.1 | 25. Februar 2004 | 31. Dezember 2004 | |
| Ältere Version; nicht mehr unterstützt: 5.3 | 6. November 2004 | 31. Oktober 2006 | ALTernate Queueing, eintrittsinvariante Netzwerk- und Socketsubsysteme in mehreren Threads, Einführung des Kernel debugger frameworks (KDB), dynamische und statische Linkerunterstützung für Thread-local storage, Import der pf-Firewall aus OpenBSD, native Ausführungsunterstützung von NDIS-Treibern, Ersetzung von XFree86 durch X.org, Kryptographie-Unterstützung durch Basissystem |
| Ältere Version; nicht mehr unterstützt: 5.4 | 9. Mai 2005 | 31. Oktober 2006 | Import des Common Address Redundancy Protocol aus OpenBSD |
| Ältere Version; nicht mehr unterstützt: 5.5 | 25. Mai 2006 | 31. Mai 2008 | Beide Kerne von Dual-Core-Prozessoren sind per Voreinstellung durch SMP-Kernel nutzbar |
| Ältere Version; nicht mehr unterstützt: 6.0 | 4. November 2005 | 31. Januar 2007 | Experimentelle Unterstützung für PowerPC, WPA, Treiber weiterer Wireless-Karten hinzugefügt, vollständige Unterstützung von 802.11g, 802.11i, 802.1x und WME/WMM, Verbesserung von Zugriffen auf Dateisysteme und direkt auf Datenträger, SMP-fähige Schicht des virtuellen Dateisystems VFS, Import der Bridge-Implementierung mit Unterstützung des 802.1D Spanning Tree Protocol aus NetBSD |
| Ältere Version; nicht mehr unterstützt: 6.1 | 8. Mai 2006 | 31. Mai 2008 | Tastatur-Multiplexer, automatische Konfiguration vieler Bluetooth-Geräte, Treiber für Ethernet, SAS und SATA-RAID-Controller |
| Ältere Version; nicht mehr unterstützt: 6.2 | 15. Januar 2007 | 31. Mai 2008 | Unterstützung der Xbox-Architektur, OpenBSM, ipfw-Tags für Pakete, Einführung von freebsd-update für binäre Sicherheitsupdates und Patches und OpenIPMI als Intelligent Platform Management Interface |
| Ältere Version; nicht mehr unterstützt: 6.3 | 18. Januar 2008 | 31. Januar 2010 | Reimplementierung von UnionFS, Hinzufügen eines Upgrade-Schalters zu freebsd-update |
| Ältere Version; nicht mehr unterstützt: 6.4 | 28. November 2008 | 30. November 2010 | Unterstützung des Camellia-Algorithmus zur Verschlüsselung, Ermöglichen des Bootens von USB-Datenträgern und Geräten mit GPT-BIOS, buffer corruption protection bei der Speicherallokierung |
| Ältere Version; nicht mehr unterstützt: 7.0 | 27. Februar 2008 | 30. April 2009 | Unterstützung von ZFS, XFS und GPT, Referenzimplemenation von SCTP, Unterstützung für die ARM-Architektur und das High Definition Audio Interface (HDA) von Intel hinzugefügt, phkmalloc durch jemalloc, Unterstützung für DEC Alpha eingestellt |
| Ältere Version; nicht mehr unterstützt: 7.1 | 4. Januar 2009 | 28. Februar 2011 | DTrace von OpenSolaris übernommen, ULE-Scheduler wird voreingestellter Scheduler für i386- und AMD64-Plattformen |
| Ältere Version; nicht mehr unterstützt: 7.2 | 4. Mai 2009 | 30. Juni 2010 | Unterstützung der UltraSPARC-III-Prozessoren, transparente Verwendung von Superpages im Virtual-Memory-Subsystem, Verbesserungen an den FreeBSD jails |
| Ältere Version; nicht mehr unterstützt: 7.3 | 23. März 2010 | 31. März 2012 | Neuer Bootloader gptzfsboot mit Unterstützung für GPT und ZFS, Unterstützung für VIA-Nano-Prozessoren |
| Ältere Version; nicht mehr unterstützt: 7.4 | 24. Februar 2011 | 28. Februar 2013 | Unterstützung für UltraSPARC-IV, -IV+ und SPARC64-V-Prozessoren hinzugefügt, IEEE 802.3 Vollduplex |
| Ältere Version; nicht mehr unterstützt: 8.0 | 25. November 2009 | 30. November 2010 | Neuer USB-Stack, Unterstützung für IEEE 802.11s, Verwendung von Superpages, Erhöhung der Anzahl maximaler Slices und Unterstützung von NFSv4 |
| Ältere Version; nicht mehr unterstützt: 8.1 | 23. Juli 2010 | 31. Juli 2012 | Hochverfügbarkeitsspeicher, SMP für PowerPC G5-Systeme, threadsicheres MS-DOS-Dateisystem, zfsloader, NFSv4-ACL für UFS und ZFS |
| Ältere Version; nicht mehr unterstützt: 8.2 | 24. Februar 2011 | 31. Juli 2012 | Import von V4L in den Linux-Emulator, Unterstützung von USB 3.0 und des Extensible Host Controller Interface |
| Ältere Version; nicht mehr unterstützt: 8.3 | 18. April 2012 | 30. April 2014 | Unterstützung der TRIM-Funktion für SSDs, GNOME Version 2.32.1, KDE Version 4.7.4 |
| Ältere Version; nicht mehr unterstützt: 8.4 | 9. Juni 2013 | 1. August 2015 | Dateisystem tmpfs kann nun produktiv eingesetzt werden, KDE Version 4.10.1 |
| Ältere Version; nicht mehr unterstützt: 9.0 | 12. Januar 2012 | 31. März 2013 | Userland DTrace, UFS SoftUpdates+Journal, SMP-Support für mehr als 32 Prozessoren, Einführung der Non-Uniform Memory Architecture |
| Ältere Version; nicht mehr unterstützt: 9.1 | 31. Dezember 2012 | 31. Dezember 2014 | Neuer Intel-Grafiktreiber mit GEM/KMS-Unterstützung |
| Ältere Version; nicht mehr unterstützt: 9.2 | 30. September 2013 | 31. Dezember 2014 | Unterstützung von TRIM sowie LZ4-Kompression unter ZFS |
| Ältere Version; nicht mehr unterstützt: 9.3 | 16. Juli 2014 | 31. Dezember 2016 | Unterstützung von ZFS-bookmarks, Einführung von /usr/lib/private, Aktualisierung zahlreicher Bibliotheken |
| Ältere Version; nicht mehr unterstützt: 10.0 | 20. Januar 2014 | 28. Februar 2015 | Umstellung auf Clang/LLVM als Standardcompiler; Linux-inotify-Emulation |
| Ältere Version; nicht mehr unterstützt: 10.1 | 14. November 2014 | 31. Dezember 2016 | Unterstützung für UEFI bei amd64, UDP-Lite-Protokoll und SMP bei armv6 hinzugefügt, Performance-Verbesserungen bei Virtualisierung und ZFS |
| Ältere Version; nicht mehr unterstützt: 10.2 | 13. August 2015 | 31. Dezember 2016 | |
| Ältere Version; nicht mehr unterstützt: 10.3 | 29. März 2016 | 30. April 2018 | Unterstützung von ZFS-Boot bei UEFI-Installationen, 64-Bit Linux-Emulation |
| Ältere Version; nicht mehr unterstützt: 10.4 | 4. Oktober 2017 | 31. Oktober 2018 | |
| Ältere Version; nicht mehr unterstützt: 11.0 | 10. Oktober 2016 | 30. November 2017 | Der WLAN-Treiber unterstützt 802.11n und weitere Hardware, außerdem setzt er standardmäßig die Regulierungsdomäne auf FCC-Regeln um, es wird die RISC-V- und arm64-Architektur unterstützt, der Hypervisor Bhyve unterstützt nun Windows Vista und aufwärts, libblacklist wurde von NetBSD übernommen, sowie Bugfixes und Paketaktualisierungen |
| Ältere Version; nicht mehr unterstützt: 11.1 | 26. Juli 2017 | 30. September 2018 | LLVM, LLDB, Clang wurde aktualisiert, der NFS-Client unterstützt nun das Amazon Elastic File System und der Hyper-V-Hypervisor zweiter Generation erhält Support, ergänzt wurden die Tools zfsbootcfg und efivar, weitere Softwareupdates und Verbesserungen sowie Updates, um reproduzierbare Builds besser zu unterstützen |
| Ältere Version; nicht mehr unterstützt: 11.2 | 27. Juni 2018 | 31. Oktober 2019 | LLVM, Clang, LLDB wurde genauso wie OpenSSH und OpenSSL aktualisiert, KDE 4.14.3, Gnome 3.18.0, Treiberupdates |
| Ältere Version; nicht mehr unterstützt: 11.3 | 5. Juli 2019 | 30. September 2020 | KDE 4.15.3, Gnome 3.28.0 |
| Ältere Version; nicht mehr unterstützt: 11.4 | 5. Juli 2019 | 30. September 2021 | |
| Ältere Version; nicht mehr unterstützt: 12.0 | 11. Dezember 2018 | 29. Februar 2020 | |
| Ältere Version; nicht mehr unterstützt: 12.1 | 4. November 2019 | 31. Januar 2021 | OpenSSL Version 1.1.1d; Clang/LLVM Version 8.0.1; BearSSL im Basissystem |
| Ältere Version; nicht mehr unterstützt: 12.2 | 27. Oktober 2020 | 31. März 2022 | Unterstützung für Intel 100Gb Ethernet Karten; Unterstützung von Linux in jails; OpenSSH 7.9p1; OpenSSL 1.1.1h |
| Ältere Version; noch unterstützt: 12.3 | 7. Dezember 2021 | | Einige Netzwerktreiber aktualisiert; Upstream Software aktualisiert; Userland-Anwendungen aktualisiert; Kernel Bugs behoben |
| Ältere Version; nicht mehr unterstützt: 13.0 | 13. April 2021 | 31. August 2022 | Umstellung von ZFS auf OpenZFS; Clang/LLVM Version 11.0.1 |
| Aktuelle Version: 13.1 | 16. Mai 2022 | | FIDO/U2F-Authentifizierung für SSH mittels ecdsa-sk und ed25519-sk; OpenSSH Version 8.8p1; OpenSSL Version 1.1.1o; OpenZFS 2.1.4 |
| Legende:Ältere Version; nicht mehr unterstütztÄltere Version; noch unterstütztAktuelle VersionAktuelle VorabversionZukünftige Version ||||

Folgende Zeitleiste stellt den Lebenszyklus unterschiedlicher FreeBSD-Versionen dar. Bis zum End of life einer Version werden Sicherheitslücken und Softwarefehler beseitigt und ein Teil essentieller neuer Features, die in künftigen Versionen vorhanden sind, zurückportiert.

## Logo

Der BSD-Daemon ist das „Maskottchen“ von BSD-Unix und wurde von Beginn an als Logo verwendet. Er wird oft Beastie genannt, obwohl ihn der Träger des Copyrights für namenlos erklärt.

Das Zeichen erwies sich jedoch teils schwer reproduzier- und skalierbar, daher riefen im Februar 2005 die Entwickler des FreeBSD-Projektes auf, ein Logo für FreeBSD zu entwerfen. Ende Juni 2005 wurden die Vorschläge verschiedener Grafiker eingereicht und Ende September 2005 wurde das neue Logo ausgewählt. Zum Schluss standen sieben Einsendungen in der engeren Wahl – gewonnen hat ein Design von Anton K. Gural.

Es gab darauf – wie bei NetBSD – verschiedene Erwägungen, das traditionelle Maskottchen nicht weiter als Logo zu verwenden. Im Ergebnis bleibt der Daemon Beastie nun doch das Maskottchen des Projektes. Das neue Logo ist eine Anspielung auf den Kopf des Daemons mit seinen Hörnern.

## Distributionen und Derivate

### FreeBSD-Distributionen

* m0n0wall: eine Firewall-Distribution;
* NomadBSD: ein Live-System (keine Installation nötig) für USB-Sticks
* OPNsense: eine (stateful) Firewall/Router-Distribution; unterstützt LibreSSL und ASLR
* pfSense: eine Firewall/Router-Distribution
* TrustedBSD: Erweiterung mit dem Hauptgewicht auf Sicherheitseigenschaften
* HardenedBSD: eine Erweiterung mit dem Hauptgewicht auf Sicherheitseigenschaften; Zusammenarbeit mit OPNsense

### FreeBSD-Derivate

* CellOS und OrbisOS: Betriebssysteme der PlayStation 3 und 4 von Sony
* Darwin: gemeinsames Basisbetriebssystem für macOS, iOS etc.; XNU, Hybridkernel aus OSF Mach- und FreeBSD-Kernel; Das Userland des als UNIX 03 zertifizierten macOS stammt größtenteils von FreeBSD, es ist nicht Bestandteil von Darwin
* Data ONTAP: das Betriebssystem von NetApp-Speichersystemen
* DesktopBSD: ein Arbeitsplatzsystem mit KDE als grafischer Arbeitsumgebung
* DragonFly BSD: Abspaltung von FreeBSD 4.x
* FuryBSD: Nachdem sich Project Trident (künftig Void Trident) entschlossen hat künftig anstatt auf TrueOS/FreeBSD auf Void Linux zu setzen, gründete ein Teil der Community FuryBSD mit dem Fokus auf ein vollständig grafisches Desktop OS
* FreeNAS: für Network Attached Storage (NAS) konzipiert
* FreeSBIE: ein Live-System mit Xfce and Fluxbox; entstand während des Google Summer of Code 2005
* JunOS: das Betriebssystem der Router von Juniper Networks
* Kylin: entwickelt für chinesische Behörden
* MidnightBSD: mit grafischer Arbeitsumgebung auf Basis von GNUstep; ursprünglich abgeleitet von FreeBSD 6.1 Beta
* NAS4Free: für Network Attached Storage (NAS) konzipiert
* PicoBSD: eine minimierte Variante von FreeBSD, die auf eine einzelne Diskette passt – also weniger als 1,44 MB umfasst
* TrueOS (ehemals PC-BSD): ein FreeBSD erweiterndes und als Arbeitsplatzsystem optimierendes Derivat; die Entwicklung wurde Anfang 2020 eingestellt.
   * GhostBSD: ursprünglich FreeBSD-, ab 18.10 TrueOS-basierend; MATE als vorgesehene grafische Arbeitsumgebung, ursprünglich Gnome
* TwinCAT/BSD: Betriebssystem zur Industrieautomatisierung der Firma Beckhoff Automation.

### Portierungen auf den FreeBSD-Kernel

* Arch BSD: eine Arch-Linux-Portierung auf den Kernel von FreeBSD
* Gentoo/FreeBSD: eine Gentoo-Portierung auf den Kernel von FreeBSD
* Debian GNU/kFreeBSD: eine Portierung des Debian-GNU-Systems auf den Kernel von FreeBSD

## Hardwareanforderungen

Die Hardwareanforderungen hängen vom Einsatzgebiet ab. Ein Embedded System beispielsweise hat andere Anforderungen als ein Webserver oder ein Desktop.

Für FreeBSD 11.x gelten 96 MB RAM und 1,5 GB Festplattenspeicher als Minimalanforderung. Bei Desktop-Systemen beginnen die Anforderungen bei 2–4 GB RAM und mindestens 8 GB freiem Festplattenspeicherplatz.

