Nach sechs Monaten Entwicklung wurde das Release FreeBSD 15.1 erstellt. Installationspakete wurden für die Architekturen amd64, aarch64, armv7, powerpc64, powerpc64le und riscv64 vorbereitet. Zusätzlich werden Pakete für Virtualisierungssysteme (QCOW2, VHD, VMDK, raw) und Cloud-Umgebungen wie Amazon EC2, Google Compute Engine und Vagrant bereitgestellt. Die Veröffentlichung von FreeBSD 15.1 wird bis April 2027 unterstützt, und Updates für den Branch 15.x werden bis zum 31. Dezember 2029 erscheinen.
Hauptänderungen:
- Die Treiber für drahtlose Geräte rtw88 (Realtek 802.11n/ac), rtw89 (Realtek 802.11ax) und iwlwifi (Intel 02.11a/b/g/n/ac/ax/be) sind mit dem Linux-Kernel 7.0 synchronisiert.
- Im Kernel wurde ein Framework zur Auswahl des Task-Schedulers implementiert. In der Kernel-Konfiguration auf amd64-Systemen ist zusätzlich zu dem standardmäßig verwendeten Scheduler SCHED_ULE die Version des klassischen Task-Schedulers SCHED_4BSD aktiviert. Um den Task-Scheduler während des Bootvorgangs auszuwählen, wurde der sysctl-Parameter kern.sched hinzugefügt.
- Es wurde daran gearbeitet, den C23-Standard im Code-Bereich für Compiler im C23-Modus zu unterstützen. Die vollständige Unterstützung von C23 wird im Branch FreeBSD 16 erwartet. Der neue Standard umfasst die Konstanten nullptr, den Typ _BitInt(n) sowie die Schlüsselwörter bool, true und false, die mit zuvor im alten Code definierten Identifikatoren in Konflikt stehen könnten. Die Unterstützung von C23 wird es ermöglichen, neue Funktionen der Sprache in FreeBSD zu nutzen, wie die Headerdatei stdbit.h, die Funktion memalignment(), sowie aktualisierte limits.h und stdint.h mit dem Makro _WIDTH und dem Typ char8_t.
- Im Paketfilter ipfw wurde die Möglichkeit implementiert, beliebige Masken in Lookup-Tabellen anzugeben, die es erlauben, beliebige Kombinationen von Bits in Schlüsseln und Tabellenelementen zu ignorieren, z. B. kann eine nicht zusammenhängende Maske verwendet werden. IP-Adressen, wie „lookup src-ip4:255.255.253.255“. Der Code für die Kompatibilität mit Versionen des Paketfilters ipfw, die vor der Veröffentlichung von FreeBSD 8 verteilt wurden, wurde entfernt.
- Die Weiterleitung von IPv6-Paketen an divert-Sockets, die zuvor nur mit IPv4 betrieben werden konnten, ist nun erlaubt. Dem Befehl ifconfig wurde das Flag ‚stableaddr‘ hinzugefügt, um stabile IPv6-Adressen zu generieren, die für jedes Subnetz unverändert bleiben (Stateless Address Autoconfiguration, RFC 7217).
- Die Standard-Shell für die Benutzer „root“ und „freebsd“ wurde von csh auf sh geändert.
- Das Dienstprogramm setaudit wurde hinzugefügt, um Richtlinien für die Systemüberwachung zu verwalten.
- In das Dienstprogramm find wurden die Optionen „-xattr“ und „-xattrname“ zum Auffinden von Dateien unter Berücksichtigung erweiterter Dateiattribute aufgenommen.
- Im Dienstprogramm newfs wurde eine Option „-u“ hinzugefügt, um den Mechanismus der Soft-Updates und das Journaling für UFS2 zu deaktivieren.
- Das Dienstprogramm ipfs, das zur Speicherung und Wiederherstellung von Adressübersetzungstabellen verwendet wurde, wurde standardmäßig entfernt, und die dafür erforderliche Funktionalität im Kernel wurde deaktiviert (kann in den Build-Einstellungen wiederhergestellt werden).
- Im Skript bsdinstall ist standardmäßig die Installation von pkgbase mit den in der Variablen COMPONENTS angegebenen Komponenten aktiviert. Die alte Installation mit distset bleibt verfügbar, wenn die Variable DISTRIBUTIONS definiert ist.
- Die Standardbibliotheken wurden um die Funktionen tdestroy,
strdupa,
strndupa,
posix_spawnattr_getexecfd_np,
posix_spawnattr_setexecfd_np,
pthread_tryjoin_np erweitert.
In den Funktionen memcpy, memmove und memset auf AArch64-Systemen wurden Optimierungen auf der Basis von MOPS (Memory Operations) eingesetzt. - Die Bibliothek libuvmem wurde hinzugefügt, die einen Mechanismus zur Speicherzuweisung vmem implementiert, der im Benutzerspeicher arbeitet und eine mit vmem kompatible API für Anwendungen bereitstellt.
- In die Abbildungen für virtuelle Maschinen und Cloud-Systeme wurde der Paketmanager pkg integriert und die Unterstützung für atomare Paketaktualisierungen mit dem Basissystem beim ersten Booten umgesetzt.
- Im Minimal-Kernel-Konfigurationsstatus wurde der Treiber virtio_scsi integriert, der das Laden des Systems in virtuellen Maschinen auf der Basis von qemu/kvm ermöglicht.
- Die Systemaufrufe pdwait und pdfork wurden für einen neuen Mechanismus zur Erstellung und Beendigung von Prozessen implementiert, der Prozessdeskriptoren verwendet.
- In die Kompatibilitätsschicht für Linux wurde fcntl F_DUPFD_QUERY hinzugefügt, das kcmp KCMP_FILE verwendet, um die Prüfziffer eines Dateideskriptors in Linux-Containern zu überprüfen.
- Der Treiber iwx für Intel AX210/AX211/AX411-Wireless-Adapter mit Unterstützung für Wi-Fi 6E und Wi-Fi 7 wurde in die Build-Konfiguration aufgenommen.
- Die Treiber wurden aktualisiert. Unterstützung für Intel E835-XXV-4 und Intel E835 Ethernet-Netzwerkadapter, RAID-Controller, die in Servern Fujitsu PRIMERGY verwendet werden, sowie NVMe-Speicher, die in Google Compute Engine C4 verwendet werden, wurde hinzugefügt. Die Unterstützung von Raspberry Pi-Platinen wurde verbessert. Unterstützung für die Leistungsüberwachungszähler (hwpmc) wurde hinzugefügt, die in Intel Alder Lake, Alder Lake-N und Emerald Rapids bereitgestellt werden.
- Der Treiber hid wurde so konfiguriert, dass Benutzer der Gruppe game Zugriff haben, wodurch sie ohne Erhöhung der Berechtigungen auf Spielecontroller zugreifen können, indem Bibliotheken wie libsdl verwendet werden.
- Im Dienstprogramm mt wurde die Kompatibilität mit Bandlaufwerken sichergestellt, die die Standards LTO-10 und LTO-10P (Linear Tape-Open Generation 10) unterstützen.
- Im Befehl „zpool prefetch“ wurde die Unterstützung für BRT-Metadaten (Block Reference Table) hinzugefügt, die die Leistung beim Klonen und Freigeben von Blöcken erhöhen.
- Im NFS-Client wurde die Unterstützung für den Export von Dateisystemen über NFS hinzugefügt, die die Groß-/Kleinschreibung von Dateinamen und Verzeichnissen nicht berücksichtigen.
Bei der netzloses Booten über NFSv4 wurde die Unterstützung für die Bereitstellung einer NFS-Partition als Stamm-FS und die Zuordnung von Namen oder Benutzer-IDs über nfsuserd implementiert. Erste Unterstützung für die Erweiterung auf NFSv4.2 mit POSIX ACL wurde hinzugefügt. Server Im NFSv4-Client wurde die Unterstützung für das Attribut Archivierung (UF_ARCHIVE) hinzugefügt, das im NFS-Client von Windows verwendet wird. - Im Splash-Interface wurde die Möglichkeit hinzugefügt, einen Bildschirmhintergrund im PNG-Format festzulegen, der angezeigt wird, wenn das System heruntergefahren wird.
- Der sysctl net.inet.ipf.jail_allowed wurde hinzugefügt, der es ermöglicht, einen eigenen Satz von Einstellungen und Regeln für die Paketfilter ipfilter an die Jail-Umgebung zu binden.
- Der sysctl allow.vmm_ppt wurde hinzugefügt, um den Zugriff auf PCI-Geräte in isolierte Umgebungen des Hypervisors bhyve durchzureichen.
- Im GPU-Treiber auf Basis von virtio wurde die Unterstützung für virtuelle Umgebungen auf Basis von Parallels Desktop implementiert.
- Die Unterstützung für die FGT-Register (Fine-Grained Trap), den Mechanismus des Extended Destination ID und die MOPS-Anweisungen (Memory Operations) wurde hinzugefügt, um die Virtualisierungsmöglichkeiten zu erweitern und die Leistung auf ARM64-Systemen zu steigern. Unterstützung für die ARM64-Erweiterung LASS (Linear Address Space Separation) wurde hinzugefügt, um die Trennung zwischen Kernel und Benutzerraum zu verstärken.
- In die Implementierung des Framebuffers des Hypervisors bhyve wurde die Unterstützung für UNIX-Sockets hinzugefügt, die es ermöglichen, die grafische Konsole in Jails nicht über das Netzwerk durchzureichen.
- Die Versionen von OpenZFS 2.4.2, OpenSSL 3.5.6, NSS 3.123.1, xz 5.8.3, tcpdump 4.99.6, zlib 1.3.2, zstd 1.5.7, blocklistd 2026-02-07, ncurses 6.6, bsddialog 1.0.5, bmake 20251111, SQLite 3.50.4, unbound 1.25.1, MIT Kerberos 1.22.2, Heimdal Kerberos 1.22.2 wurden aktualisiert.
- Die Konsolenschriftart spleen wurde auf Version 2.2.0 aktualisiert und um zusätzliche Symbole (langes Minus, kurzes Minus, Bindestrich, spitze Klammern, weißes Quadrat, Kreuz und doppelt-kreuz) erweitert. Die Ausrichtung der Symbole auf hochauflösenden Bildschirmen wurde verbessert. Die Unicode-Zeichentabellen wurden auf Version 17.0.0 aktualisiert, die 4803 neue Zeichen enthält.
- Das Blacklist-System wurde in Blockliste umbenannt, mit einem Hintergrundprozess blocklistd. Alte Einstellungen in rc-Skripten und Regeln des Paketfilters funktionieren weiterhin, führen jedoch zur Ausgabe einer Warnung.
- Das OpenPAM-Toolset wurde in das neue Paket FreeBSD-pam verschoben, während die Zstandard-Bibliothek und das Tool zstd in das Paket FreeBSD-zstd überführt wurden.
- Auf Systemen, die über die Pakete freebsd-base installiert wurden, ist der Aufruf der Installationsskripte installworld und installkernel gesperrt, um Inkonsistenzen zwischen dem Systemzustand und den Paketen zu vermeiden.
- Die Erstellung von Builds im OCI-Format (Oracle Cloud Infrastructure) wurde eingestellt.
- Die Tools fdisk, bsdlabel, lpr, lpd, lpc, lpq, lprm, lp, pac, lptest und chkprintcap wurden als veraltet erklärt und werden in der FreeBSD-Version 16 entfernt. Zur Arbeit mit Festplattenschnitten wird empfohlen, anstelle von fdisk und bsdlabel gpart oder bsdinstall zu verwenden, und für die Druckausgabe sollte der Port print/cups oder sysutils/LPRng verwendet werden. In FreeBSD 16 sollen auch die Sysctls hw.ata.rotating und hw.ata.unmapped_io sowie die Treiber hifn (Hifn 7751/7951/7811/7955/7956 Crypto-Beschleuniger), safe (SafeNet SafeXcel 1141/1741 Crypto-Beschleuniger), le (AMD Am7900 LANCE und Am79C9xx ILACC/PCnet Ethernet), fdc (Floppy-Disk-Controller) und agp (Accelerated Graphics Port) entfernt werden.
Quelle: opennet.ru
