Nach zweieinhalb Jahren seit der Veröffentlichung von Branch 13.0 ist das Release von FreeBSD 14.0 bereitgestellt worden. Installationsimages wurden für die Architekturen amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, 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. Branch FreeBSD 14 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, jedoch bleibt die Möglichkeit bestehen, 32-Bit-Programme zu erstellen und den MODUS COMPAT_FREEBSD32 zu verwenden, um 32-Bit-Executable-Dateien in einer 64-Bit-Umgebung auszuführen.
Wesentliche Änderungen:
- Der Standard-Shell-Interpreter für den Benutzer root ist nun auf /bin/sh gesetzt.
- Für NVME-Geräte wird standardmäßig auf allen Plattformen der Treiber nda verwendet. Um zum alten Treiber nvd zurückzukehren, kann in loader.conf die Einstellung „hw.nvme.use_nvd=1“ vorgenommen werden.
- Ein neues Tool namens „fwget“ wurde hinzugefügt, das die Hardware identifiziert, die Firmware benötigt, und die entsprechenden Firmware-Pakete installiert. Derzeit werden nur PCI-Geräte sowie Firmware für Intel- und AMD-GPUs unterstützt.
- Ein neues bas64-Dienstprogramm wurde hinzugefügt, um Daten im bas64-Format zu kodieren und zu dekodieren.
- Das Dienstprogramm tcpsso wurde hinzugefügt, das es ermöglicht, Socket-Optionen für bestehende TCP-Verbindungen festzulegen (z. B. können Sie das Modul zur Überlastkontrolle oder den TCP-Stack ändern).
- Als standardmäßiger Mail-Transport-Agent wird dma (DragonFly Mail Agent) anstelle von sendmail verwendet. Sendmail bleibt in der Grundausstattung und wurde auf Version 8.17.1 aktualisiert.
- Im KTLS, der Implementierung des TLS-Protokolls, die auf der Kernel-Ebene von FreeBSD funktioniert, wurde die Unterstützung für Hardware-Beschleunigung von TLS 1.3 auf der Empfangsseite hinzugefügt. Die Beschleunigung erfolgt durch das Auslagern bestimmter Operationen zur Verarbeitung verschlüsselter Pakete auf die Netzwerkkarte.
- Die Konfigurationsdatei jail.conf wurde um die Direktive „.include“ erweitert, die es ermöglicht, beim Laden der Konfiguration zusätzliche Dateien einzubinden, wobei Masken in den Pfaden verwendet werden können. Der sysctl-Parameter security.bsd.see_jail_proc wurde erweitert, wodurch nicht autorisierten Benutzern in einer separaten Jail-Umgebung nun das erzwungene Beenden, die Änderung der Priorität und das Debugging von Prozessen untersagt werden können.
- Die Programme pw und bsdinstall erstellen nun standardmäßig Benutzer im Verzeichnis «/home» und nicht mehr in «/usr/home». Der symbolische Link für «/home», der auf «/usr/home» zeigt, wird nicht mehr erstellt.
- Die Build-Konfiguration PROFILE ist standardmäßig deaktiviert — profilierten Versionen der Systembibliotheken werden nicht mehr bereitgestellt, stattdessen sollten Hardware-Profilierwerkzeuge (hwpmc) verwendet werden.
- Die Erstellung ausführbarer Dateien für 64-Bit-Architekturen im PIE-Modus (Position Independent Executable) wurde aktiviert.
- Im Hypervisor Bhyve wurde die Möglichkeit hinzugefügt, den Zugriff auf das TPM (Trusted Platform Module) und die GPU (in virtuelle Umgebungen für AMD- und Intel-Chips) durchzureichen.
- Die Implementierung des Dateisystems ZFS wurde auf die Version OpenZFS 2.2 aktualisiert. Die Utility makefs hat Unterstützung für das Dateisystem ZFS erhalten. Es wurde die Möglichkeit hinzugefügt, einen ZFS-Pool zu erstellen, der mit einer einzelnen virtuellen Festplatte (vdev) verbunden ist.
- Die Anzahl unterstützter CPU-Kerne (Parameter MAXCPU) wurde von 256 auf 1024 in Systemen auf der Basis der Architekturen amd64 und arm64 erhöht.
- In UFS-Konfigurationen, in denen das Protokollieren (Soft-Updates) aktiviert ist, ist die Durchführung einer Hintergrundprüfung des Dateisystems unter Verwendung von UFS-Snapshots erlaubt. Zusätzliche Hash-Prüfungen wurden zu Superblöcken, Zylindergruppen-Maps und Inodes hinzugefügt, um Beschädigungen zu erkennen.
- Das Dateisystem tarfs wurde hinzugefügt, das mit tar-Archiven verwendet werden kann, die mit zstd komprimiert wurden.
- Das Tool boottrace wurde hinzugefügt, um Ereignisse zu verfolgen, die während des Startvorgangs und der Beendigung des Systems auftreten.
- Die Kernel-Konfiguration FIRECRACKER wurde hinzugefügt, um FreeBSD in der Virtualisierungsumgebung Firecracker zu starten, die auf den Betrieb von virtuellen Maschinen mit minimalen Overheads ausgelegt ist. Die Bootzeit des FreeBSD 14 Kernels unter Firecracker wurde auf 25 Millisekunden reduziert, was es ermöglicht, FreeBSD-Umgebungen nach Bedarf für serverlose Computing-Infrastrukturen zu starten.
- Im Bootloader, der in Lua geschrieben ist, wurde die Unterstützung zur Ausführung von Lua-Dateien, die im Verzeichnis loader_conf_files abgelegt sind, in einer speziellen Sandbox-Umgebung implementiert.
- Erweiterte Unterstützung für NFS. Eine neue Mount-Option „syskrb5“ wurde hinzugefügt, um Kerberos in NFSv 4.1/4.2 zu unterstützen, sowie die Unterstützung für die ExchangeID-Operation implementiert. Es wurde die Möglichkeit geschaffen, nfsd, nfsuserd, mountd, gssd und rpc.tlsservd in einer isolierten Netzwerkumgebung vnet zu starten.
- Im Skript growfs wurde die Möglichkeit umgesetzt, eine Swap-Partition am Ende des erweiterbaren Bereichs auf der Festplatte zu platzieren.
- Ein neuer DTrace-Provider kinst (dtrace_kinst) wurde hinzugefügt, der das Tracing von Kernelstrukturen ermöglicht.
- In das Kryptosystem des Kernels wurde die Unterstützung für den Verschlüsselungsalgorithmus XChaCha20-Poly1035 AEAD hinzugefügt, sowie eine API für die Verwendung der elliptischen Kurve curve25519 (für WireGuard).
- Die Bootzeit wurde verkürzt. Ein sysctl-Parameter kern.reboot_wait_time wurde hinzugefügt, mit dem die Verzögerung vor der tatsächlichen Neustart nach dem Ausgeben aller Diagnosemeldungen auf der Konsole geändert werden kann. Standardmäßig ist die Verzögerung entfernt.
- Im Kernel wurde das Subsystem timerfd hinzugefügt, was das Portieren von Programmen aus Linux vereinfacht.
- Ein sysctl machdep.mitigations.zenbleed.enable wurde hinzugefügt, um die Zenbleed-Sicherheitsschwachstelle in AMD Zen2-Prozessoren zu blockieren.
- In wpa_supplicant und hostapd wurde die Unterstützung für Wi-Fi 6 hinzugefügt. Der iwlwifi-Treiber unterstützt Chips von Intel, die Wi-Fi 6E AX411/AX211/AX210 unterstützen.
- Für den Kernel auf amd64-Systemen wird die Unterstützung für die AddressSanitizer- und MemorySanitizer-Tools aus dem LLVM-Projekt bereitgestellt.
- In den rc.d-Skripten ist die Verwendung der Status-Methode erlaubt, selbst wenn der Programmname (procname) und die PID-Datei im Skript nicht definiert sind.
- Die Übertragungsrate über die serielle Schnittstelle im Kernel, in Bootloadern und im Benutzerraum wurde standardmäßig von 9600 auf 115200 bps erhöht. Der Standardton für das Signal wurde auf 800 Hz gesetzt. Eine Integration mit devd für die Ausgabe des Signals über die Soundkarte wurde bereitgestellt. Für die Konsolenvt ist das Signal standardmäßig deaktiviert (um es zu aktivieren, müssen die Befehle «sysctl kern.vt.enable_bell=1» und «kbdcontrol -b normal» ausgeführt werden).
- Die Unterstützung für die Hardwarearchitektur zur Beschleunigung von Netzwerkoperationen NXP DPAA2 (Data Path Acceleration Architecture Gen2) wurde verbessert.
- Ein Treiber für Ethernet-Controller Intel I225 wurde hinzugefügt, der Geschwindigkeiten von 2,5 Gbps unterstützt.
- Die Einstellung net.inet.tcp.nolocaltimewait ist standardmäßig aktiviert und deaktiviert die Erstellung von Timewait-Einträgen für TCP-Verbindungen, die von der lokalen Systemseite getrennt wurden.
- Die Unterstützung für das Netlink-Kommunikationsprotokoll (RFC 3549) wurde erweitert und standardmäßig aktiviert. Dieses Protokoll wird in Linux verwendet, um die Interaktion zwischen dem Kernel und Prozessen im Benutzerspace zu organisieren. Einige Netzwerk-Tools wurden auf die Verwendung von Netlink umgestellt.
- Im Paketfilter pf wurde die Kompatibilität mit der Syntax und dem Verhalten der Paketnormalisierungsoperationen (Scrubbing) der pf-Version aus OpenBSD sichergestellt. In pfsync wurde die Möglichkeit der Nutzung von IPv6-Transporten implementiert. Das pfsync-Paketformat wurde erweitert, um Warteschlangen, Paketnormalisierung und route-to-Regeln zu unterstützen.
- Im Netzwerkinterface 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, wodurch die Erstellung von Einträgen mit dem Zustand timewait für lokal unterbrochene TCP-Verbindungen deaktiviert wird.
- Für TCP wird standardmäßig der Mechanismus zur Steuerung von Netzwerküberlastung CUBIC anstelle von NewReno verwendet, was eine erweiterte Nutzung der verfügbaren Bandbreite ermöglicht.
- Im IPv4 ist das Senden von Broadcast-Paketen an die Null-Adresse des Subnetzes deaktiviert, es sei denn, diese Adresse ist ausdrücklich als Broadcast-Adresse deklariert. Diese Änderung ermöglicht die Verwendung von Adressen, die auf „.0“ enden, für Hosts.
- Die Einstellungen von OpenSSH wurden geändert: Im 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 entfernt.
- Der Utility date wurde die Option „-z“ zur Umwandlung von Zeitzonen hinzugefügt.
- Der Utility diff wurde die Option „—color“ für eine anschauliche Visualisierung von Änderungen in Farbe hinzugefügt.
- Der Utility sleep wurde die Unterstützung für Maßeinheiten hinzugefügt, die von Sekunden abweichen (z. B. kann „sleep 1h 30m“ angegeben werden).
- Den Utilities head und tail wurden die Unterstützung für die Optionen „-q“ und „-h“ hinzugefügt, und es wurde die Möglichkeit implementiert, Größen mit SI-Präfixen anzugeben. Bei head wurde die Begrenzung auf maximal 2^31 Zeilen entfernt.
- Der Utility systat wurde der Befehl „iolat“ hinzugefügt, um Informationen über E/A-Verzögerungen auszugeben, die vom CAM-Scheduler berechnet wurden.
- Die Bibliothek libncursesw wurde in zwei Bibliotheken, libtinfow und libncursesw, unterteilt. Unterstützung für die Nutzung der terminfo-Datenbank in ncurses wurde hinzugefügt, nicht nur für termcap.
- Für die Architektur aarch64 (arm64) wurde die Build-Option COMPAT_LIB32 implementiert und standardmäßig aktiviert, die den Bau von 32-Bit-Bibliotheken für ARM64-Systeme ermöglicht, die die Ausführung von für die Plattform armv7 kompilierten ausführbaren Dateien erlaubt.
- Die Unterstützung für Cloud-Systeme wurde verbessert. Für AWS EC2 wurden experimentelle Builds mit dem Wurzel-Dateisystem 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.
- Im ACPI-System wurde die Unterstützung für den Schwellenwert _CR3 hinzugefügt, der es ermöglicht, eine Temperatur festzulegen, bei deren Erreichen das System in den Ruhezustand (S3) versetzt wird.
- Die Versionen der in das Basissystem integrierten Drittanbieter-Anwendungen und -Bibliotheken wurden aktualisiert: OpenSSH 9.5p1, OpenSSL 3.0.12 (zuvor 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 Tools 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 das Einmalpasswortsystem OPIE im Basissystem wurde entfernt (zur Wiederherstellung kann der Port security/opie installiert werden).
- Die Treiber für Soundkarten mit ISA-Schnittstelle wurden entfernt.
- Die Dienstprogramme fmtree und minigzip wurden entfernt.
- Die ATM-Komponenten in netgraph (NgATM) wurden entfernt.
- Der Hintergrunddienst telnetd wurde entfernt (der Port net/freebsd-telnetd kann verwendet werden).
- Die VINUM-Klasse in geom wurde entfernt.
- Veraltete Treiber amr, iscsi_initiator, iir, mn, mly, nlmrsa und twa wurden entfernt.
- Der Parameter VESA wurde aus den GENERIC- und MINIMAL-Kernen entfernt.
- Die Unterstützung für asymmetrische kryptografische Operationen wurde aus dem im Kernel-basierten Krypto-Framework OCF (Open Cryptographic Framework) entfernt.
- Das Dienstprogramm mergemaster wurde als veraltet erklärt; stattdessen sollte etcupdate verwendet werden.
- Das Dienstprogramm portsnap wurde entfernt (zum Extrahieren 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
