FreeBSD 13.0: Das unixoide Betriebssystem erhält ein großes Update
Bild: Sven Bauduin
The FreeBSD Project hat mit FreeBSD 13.0 nach langer Entwicklungsdauer die insgesamt 13. Hauptversion seines freien und vollständig unixoiden Betriebssystems veröffentlicht. Wie jedes Major Release bringt auch das unter BSD-Lizenz stehende FreeBSD 13.0 diverse größere und kleinere Änderungen mit sich.
Neues Release mit 5 Jahren Support
Neben einer Reihe von größeren Änderungen, die zum Teil für den Anwender sichtbar sind, bringt das Betriebssystem auch unter der Haube viele Verbesserungen mit, die dem Nutzer auf den ersten Blick verborgen bleiben. Die Dauer für Support sowie entsprechenden Updates beträgt wie gewohnt 5 Jahre ab Release.
Der aktuelle Standard-Desktop unter FreeBSD 13.0 ist der im Dezember des vergangenen Jahres runderneuerte Xfce 4.16 , aber auch Gnome 3.38 („Orbis“) und andere freie Desktop-Umgebungen können problemlos genutzt werden.
FreeBSD 13.0 mit Gnome 3.38 („Orbis“)
Die umfangreichen offiziellen Release Notes hat das Teammitglied „Yamagi“ aus dem aktiven und hilfsbereiten deutschsprachigen BSDForum.de freundlicherweise bereits auf Deutsch übersetzt.
Vollständige Release Notes von FreeBSD 13.0
Allgemeines: FreeBSD/i386 wird auf Tier-2 herabgestuft. Auch wenn Tier-2 bedeutet, dass die ABI und API der Plattform sich jederzeit ändern können und Softwarepakete sowie Security Updates nur begrenzt zur Verfügung gestellt werden, garantiert das FreeBSD Projekt für die Lebensdauer von FreeBSD 13.x eine weitgehend Tier-1 entsprechende Unterstützung. Lediglich plattformabhängige Security Updates werden nicht garantiert, diese sind jedoch selten. Siehe für Details: https://lists.freebsd.org/pip…unce/2021-January/002006.html FreeBSD/arm64 (bisher häufig auch als FreeBSD/aarch64 bezeichnet) wird auf Tier-1 hochgestuft. Siehe für weitere Details: https://lists.freebsd.org/pip…urrent/2021-April/079423.html Der Kernel nutzt nun in allen performancekritischen Codepfaden lockfreie Synchronisationsmechanismen, sogenannte Epochs. Dadurch skaliert FreeBSD auf großen Maschinen mit mehr als 64 Hardwarethreads deutlich besser als bisher, aber auch Workloads auf kleineren Maschinen profitieren teilweise deutlich. Die virtuelle Speicherverwaltung (VM) wurde grundüberarbeitet. FreeBSD/aarch64, FreeBSD/amd64 und FreeBSD/powerpc64 unterstützen nun (theoretisch) bis zu 128 Petabyte RAM. Vor allem sind aber viele Performanceoptimierungen und Stabilitätsverbesserungen implementiert worden. Speicherintensive Workloads laufen teilweise deutlich schneller, das System verhält sich in Situationen extremen Speichermangels zuverlässiger. Im Bereich Powermanagement gibt es eine Reihe grundlegender Verbesserungen. Das System ist nun in der Lage tiefe C-States zu erreichen und diese auch längere Zeit zu halten. Auf Intel CPUs beginnend mit der Skylake-Generation wird der Energiebedarf bei gleichzeitiger Leistungssteigerung durch die Unterstützung von Intel Speed Shift bzw. hwpstate teils deutlich gesenkt. Auf FreeBSD/aarch64 und FreeBSD/amd64 ist UEFI nun die empfohlene Methode zu booten. Der UEFI-Loader ist nicht länger eine einfache Portierung des BIOS-Loaders, stattdessen unterstützt er die meisten UEFI-Funktionen wie eine grafische Konsole oder die Interaktion mit anderen Bootloadern. pkgbase - die Verwaltung des Basisystems durch pkg - ist nun für den produktiven Einsatz bereit. pkgbase ist vor allem für zentrales Deployment und eine zentrale Updateverwaltung in größeren Umgebungen gedacht. Die Unterstützung zum automatisierten Bau der Pakete durch Poudriere wird im nächsten Poudriere-Release enthalten sein.
Inkompatible Änderungen: Ein grundlegender Parameter des FreeBSD-Kernels ist MAXPHYS. Dieser gibt vereinfacht gesagt an, wie viele I/O-Daten pro Operation verarbeitet werden können. MAXPHYS war traditionell auf 128 Kilobyte festgelegt, zu wenig für moderne Hardware. Für FreeBSD 13.0 wurde MAXPHYS auf 1 Megabyte erhöht. Diese Änderung kann die theoretische Nebenwirkung haben, dass Programme, die ein MAXPHYS von 128 Kilobyte erwarten, nicht mehr funktionieren. In diesem Fall kann der Wert durch das Tuneable kern.maxphys zurück auf 128 Kilobyte gesetzt werden. Das Executable-Format wurde auf ELFv2 geändert, Debuginformationen werden nun als DWARFv4 generiert. Dies sollte neben einigen neuen Funktionen für Softwareentwickler keinerlei Auswirkungen haben. Tools von Drittanbietern unterstützen jedoch unter Umständen noch kein ELFv2 und / oder DWARFv4 und können mit den entsprechenden Executables bzw. Debugsymbolen nicht umgehen. Die FreeBSD/sparc64 Portierung wurde entfernt. Dies beinhaltet die Kernel- und Userlandunterstützung, plattformspezifische Treiber und Tools. FreeBSD/sparc64 unterstützte lediglich vor dem Jahr 2004 erschienene SPARC-Hardware und wurde bereits seit Jahren nicht mehr nennenswert weiterentwickelt. Die Userland-Unterstützung für das bis einschließlich FreeBSD 2.2.9 genutzte a.out Executable-Format wurde entfernt. Dies betrifft nicht den Kernelsupport, FreeBSD 1.x und 2.x Jails sind weiterhin funktional. Nutzer, die noch a.out-Executables einsetzen, sind angehalten diese in einem entsprechenden Jail auszuführen. Der FreeBSD/i386 GENERIC Kernel benötigt nun eine 686-kompatible CPU, also Pentium Pro und neuer. Die Unterstützung für 486er und 586er (Pentium) CPUs ist nicht entfernt worden, benötigt nun aber einen angepassten Kernel. Grund dafür ist, dass selbst die neuesten 586er Systeme über nicht genügend RAM verfügen, um FreeBSD sinnvoll ausführen zu können. FreeBSD 13.0 entfernt die Unterstützung für diverse alte Hardware. Ein Großteil dieser ist seit über 20 Jahren nicht mehr im Handel erhältlich. Zudem wurden umfangreiche Recherchen betrieben, um die Verbreitung dieser Hardware einschätzen zu können. Das Entfernen fand im Rahmen des FreeBSD Community Process statt, Nutzer konnten sich also einbringen. Grund für das Entfernen ist, dass jeder Treiber allein durch seine Existenz Manpower bindet, diese aber besser in die Unterstützung moderner Hardware investiert wird. Entfernt wurden: Die Ethernet und Fast Ethernet NICs bm, cs, de, ed, ep, ex, fe, pcn, sf, sn, tl, tx, txp, vx, wb und xe. Vor allem ed ist hier zu nennen, da es sich um die in den 1990ern Jahren wahrscheinlich mit Abstand am weitesten verbreitete NIC-Familie handelt. Sie kam noch bis weit in die 2000er Jahre in der ersten Generation Virtualisierungssoftware zum Einsatz. Weitere Informationen finden sich hier: https://github.com/freebsd/fcp/blob/master/fcp-0101.md Das 16 Bit PC-Card / PCMCIA Framework (nicht zu verwechseln mit dem sehr ähnlichen, aber neueren 32 Bit CardBus Framework) und alle zugehörigen Treiber wurden entfernt. 16 Bit PC-Card Hardware findet sich vor allem in Laptops der 1990er Jahre, welche aufgrund begrenztem RAMs FreeBSD nicht mehr sinnvoll ausführen können. Dies betrifft die vollständigen Treiber cmx, ep, ex, fe, ncv, nsp, pccard, sn, stg, xe und bt3c. Zudem betrifft es den PC-Card Teil der Treiber an, ata, fdc, puc, sio, uart und wi. Einige Treiber für sehr alte Serielle Schnittstellen-Karten wurden entfernt. Dies betrifft cy, rc und rp. Diese Treiber waren bereits seit FreeBSD 7.0 als veraltet gekenntzeichnet und teilweise dysfunktional. Die Unterstützung für Diskettenlaufwerke wurde auf FreeBSD/386 und FreeBSD/amd64 eingeschränkt. Nachdem der Direct Rendering Manager (DRM) und die zugehörigen Treiber mit FreeBSD 12.0 als veraltet markiert und Nutzer angehalten wurden, die Kernelmodule aus den Ports zu installieren, ist dieser nun aus dem Basissystem entfernt worden. Die bereits zu FreeBSD 12.0 auf den meisten Portierungen teilweise deaktivierte GNU-Toolchain wurde entfernt, stattdessen kommt jetzt ausschließlich die LLVM-Toolchain zum Einsatz. Nutzer, die eine GNU-Toolchain benötigen, können sowohl die gcc, den gdb Debugger, als auch die unterstützenden Tools aus den Paketen installieren. Nahezu alle noch verbliebenen GNU-Tools wurden durch unter BSD-Lizenz stehende Alternativen ersetzt. Dies betrifft vor allem grep. Dessen neue Implementierung weist andere Performancecharakteristika auf. Einige Workloads gewinnen und andere verlieren gegenüber der alten Implementierung. Generell wird Nutzern, die eine kompromisslos schnelle grep-Implementierung benötigen, empfohlen nicht zu POSIX kompatible und teils um mehrere Faktoren schnellere Alternativen wie ripgrep zu evaluieren. Mit diesen Änderungen verbleiben noch dialog, diff3 und gcov als GPL-lizensierte Komponenten im Basissystem.
Netzwerk: Der Code für das Paketrouting wurde komplett neu geschrieben. Dies bringt neben einer drastisch erhöhten Geschwindigkeit von bis zu fünfmal mehr Paketen pro Sekunde auch einige neue Funktionen. Vor allem Multipath Routing ist dort zu nennen, FreeBSD unterstützt nun mehrere parallele Routen zum gleichen Ziel. Als kleine Anekdote war der alte Routing Code seit 1980 weitgehend unverändert und hat über die Jahre Eingang in eine Myriade verschiedenster Systeme gefunden, ist damit beinahe ein Lehrbuchbeispiel für vorausschauende Softwarearchitektur. if_bridge wurde grundüberarbeitet und ist nun bis zu Faktor 5 schneller. Ein Teil dieser Änderungen befindet sich bereits in FreeBSD 12.2, weshalb der Geschwindigkeitsgewinn gegenüber FreeBSD 12.2 geringer ist, als gegenüber älteren Versionen. Einige Details zu diesem Projekt finden sich hier: https://freebsdfoundation.org/blog/500-if_bridge-performance-improvement/ FreeBSDs Variante des pf Paketfilters und die zugehörigen Tools wie beispielsweise das pfsync-Device haben eine Reihe Verbesserungen bekommen. Dies sind vor allem Performanceverbesserungen, verbesserte IPv6-Kompatibilität, sowie eine Reihe Bugfixes. Ebenso wurde der ipfw Paketfilter überarbeitet. Neben Performanceverbesserungen bringt dies einige neue Funktionen, vor allem erweiterte NAT-Möglichkeiten wie vollständige Unterstützung für NAT64 und Carrier Grade NAT im RFC 6598 Adressraum sind zu nennen.
Security: FreeBSD unterstützt nun (derzeit optional) das w^x Security-Schema. Dies bedeutet das Speicherbereiche entweder beschreibbar oder ausführbar sind, jedoch nicht beides. Generelle Informationen finden sich unter: https://en.wikipedia.org/wiki/W%5EX. Es wurde eine zu Linux kompatible KTLS-Implementierung hinzugefügt. OpenSSL wurde entsprechend angepasst. Hierbei findet die SSL-Verschlüsselung der Nutzinhalte von Netzwerkpaketen im Kernel statt, zusammen mit dem sendfile-Syscall können so Dateien ohne diese ins Userland kopieren zu müssen, über SSL-gesicherte Verbindungen übertragen werden. Ein Vortrag zu KTLS findet sich unter: https://papers.freebsd.org/2019/eurobsdcon/shwartsman_gallatin-kernel_tls_harware_offload/ Auf FreeBSD/amd64 ist jetzt aesni Teil des GENERIC Kernels. Auf FreeBSD/aarch64 ist jetzt armv8crypto im GENERIC Kernel enthalten.
Storage: Das virtuelle Dateisystem (VFS) - die Abstraktion zwischen den einzelnen Dateisystemen und dem Kernel - wurde überarbeitet. Es bietet jetzt in hochgradig parallelisierten Workloads eine bessere Performance, zudem arbeitet der Dateisystemcache bei klassischen Dateien (also allen Dateisystemen außer ZFS) effizienter. Die vor einigen Jahren beschlossene Zusammenführung der drei im Rahmen des OpenZFS-Projekts parallel entwickelten ZFS-Zweige ZFSonFreeBSD, ZFSonIllumos und ZFSonLinux zu einem gemeinsamen OpenZFS wurde umgesetzt. ZFSonLinux bildet die Basis dieser Zusammenführung, ZFSonFreeBSD und ZFSonIllumos wurden mit diesem zusammengeführt. Das sich so ergebene neue OpenZFS ersetzt ZFSonFreeBSD. Dies bringt eine Reihe Veränderungen: Eine große Anzahl Fehlerbereinigungen und damit erhöhte Stabilität. Dies betrifft vor allem Randfälle. Zum Teil deutliche Performanceverbesserungen. Diese resultieren aus einer großen Anzahl einzelner Verbesserungen, vor allem im Bereich der Allokationsstrategien, des ARC und auf SSDs mit der entsprechenden Hardwareunterstützung der TRIM-Strategien. Zudem sind viele Funktionen, die bisher in einem FreeBSD<->Illumos-Kompatibilitätslayer implementiert waren, in FreeBSDs virtuelles Dateisystem und die virtuelle Speicherverwaltung übernommen worden und integrieren sich damit besser in dem restlichen Kernel. Verbesserungen an der Bedienbarkeit. Hier sind vor allem das Management der ashift-Werte zum Erzwingen einer minimalen Blocksize und TRIM zu nennen. Erstere sind anstatt durch sysctl jetzt als normale Pool-Properties implementiert. Letzteres wurde unter dem neuen zpool trim Kommando zusammengefasst. Diverse kleinere und größere neue Funktionen. Die wichtigsten dieser sind:
Der L2ARC ist nun persistent, bleibt also über Reboots hinweg erhalten. Für Dataset-Kompression wird jetzt der zstd Algorithmus unterstützt. Dataset-Encryption erlaubt das Verschlüsseln einzelner Datasets, sowie das Erstellen verschlüsselter Streams per zfs send. Mit draid wird ein neuer vdev-Typ unterstützt, welcher die Vorteile von raidz mit einem effizienteren Rebuild verbindet. Für Details siehe: https://openzfs.github.io/openzfs-docs/Basic Concepts/dRAID Howto.html Die Performance sehr großer UFS2-Dateisysteme von über 100 Terabyte wurde deutlich verbessert. fsck ist jetzt teilweise drastisch schneller und kommt mit weniger RAM aus. Dank verschiedener Maßnahmen kann UFS2 Korruption zur Laufzeit erkennen und anders als bisher ohne eine Kernelpanic auf diese reagieren. Um diese Verbesserungen nutzen zu können, muss einmalig fsck auf dem Dateisystem aufgeführt werden. Die NVMe-Unterstützung hat weitere Verbesserungen erhalten.Dies ist vor allem der Unterstützung neuerer Protokollversionen zu verdanken, welche ein besseres Drive-Management ermöglichen. Unter anderem sind dies die Unterstützung für Selbsttests, auszulösen mit nvmecontrol, das Reagieren auf durch die NVMe-SSD ausgelöste Controllerresets und Optimierungen an dem bereits mit FreeBSD 12.1 eingeführten SSD-Powermanagement. Alle GEOM-Klassen unterstützen jetzt den mit FreeBSD 12.0 eingeführten Fast-Path Mode, also das überspringen nicht notwendiger GEOM-Klassen. Dies bringt vor allem in komplexen Setups, welche mehrere GEOM-Klassen übereinander stapeln, deutliche Performancegewinne.
Virtualisierung: Bhyve hat diverse Verbesserungen erhalten. Die wichtigsten Verbesserungen sind:
Zwischen Host und Gast geteilte Verzeichnisse per virtio-9p. Zuverlässigeres PCI-Passthrough von Geräten des Hosts in den Gast. Deutlich verbesserte VNC-Unterstützung, einschließlich verbesserter Clientkompatibilität. Die COM3 und COM4 seriellen Ports werden jetzt unterstützt. Es kann jetzt eine Intel HDA Soundkarte emuliert werden. Durch diese kann der Gast über den Host Sounds ausgeben. Jails erlauben es, durch die neue suser Einstellung, dem Nutzer root seine Sonderrechte zu entziehen. Er wird zu einem normalen unprivilegierten Nutzer degradiert. Die virtio-Treiber wurden deutlich vebessert. Unter anderem wird nun das Virtio PCI Interface unterstützt. Neben verbesserter Performance bringt dies eine deutlich bessere Kompatibilität mit virtio nutzenden Hypervisoren, beispielsweise kann FreeBSD nun in der virtuellen "Q35" Maschine von qemu ausgeführt werden.
FreeBSD 13.0 – Release Notes
ARM64 verdrängt i386 im Tier 1
Im Rahmen des neuen Major Release nimmt die ARM64-Architektur den Platz von i386, der 32-Bit x86-Architektur, im Tier 1 ein und wird wie AMD64 zukünftig mit Priorität sowie erweitertem Support behandelt.
Durch die Verwendung neuer Synchronisationsmechanismen, sogenannter Epochs, in allen leistungskritischen Codepfaden profitieren sowohl kleinere CPUs als auch solche mit 64 Threads und mehr von FreeBSD 13.0.
Weitere Informationen liefert die offizielle Ankündigung sowie die deutschsprachige Website BSDForum.de . Das FreeBSD-Projekt selbst demonstriert in einem rund achtminütigen YouTube-Video allen Neuerungen von FreeBSD 13.0.
Download auf ComputerBase
FreeBSD 13.0 kann wie gewohnt direkt unterhalb dieser Meldung aus dem Download-Archiv von ComputerBase heruntergeladen werden.
Die Redaktion dankt Community-Mitglied „Lord_X “ für den Hinweis zu dieser Meldung.
Downloads
4,7 Sterne
FreeBSD ist ein Nischen-Betriebssystem, das einige Gemeinsamkeiten mit Linux hat.
Version 14.1 Deutsch
Version 14.2 Beta 3 Deutsch