Nach 11 Monaten Entwicklung wurde das Release von FreeBSD 13.2 veröffentlicht. Installationsabbilder wurden für die Architekturen amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 und riscv64 erstellt. Zusätzlich wurden Builds für Virtualisierungssysteme (QCOW2, VHD, VMDK, raw) und Cloud-Umgebungen wie Amazon EC2, Google Compute Engine und Vagrant vorbereitet.
Wesentliche Änderungen:
- Die Möglichkeit zur Erstellung von Snapshots für die UFS- und FFS-Dateisysteme mit aktivierter Protokollierung (Soft Updates) wurde implementiert. Zudem wurde die Unterstützung für das Hintergrundsichern von Dumps (Ausführung von dump mit der Flagge „-L“) mit dem Inhalt der eingehängten UFS-Dateisysteme bei aktivierter Protokollierung hinzugefügt. Die Möglichkeit, die Integrität mit dem fsck-Werkzeug im Hintergrund zu überprüfen, bleibt weiterhin bestehen, wenn die Protokollierung verwendet wird.
- In die Hauptkomponenten wurde der auf Kernel-Ebene arbeitende Treiber wg mit der Implementierung der Netzwerkschnittstelle für VPN WireGuard aufgenommen. Um die für den Treiber erforderlichen kryptografischen Algorithmen zu nutzen, wurde die API der Kryptosubsysteme des FreeBSD-Kernels erweitert, in die eine Bindung integriert wurde, die es ermöglicht, nicht in FreeBSD unterstützte Algorithmen aus der Bibliothek libsodium über die Standard-Krypto-API zu verwenden. Im Verlauf der Entwicklung wurde auch eine Optimierung vorgenommen, um eine gleichmäßige Lastverteilung bei der Zuordnung von Verschlüsselungs- und Entschlüsselungsaufgaben zu den CPU-Kernen zu erreichen, was die Kosten für die Verarbeitung von WireGuard-Paketen reduzierte.
Ein früherer Versuch, WireGuard in FreeBSD zu integrieren, wurde 2020 unternommen, endete jedoch in einem Skandal, in dessen Folge der bereits hinzugefügte Code aufgrund mangelhafter Qualität, nachlässiger Handhabung von Puffern, Verwendung von Platzhaltern anstelle von Überprüfungen, unvollständiger Implementierung des Protokolls und Verletzung der GPL-Lizenz entfernt wurde. Die neue Implementierung wurde gemeinsam von den Hauptentwicklungsteams von FreeBSD und WireGuard unter Beteiligung von Jason Donenfeld, dem Autor von VPN WireGuard, und John Baldwin, einem bekannten FreeBSD-Entwickler, vorbereitet. Vor der Annahme des neuen Codes erfolgte unter der Unterstützung der FreeBSD Foundation eine vollständige Überprüfung der Änderungen.
- Die Unterstützung des Kommunikationsprotokolls Netlink (RFC 3549), das in Linux für die Interaktion des Kernels mit Prozessen im Benutzerspeicher verwendet wird, wurde implementiert. Das Projekt beschränkt sich auf die Unterstützung der NETLINK_ROUTE-Betriebsfamilie zur Verwaltung des Zustands des Netzwerk-Subsystems im Kernel, was die Verwendung des Linux-Tools ip aus dem iproute2-Paket zur Verwaltung von Netzwerkinterfaces unter FreeBSD ermöglicht, zur Konfiguration IP-Adressen, zur Einrichtung von Routing und zur Manipulation von Nexthop-Objekten, die Daten über den Zustand speichern, die für die Übertragung von Paketen an den gewünschten Zielpunkt verwendet werden.
- Bei allen ausführbaren Dateien des Grundsystems auf 64-Bit-Plattformen ist standardmäßig die Adressraumrandomisierung (ASLR, Address Space Layout Randomization) aktiviert. Um ASLR selektiv zu deaktivieren, können die Befehle „proccontrol -m aslr -s disable“ oder „elfctl -e +noaslr“ verwendet werden.
- Im ipfw werden zur Suche nach MAC-Adressen Basis-Tabellen (Radix-Tabellen) verwendet, was es ermöglicht, Tabellen mit MAC-Adressen zu erstellen und sie zur Filterung des Datenverkehrs zu nutzen. Zum Beispiel: ipfw table 1 create type mac ipfw table 1 add 11:22:33:44:55:66/48 ipfw add skipto tablearg src-mac ‘table(1)’ ipfw add deny src-mac ‘table(1, 100)’ ipfw add deny lookup dst-mac 1
- Die Kernel-Module dpdk_lpm4 und dpdk_lpm6 mit der Implementierung des Routing-Algorithmus DIR-24-8 für IPv4/IPv6 wurden hinzugefügt und sind über loader.conf zum Herunterladen verfügbar, was die Optimierung der Routing-Funktionen für Hosts mit sehr großen Routingtables ermöglicht (in Tests wird eine Geschwindigkeitssteigerung von bis zu 25 % beobachtet). Zum Konfigurieren der Module kann das integrierte Tool route verwendet werden (Option FIB_ALGO hinzugefügt).
- Die Implementierung des Dateisystems ZFS wurde auf die Version OpenZFS 2.1.9 aktualisiert. Im Startskript zfskeys wird das automatische Laden von Schlüsseln unterstützt, die im ZFS-FS gespeichert sind. Ein neues RC-Skript zpoolreguid wurde hinzugefügt, um einer oder mehreren zpools eine GUID zuzuweisen (z. B. nützlich für Virtualisierungsumgebungen mit gemeinsamen Daten).
- Im Hypervisor Bhyve und im Modul vmm wurde die Unterstützung für die Anbindung von mehr als 15 virtuellen CPUs an das Gastbetriebssystem implementiert (gesteuert über sysctl hw.vmm.maxcpu). In der bhyve-Dienstprogramm wurde die Emulation des virtio-input-Geräts integriert, mit dem Eingabeveranstaltungen von Tastatur und Maus in das Gastbetriebssystem eingefügt werden können.
- In KTLS, der TLS-Protokollimplementierung auf Kernel-Level in FreeBSD, wurde die Unterstützung für die hardwarebeschleunigte TLS 1.3 hinzugefügt, indem bestimmte Operationen zur Verarbeitung verschlüsselter eingehender Pakete auf die Netzwerkkarte ausgelagert wurden. Zuvor war eine solche Möglichkeit für TLS 1.1 und TLS 1.2 verfügbar.
- Im Startskript growfs wurde beim Erweitern des Root-Dateisystems die Hinzufügung einer Swap-Partition sichergestellt, falls eine solche Partition ursprünglich fehlte (z. B. nützlich bei der Installation eines fertigen Systemabbilds auf einer SD-Karte). Um die Größe des Swap zu steuern, wurde in rc.conf ein neuer Parameter growfs_swap_size hinzugefügt.
- Im Startskript hostid wurde die Generierung einer zufälligen UUID sichergestellt, falls die Datei /etc/hostid fehlt und die UUID nicht von der Hardware abgerufen werden kann. Außerdem wurde die Datei /etc/machine-id mit einer kompakten Darstellung der Host-ID (ohne Bindestriche) hinzugefügt.
- In rc.conf wurden die Variablen defaultrouter_fibN und ipv6_defaultrouter_fibN hinzugefügt, über die standardmäßige Routen in FIB-Tabellen hinzugefügt werden können, die sich von der primären unterscheiden.
- In die Bibliothek libmd wurde die Unterstützung für die Hashes SHA-512/224 hinzugefügt.
- In der pthread-Bibliothek wurde die Unterstützung für die Semantik der in Linux verwendeten Funktionen implementiert.
- In kdump wurde die Unterstützung für die Dekodierung von Systemaufrufen in Linux hinzugefügt. In kdump und sysdecode wurde die Unterstützung für die Traces von Systemaufrufen im Linux-Stil hinzugefügt.
- Das killall-Werkzeug erhielt die Möglichkeit, Signale an Prozesse zu senden, die an ein bestimmtes Terminal gebunden sind (zum Beispiel „killall -t pts/1“).
- Die Utility nproc wurde hinzugefügt, um die Anzahl der dem aktuellen Prozess verfügbaren Rechenblöcke anzuzeigen.
- In die Utility pciconf wurde die Unterstützung für die Dekodierung von ACS-Parametern (Access Control Services) hinzugefügt.
- Im Kernel wurde die Einstellung SPLIT_KERNEL_DEBUG hinzugefügt, die es ermöglicht, Debug-Informationen für den Kernel und die Kernel-Module in separate Dateien zu speichern.
- Im ABI linux wurde die Implementierung der Unterstützung für den Mechanismus vDSO (virtual dynamic shared objects) fast abgeschlossen, der eine begrenzte Anzahl von Systemaufrufen bereitstellt, die im Benutzerspeicher ohne Kontextwechsel verfügbar sind. Das ABI linux auf ARM64-Systemen wurde auf Parität mit der Implementierung für die AMD64-Architektur gebracht.
- Die Unterstützung der Hardware wurde verbessert. Die Unterstützung für die Leistungsüberwachung (hwpmc) für Intel Alder Lake CPUs wurde hinzugefügt. Der iwlwifi-Treiber für Intel Wireless-Karten wurde aktualisiert und unterstützt nun neue Chips und den Standard 802.11ac. Ein rtw88-Treiber für Realtek Wireless-Karten mit PCI-Schnittstelle wurde hinzugefügt. Die Möglichkeiten der Linux KPI-Schicht wurden erweitert, um die Verwendung von Linux-Treibern in FreeBSD zu ermöglichen.
- Die OpenSSL-Bibliothek wurde auf Version 1.1.1t aktualisiert, LLVM/Clang auf Version 14.0.5, und der SSH-Server und -Client wurden auf OpenSSH 9.2p1 aktualisiert (in der vorherigen Version wurde OpenSSH 8.8p1 verwendet). Auch die Versionen von bc 6.2.4, expat 2.5.0, file 5.43, less 608, libarchive 3.6.2, sendmail 8.17.1, sqlite 3.40.1, unbound 1.17.1 und zlib 1.2.13 wurden aktualisiert.
Außerdem wurde angekündigt, dass die einmaligen OPIE-Passwörter, die Treiber ce und cp, die Treiber für Karten mit ISA-Schnittstelle, die Programme mergemaster und minigzip, die ATM-Komponenten in netgraph (NgATM), der Hintergrunddienst telnetd und die VINUM-Klasse in geom ab der FreeBSD 14.0-Version als veraltet eingestuft und entfernt werden.
Quelle: opennet.ru
