FreeBSD 14 kann bis zu 1024 CPUs, bringt OpenZFS 2.2 und Firmware-Management

Brachten bisherige Releases meist neue Funktionen, gelingt mit dem jetzt veröffentlichten FreeBSD 14 eine deutliche Modernisierung des Gesamtsystems.

In Pocket speichern vorlesen Druckansicht 77 Kommentare lesen

(Bild: Screenshot/Montage heise online / dmk)

Lesezeit: 8 Min.
Von
  • Michael Plura
Inhaltsverzeichnis

Gut zweieinhalb Jahre nach Erscheinen von FreeBSD 13 hat das Entwickler-Team FreeBSD 14 veröffentlicht. Das Release hat sich etwas verzögert, weil die Entwickler auch die in letzter Minute aufgetretenen Fehler noch beseitigen wollten. Es begann mit Release Candidate 4 (RC4), der eigentlich gar nicht geplant war. Grund waren ISA-Karten-Treiber und Giant-Lock-Code, ein OpenZFS-Update und die Emulation von Hyper-V in QEMU.

Das eigentliche Release steckte noch einmal eine Woche wegen angeblicher "non critical problems" fest. Im Laufe dieser Woche hat Glen Barber seinen Job als Release-Team-Leader hingeschmissen und wurde durch Colin Percival ersetzt.

FreeBSD 14 wird die letzte Version des OpenSource-Betriebssystem sein, das 32-bittige Hardware unterstützt. FreeBSD 15 wird, wohl abgesehen von ARMv7, ausschließlich auf 64-Bit-Architekturen laufen, aber noch 32-Bit-Software ausführen können. FreeBSD 16 soll das nicht mehr können und so ein reines 64-Bit-System werden.

Das Limit für die Anzahl der maximal unterstützten CPU-Kerne wurde mit Hinblick auf aktuelle Hardware von 256 auf 1024 angehoben. Das Limit gilt für die AMD64- und ARM64-Architekturen. Für die notwendigen Tests hat AMD den Entwicklern entsprechende Geräte zur Verfügung gestellt.

Mit FreeBSD 14 werden alle 64-bittigen Plattformen mit aktiviertem PIE (Position Independent Executables) und ASLR (Address Space Layout Randomization) ausgeliefert. Zum Vergleich, OpenBSD compiliert Binaries seit Mai 2013 für nahezu alle Architekturen mit positionsunabhängigem Code. Viele GNU/Linux-Distributionen folgten diesem Schritt in den folgenden Jahren, nur FreeBSD benötigte bis heute für dieses wichtige Sicherheitsfeature. Die Sicherheitsfunktionien PIE und ASLR sollen verhindern, dass Angreifer einfach an feste Adressen Schadcode einschleusen können.

FreeBSD 14 wurde deutlich modernisiert und läuft auf vielen modernen Plattformen, wie hier auf einem Raspberry Pi 4B.

(Bild: Screenshot / Michael Plura)

Das Application Binary Interface (ABI) der ARM64-Plattform für Linux-Systemaufrufe wurde an das ABI der AMD64-Architektur angeglichen, was das Portieren und Ausführen von GNU/Linux-Binaries auf ARM-SBCs vereinfachen dürfte.

Wie FreeBSD-Entwickler Colin Percival auf X (früher Twitter) mitteilte, soll durch einen moderneren Sortieralgorithmus der FreeBSD-Kernel massiv schneller starten. Statt seine SysInits per Bubblesort in die richtige Reihenfolge zu bringen, soll das jetzt verwendete Mergesort bis zu 100x schneller sein.

Auf dem heimischen FreeBSD-Notebook merkt man das kaum, wohl aber in den MicroVMs der Amazon Web Services (AWS FaaS "Lambda" mit Firecracker-Hypervisor). Angeblich soll FreeBSD 14 dort in 25ms starten, ein Linux-Kernel hingegen benötigt 75-80ms. Die Optimierung betrifft die AMD64-, aber auch die ARM64-Architektur, die Amazon in der Cloud häufig einsetzt.

Serielle Verbindungen, beispielsweise bei Single Board Computern wie dem Raspberry Pi, werden ab FreeBSD 14 standardmäßig mit 115.200 statt 9.600 Baud initialisiert. Das kann zu Problemen auf ältere Hardware führen, die diese "schnelle" Datenübertragung nicht schafft. Für spätere SSH-Verbindungen wurde OpenSSH auf Version 9.5p1 aktualisiert.

Zu den vielen weiteren Änderungen in FreeBSD 14, die in den Release-Notes aufgeführt sind, gehören außerdem kinst::<function>:<instruction> als neuer DTrace-Provider, boottrace als neue Schnittstelle zum Aufzeichnen von Trace-Ereignissen während des Systemstarts und beim Herunterfahren, das TLS-Offloading des Kernels für TLS 1.3 auf der Empfangsseite und eine erste zarte Unterstützung von WiFi 6 in WPA.

Eigentlich wollte man ISA-Treiber, die nicht PnP-fähig sind (beispielsweise alte Soundkarten, die über Steckbrücken konfiguriert werden) schon lange entfernt haben. Das scheint auch nötig zu sein, denn manche dieser Karten laufen seit einem Jahrzehnt nicht mehr mit den FreeBSD-Treibern. Andererseits werden ISA-Karten noch immer in manchen industriellen Anwendungen benutzt. Da wird man künftig auf OpenBSD oder vielleicht eher auf NetBSD umsteigen müssen – oder teure neue Hardware anschaffen. Nicht zu vergessen: Auch auf manchem modernen Mainboard ist die Real Time Clock (RTC, atrtc(4)) noch immer via ISA angebunden.

Auch sollten mehrere Treiber von Giant-Locks bereinigt werden, die auf Systemen mit mehreren CPU-Kernen dafür sorgen, dass immer nur ein einziger Thread zu einem bestimmten Zeitpunkt auf Kernelebene laufen kann. Die ISA- und die Giant-Lock-Problematik sollen nun erst mit FreeBSD 15 gelöst werden. Ebenfalls als Stolperstein erwies sich ein notwendiger Bugfix für OpenZFS beim Klonen von Blöcken zwischen verschlüsselten und unverschlüsselten ZFS-Dateisystemen sowie Abstürze durch die Hyper-V-Emulation in QEMU. Beides wurde über den RC4 in den Code eingepflegt.

OpenZFS Version 2.2 ist fester Bestandteil des FreeBSD 14 Basissystems. Neu in dieser Version des Dateisystems ist unter anderem das Block Cloning, Blake3-Checksummen sowie bessere Performance durch einen voll adaptiven Adaptive Replacement Cache (ARC) und I/O-Prefetch-Optimierungen.

Mit makefs(8) formatiert man Datenträger oder Partitionen mit verschiedenen Dateisystemen. Experimentell kann dazu jetzt neben ffs (BSD) und msdos (FAT12&16/32) auch ZFS verwendet werden. Theoretisch kann man damit auf einem USB-Stick einen portablen ZFS-Pool anlegen.

Bhyve, der von Grund auf neu entwickelte Hypervisor von FreeBSD, soll in Zukunft ein optionales emuliertes Trusted Plattform Module (TPM) bekommen. Mit dem aktuellen Code können Anfragen von Bhyve-Gästen lediglich an das physische Trusted Plattform Module des Hosts weitergeleitet werden – was unter Sicherheitsaspekten vielleicht keine so gute Idee ist. Das Durchreichen (passthrough) von GPUs zu Bhyve-Gästen wurde weiter verbessert, funktioniert aber nicht immer und gilt nur für AMD- und Intel-GPUs.

FreeBSD-Administratoren sollten beachten, dass die Standard-Shell für root ab FreeBSD 14 sh(1) und nicht mehr csh(1) ist – man muss eventuelle Konfigurationsdateien (.cshrc) portieren, wobei ein Blick in den Abschnitt "Invocation" der sh(1)-Manualpage hilft. Als standardmäßiger Mail Transport Agent (MTA) wurde das gruselige sendmail(8) durch Dragonfly Mail Agent dma(8) ersetzt. Der Name deutet an, dass dieser einfache MTA aus dem Dragonfly BSD-Universum stammt und auf den Home- und Office-Einsatz ausgerichtet wurde. Für Upgrades von FreeBSD 13 auf FreeBSD 14 wichtig: die Home-Verzeichnisse für neue Benutzer liegen nicht mehr wie zuvor unter /usr/home/<Benutzer> mit einem symbolischen Link auf /home/<Benutzer>, sondern werden jetzt direkt unter /home angelegt.

Das angestaubte portsnap(8), mit dem der Ports Tree (Source Code) von FreeBSD heruntergeladen werden konnte, wurde aus FreeBSD 14 entfernt. Stattdessen sollen Administratoren den Code per git ausschecken:

git clone https://git.freebsd.org/ports.git /usr/ports

Die Portsnap-Server im Internet wollen die Entwickler mit dem Support-Ende von FreeBSD 13 abschalten. Auch mergemaster(8) wurde durch etcupdate(8) ersetzt, um nach einem Update/Upgrade die Dateien im /etc-Verzeichnis anzupassen.

Die LLVM-Toolchain wurde auf Version 16.0.6, das GCC-Toolset auf Version 12.5 aktualisiert, wobei auch ältere und neuere Versionen installiert werden können. Der LLVM Memory Sanitizer kann nun auf AMD64- und ARM64-Kernel angewendet werden. Das dann Kmsan (Kernel Memory SANitizer) genannte Subsystem nutzt den Compiler, um die Verwendung von nicht initialisierten Kernel-Speicher aufzuspüren und Exploits vorzubeugen.

Ähnlich wie fw_update(8) von OpenBSD installiert das neue fwget(8) auf einem laufenden FreeBSD 14-System sämtliche benötigte Firmware. Das funktioniert bislang nur für PCI-Geräte, soll aber ausgebaut werden.

Das FreeBSD 14.0-RELEASE steht unter der vollkommen freien BSD-Lizenz und ist in unterschiedlichen Formaten ab sofort für folgende Plattformen auf den Download-Servern von FreeBSD verfügbar: AMD64, i386, ARM64/aarch64, ARMv6, ARMv7, PowerPC, PowerPC64 und RISCV64. Images für Cloud-Instanzen stehen auf Amazon EC2, Google Computer Engine und für Hashicorp/Atlas Vagrant zur Verfügung. Alle Neuerungen sind in den Release Notes zu FreeBSD 14 auf der FreeBSD-Projektseite aufgeführt.

Die zuvor aktuelle Version FreeBSD 13.2 erblickte im April dieses Jahres das Licht der Welt.

Aktuelle Linux/Unix-Versionen

Der aktuelle Stand der wichtigsten Unix- und Linux-Distributionen:

(dmk)