Nach zweieinhalb Jahren seit der Veröffentlichung der Version 13.0 wurde das Release FreeBSD 14.0 erstellt. Installations-Images wurden für die Architekturen amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv7, aarch64 und riscv64 vorbereitet. Zusätzlich wurden Builds für Virtualisierungssysteme (QCOW2, VHD, VMDK, raw) und Cloud-Umgebungen wie Amazon EC2, Google Compute Engine und Vagrant bereitgestellt. Die FreeBSD 14-Version wird die letzte mit Unterstützung für 32-Bit-Plattformen sein. In FreeBSD 15 wird es nur noch Unterstützung für 64-Bit-Systeme geben, aber die Möglichkeit, 32-Bit-Anwendungen zu kompilieren und den COMPAT_FREEBSD32-Modus für die Ausführung von 32-Bit-Programmen in einer 64-Bit-Umgebung zu verwenden, bleibt erhalten.
Hauptänderungen:
- Als Standard-Shell für den Benutzer root ist jetzt /bin/sh eingestellt.
- Für NVME-Geräte wurde standardmäßig auf allen Plattformen der Treiber nda verwendet. Um den alten Treiber nvd wiederherzustellen, gibt es in loader.conf die Einstellung „hw.nvme.use_nvd=1“.
- Ein neues Dienstprogramm „fwget“ wurde hinzugefügt, das die Hardware identifiziert, die Firmware benötigt, und die entsprechenden Firmware-Pakete installiert. Derzeit werden nur PCI-Geräte und Firmware für Intel- und AMD-GPUs unterstützt.
- Das neue Dienstprogramm base64 zum Kodieren und Dekodieren von Daten im base64-Format wurde hinzugefügt.
- Das Dienstprogramm tcpsso wurde hinzugefügt, das es ermöglicht, Socket-Optionen für bestehende TCP-Verbindungen einzustellen (zum Beispiel kann das Überlastkontrollmodul oder der TCP-Stack geändert werden).
- Als Standard-Mail-Zustellagent wurde anstelle von sendmail dma (DragonFly Mail Agent) eingesetzt. Sendmail bleibt in der Grundausstattung und wurde auf Version 8.17.1 aktualisiert.
- In KTLS, der Implementierung des TLS-Protokolls, die auf Kernel-Ebene von FreeBSD arbeitet, wurde die Unterstützung für die hardwarebasierte Beschleunigung von TLS 1.3 auf der Empfängerseite hinzugefügt. Die Beschleunigung erfolgt durch das Outsourcing bestimmter Operationen, die mit der Verarbeitung von verschlüsselten Paketen verbunden sind, an die Netzwerkkarte.
- Die Konfigurationsdatei jail.conf wurde um die Direktive „.include“ erweitert, die es ermöglicht, zusätzliche Dateien beim Laden der Konfiguration einzufügen, wobei Pfade mit Wildcards verwendet werden dürfen. Der sysctl-Parameter security.bsd.see_jail_proc wurde erweitert, sodass unbefugte Benutzer in einer separaten Jail-Umgebung jetzt gezwungen werden können, das Beenden, die Prioritätsänderung und das Debugging von Prozessen zu untersagen.
- Die Programme pw und bsdinstall erstellen nun standardmäßig Benutzer im Verzeichnis "/home" anstelle von "/usr/home". Der symbolische Link für "/home", der auf "/usr/home" verweist, wird nicht mehr erstellt.
- Die Build-Einstellung PROFILE ist standardmäßig deaktiviert – profilierte Versionen der Systembibliotheken werden nicht mehr bereitgestellt. Stattdessen sollten Hardware-Profiling-Tools (hwpmc) verwendet werden.
- Die Erstellung von ausführbaren Dateien für 64-Bit-Architekturen im PIE-Modus (Position Independent Executable) wurde aktiviert.
- Der Hypervisor Bhyve hat die Möglichkeit zur Durchleitung des Zugriffs auf TPM (Trusted Platform Module) und GPU (in virtuellen Umgebungen für AMD- und Intel-Chips) erhalten.
- Die Implementierung des Dateisystems ZFS wurde auf die Version OpenZFS 2.2 aktualisiert. Das Dienstprogramm makefs unterstützt nun das Dateisystem ZFS. Es ist möglich, einen ZFS-Pool zu erstellen, der mit einer einzelnen virtuellen Disk vdev verbunden ist.
- Die Anzahl der unterstützten CPU-Kerne (Parameter MAXCPU) wurde von 256 auf 1024 in Systemen der Architektur amd64 und arm64 erhöht.
- In UFS für Konfigurationen, in denen das Journaling (soft updates) aktiviert ist, wird die Durchführung einer Hintergrundüberprüfung des Dateisystems unter Verwendung von UFS-Snapshots erlaubt. Es wurden zusätzliche Hash-Checks in Superblöcke, Zylindergruppen-Maps und Inodes eingefügt, um Beschädigungen zu erkennen.
- Ein Dateisystem tarfs wurde hinzugefügt, das mit mit zstd komprimierten tar-Archiven verwendet werden kann.
- Das Tool boottrace wurde hinzugefügt, um Ereignisse zu verfolgen, die während des Bootvorgangs und der Beendigung des Systems aufgetreten sind.
- Die Kernel-Konfiguration FIRECRACKER wurde hinzugefügt, um den Start von FreeBSD in der Firecracker-Virtualisierungsumgebung zu unterstützen, die für den Betrieb von virtuellen Maschinen mit minimalen Overheadkosten ausgelegt ist. Die Bootzeit des FreeBSD 14-Kernels unter Firecracker beträgt nun 25 Millisekunden, was es ermöglicht, FreeBSD-Umgebungen nach Bedarf für die Umsetzung einer serverlosen Infrastruktur zu starten.
- Im Bootloader, der in Lua geschrieben ist, wurde in einer speziellen Sandbox-Umgebung die Unterstützung für die Ausführung von Lua-Dateien, die im Verzeichnis loader_conf_files gespeichert sind, implementiert.
- Die Unterstützung für NFS wurde erweitert. Eine neue Mount-Option "syskrb5" wurde hinzugefügt, um Kerberos in NFSv 4.1/4.2 zu unterstützen, sowie die Unterstützung der Operation ExchangeID. Es ist möglich, nfsd, nfsuserd, mountd, gssd und rpc.tlsservd in einer isolierten Netzwerkumgebung vnet auszuführen.
- Im Skript growfs wurde die Möglichkeit implementiert, eine Swap-Partition am Ende des erweiterbaren Bereichs auf der Festplatte zu platzieren.
- Ein neuer DTrace-Anbieter kinst (dtrace_kinst) wurde hinzugefügt, der die Nachverfolgung von Kernelstrukturen ermöglicht.
- Das Kryptosystem des Kernels unterstützt nun den Verschlüsselungsalgorithmus XChaCha20-Poly1035 AEAD sowie eine API zur Verwendung der elliptischen Kurve curve25519 (für WireGuard).
- Die Zeit für den Neustart wurde verkürzt. Der sysctl-Parameter kern.reboot_wait_time wurde hinzugefügt, mit dem die Verzögerung vor dem tatsächlichen Neustart nach dem Ausgeben aller Diagnosenachrichten an die Konsole geändert werden kann. Standardmäßig wurde die Verzögerung entfernt.
- Das Kernel verfügt jetzt über das Subsystem timerfd, das das Portieren von Programmen aus Linux erleichtert.
- Der sysctl machdep.mitigations.zenbleed.enable wurde hinzugefügt, um die Zenbleed-Sicherheitsanfälligkeit in AMD Zen2-Prozessoren zu blockieren.
- In wpa_supplicant und hostapd wurde die Unterstützung für Wi-Fi 6 hinzugefügt. Der Treiber iwlwifi unterstützt Chips von Intel, die Wi-Fi 6E AX411/AX211/AX210 unterstützen.
- Das Kernel auf amd64-Systemen unterstützt nun die Werkzeuge AddressSanitizer und MemorySanitizer des LLVM-Projekts.
- In den rc.d-Skripten ist die Verwendung der Methode status erlaubt, auch wenn im Skript der Programmname (procname) und die PID-Datei nicht definiert sind.
- Die Datenübertragungsgeschwindigkeit über die serielle Schnittstelle im Kernel, Bootloadern und Benutzerraum wurde standardmäßig von 9600 auf 115200 bps erhöht. Der Standardton für den Piepton wurde auf 800 Hz eingestellt. Es wurde eine Integration mit devd für die Ausgabe des Pieptons über die Soundkarte gewährleistet. Für die Konsole vt ist der Piepton standardmäßig deaktiviert (zum Aktivieren müssen die Befehle «sysctl kern.vt.enable_bell=1» und «kbdcontrol -b normal» ausgeführt werden).
- Die Unterstützung für die Architektur der Hardwarebeschleunigung von Netzwerkoperationen NXP DPAA2 (Data Path Acceleration Architecture Gen2) wurde verbessert.
- Der Treiber igc für Ethernet-Controller von Intel I225, der eine Geschwindigkeit von 2,5 Gbps unterstützt, wurde hinzugefügt.
- Standardmäßig ist die Einstellung net.inet.tcp.nolocaltimewait aktiviert, die die Erstellung von Timewait-Einträgen für TCP-Verbindungen, die auf der lokalen Systemseite beendet wurden, deaktiviert.
- Die Unterstützung des Kommunikationsprotokolls Netlink (RFC 3549), das in Linux zur Interaktion zwischen Kernel und Benutzerprozessen verwendet wird, wurde erweitert und ist standardmäßig aktiviert. Einige Netzwerkdienstprogramme wurden auf die Verwendung von Netlink umgestellt.
- Der Paketfilter pf gewährleistet die Kompatibilität mit der Syntax und dem Verhalten der Paketnormalisierungsoperationen (Scrubbing) der Version pf aus OpenBSD. In pfsync wurde die Möglichkeit zur Verwendung von IPv6-Transport implementiert. Das Format von pfsync-Paketen wurde erweitert, um Warteschlangen, Paketnormalisierung und route-to-Regeln zu unterstützen.
- In die Netzwerkschnittstelle if_stf (IPv6 über IPv4) wurde hinzugefügt IPv6-Unterstützung Rapid Deployment (RFC 5969). Der Modus IPv6 nodeinfo (RFC 4620) ist standardmäßig deaktiviert.
- Der sysctl-Parameter net.inet.tcp.nolocaltimewait ist standardmäßig aktiviert und verhindert die Erstellung von Einträgen mit dem Zustand timewait für lokal unterbrochene TCP-Verbindungen.
- Standardmäßig verwendet TCP den Netzwerküberlastungssteuerungsmechanismus CUBIC anstelle von NewReno, was die Nutzung der verfügbaren Bandbreite erweitert.
- In IPv4 wurde das Senden von Broadcast-Paketen an die Null-Adresse des Subnetzes deaktiviert, es sei denn, diese Adresse ist ausdrücklich als Broadcast-Adresse angegeben. Diese Änderung ermöglicht die Verwendung von Adressen für Hosts, die auf „.0“ enden.
- Die Einstellungen von OpenSSH wurden geändert: In scp wird standardmäßig das SFTP-Protokoll anstelle von scp/rcp verwendet, die Unterstützung für RSA/SHA-1-Signaturen wurde deaktiviert, die Parameter VerifyHostKeyDNS und X11Forwarding sind auf „no“ gesetzt, die Direktive VersionAddendum wurde entfernt und die Unterstützung für HPN-Einstellungen wurde eingestellt.
- Der Dienst date hat die Option „-z“ zur Umwandlung von Zeitzonen hinzugefügt.
- Der Dienst diff hat die Option „—color“ zur anschaulichen Visualisierung von Änderungen durch Farbe hinzugefügt.
- Der Dienst sleep unterstützt nun Maßeinheiten, die von Sekunden abweichen (zum Beispiel kann „sleep 1h 30m“ angegeben werden).
- Die Dienste head und tail unterstützen jetzt die Optionen „-q“ und „-h“ und ermöglichen die Angabe von Größen mit SI-Einheitensuffixen. In head wurde die Begrenzung für die maximale Zeilenanzahl von 2^31 entfernt.
- Der Dienst systat hat den Befehl „iolat“ zur Anzeige von E/A-Verzögerungen, berechnet vom CAM-Planer, hinzugefügt.
- Die Bibliothek libncursesw wurde in zwei Bibliotheken, libtinfow und libncursesw, aufgeteilt. Die Unterstützung für die Verwendung der terminfo-Datenbank in ncurses, und nicht nur für termcap, wurde hinzugefügt.
- Für die Architektur aarch64 (arm64) wurde die Build-Option COMPAT_LIB32 implementiert und standardmäßig aktiviert, um 32-Bit-Bibliotheken für ARM64-Systeme zu erstellen, die die Ausführung von Programmen ermöglichen, die für die Plattform armv7 kompiliert wurden.
- Die Unterstützung für Cloud-Systeme wurde verbessert. Für AWS EC2 wurden experimentelle Builds mit dem Root-FS ZFS und cloud-init hinzugefügt. Für Azure stehen Images für die Architekturen arm64 und amd64 zur Verfügung, wahlweise mit UFS oder ZFS. Ein Treiber für die virtuelle Netzwerkkarte gve (Google Virtual NIC) wurde hinzugefügt.
- In das ACPI-System wurde die Unterstützung für den Schwellwert _CR3 hinzugefügt, der es ermöglicht, eine Temperatur festzulegen, bei deren Erreichung das System in den Energiesparmodus (S3) versetzt wird.
- Die Versionen von Drittanbieteranwendungen und -bibliotheken, die im Basissystem enthalten sind, wurden aktualisiert: OpenSSH 9.5p1, OpenSSL 3.0.12 (früher wurde die Version 1.1.1 verwendet), awk 2021072, bc 6.6.0, libbsdxml 2.4.7, libfido2 1.13.0, tcpdump 4.99.4, libpcap 1.10.4, xz 5.4.3, zlib 1.3, zstd 1.5.2. Die Implementierung des Werkzeugs objdump wurde durch llvm-objdump ersetzt. Der Compiler Clang wurde auf die Version 16 aktualisiert.
- Es wurde eine Bereinigung veralteter Systeme durchgeführt:
- Die Unterstützung für Einmalpasswörter OPIE wurde aus dem Basissystem entfernt (zur Wiederverwendung kann das Port security/opie installiert werden).
- Die Treiber für Soundkarten mit ISA-Schnittstelle wurden entfernt.
- Die Werkzeuge fmtree und minigzip wurden entfernt.
- Die Komponenten ATM in netgraph (NgATM) wurden entfernt.
- Der Hintergrundprozess telnetd wurde entfernt (das Port net/freebsd-telnetd kann verwendet werden).
- Die Klasse VINUM in geom wurde entfernt.
- Veraltete Treiber wie amr, iscsi_initiator, iir, mn, mly, nlmrsa und twa wurden entfernt.
- Der Parameter VESA wurde aus den Kernen GENERIC und MINIMAL entfernt.
- Die Unterstützung für asymmetrische kryptografische Operationen wurde aus dem auf Kernel-Ebene arbeitenden kryptografischen Framework OCF (Open Cryptographic Framework) entfernt.
- Das Werkzeug mergemaster wurde als veraltet erklärt, stattdessen sollte etcupdate verwendet werden.
- Das Werkzeug portsnap wurde entfernt (zum Auspacken von Ports sollte «git clone https://git.FreeBSD.org/ports.git /usr/ports» verwendet werden).
- Die Erstellung von Builds für die Architektur armv6 wurde eingestellt.
- Die Unterstützung für die Architektur MIPS wurde entfernt.
Quelle: opennet.ru
