Na tweeënhalf jaar sinds de publicatie van tak 13.0 is de release van FreeBSD 14.0 gevormd. Installatie-images zijn voorbereid voor de architecturen amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv7, aarch64 en riscv64. Daarnaast zijn er builds voorbereid voor virtualisatiesystemen (QCOW2, VHD, VMDK, raw) en cloudomgevingen zoals Amazon EC2, Google Compute Engine en Vagrant. Tak FreeBSD 14 zal de laatste zijn met ondersteuning voor 32-bits platforms. In FreeBSD 15 blijft er alleen ondersteuning voor 64-bits systemen, maar het blijft mogelijk om 32-bits programma's te bouwen en de COMPAT_FREEBSD32-modus te gebruiken om 32-bits uitvoerbare bestanden in een 64-bits omgeving uit te voeren.
Belangrijkste wijzigingen:
- Als standaardopdrachtinterpreter voor de gebruiker root is /bin/sh ingesteld.
- Voor NVME-apparaten is standaard op alle platforms de driver nda ingeschakeld. Om de oude driver nvd terug te krijgen is er in loader.conf een instelling 'hw.nvme.use_nvd=1'.
- Een nieuwe utiliteit 'fwget' is toegevoegd, die hardware identificeert die firmware nodig heeft en de bijbehorende firmwarepakketten installeert. Momenteel worden alleen PCI-apparaten en firmware voor Intel en AMD GPU's ondersteund.
- Een nieuwe utiliteit base64 is toegevoegd voor het coderen en decoderen van gegevens in base64-formaat.
- De utiliteit tcpsso is toegevoegd, waarmee socketopties voor bestaande TCP-verbindingen kunnen worden ingesteld (bijvoorbeeld kan de congestiebeheermodule of de TCP-stapel worden gewijzigd).
- Als standaardmailagent in plaats van sendmail wordt dma (DragonFly Mail Agent) gebruikt. Sendmail is behouden in de basisinstallatie en is bijgewerkt naar versie 8.17.1.
- In KTLS, de implementatie van het TLS-protocol dat op kernniveau van FreeBSD werkt, is ondersteuning voor hardwareversnelling van TLS 1.3 aan de ontvangende kant toegevoegd. De versnelling wordt verzorgd door enkele operaties gerelateerd aan de verwerking van versleutelde pakketten naar de netwerkadapter te verplaatsen.
- In het configuratiebestand jail.conf is de richtlijn '.include' toegevoegd, die het mogelijk maakt om aanvullende bestanden in te voegen bij het opstarten van de configuratie, waarbij het gebruik van masks in paden is toegestaan. De sysctl-parameter security.bsd.see_jail_proc is uitgebreid, zodat niet-geautoriseerde gebruikers nu in een afzonderlijke jail-omgeving kunnen worden uitgesloten van geforceerde beëindiging, prioriteitswijziging en foutopsporing van processen.
- De programma's pw en bsdinstall maken nu standaard gebruikers aan in de map "/home" in plaats van "/usr/home". De symbolische link voor "/home" die naar "/usr/home" verwees, wordt niet meer aangemaakt.
- De bouwoptie PROFILE is standaard uitgeschakeld — geprofileerde versies van systeembibliotheken worden niet meer aangeboden, in plaats daarvan dienen hardwareprofileringmiddelen (hwpmc) te worden gebruikt.
- De bouw van uitvoerbare bestanden voor 64-bits architecturen is ingeschakeld in PIE-modus (Position Independent Executable).
- De hypervisor Bhyve heeft nu de mogelijkheid om toegang tot TPM (Trusted Platform Module) en GPU door te geven (in virtuele omgevingen voor AMD- en Intel-chips).
- De implementatie van het bestandssysteem ZFS is bijgewerkt naar de versie OpenZFS 2.2. De utility makefs heeft ondersteuning voor het bestandssysteem ZFS gekregen. Er is mogelijkheid om een ZFS-pool te creëren die aan één virtuele schijf vdev is gekoppeld.
- Het aantal ondersteunde CPU-kernen (parameter MAXCPU) is verhoogd van 256 naar 1024 in systemen op basis van de amd64- en arm64-architectuur.
- In UFS voor configuraties waarin journaling (soft updates) is ingeschakeld, is het uitvoeren van achtergrondcontroles van het bestandssysteem toegestaan, waarbij UFS-snapshots worden gebruikt. Aan de superblocks, cylinder group maps en inodes zijn extra hashcontroles toegevoegd om beschadigingen te detecteren.
- Een nieuw bestandssysteem tarfs is toegevoegd, dat kan worden gebruikt met tar-archieven die zijn gecomprimeerd met zstd.
- Een tool genaamd boottrace is toegevoegd voor het volgen van gebeurtenissen die zijn opgetreden tijdens het opstarten en het afsluiten van het systeem.
- De kernelconfiguratieparameter FIRECRACKER is toegevoegd voor het draaien van FreeBSD in een Firecracker-virtualisatiesysteem, gericht op het draaien van virtuele machines met minimale overhead. De opstarttijd van de FreeBSD 14-kernel onder Firecracker is teruggebracht tot 25 milliseconden, wat het mogelijk maakt om FreeBSD-omgevingen on-demand op te starten voor serverloze infrastructuur.
- In de bootloader, geschreven in Lua, is in een speciale sandboxomgeving ondersteuning voor het uitvoeren van lua-bestanden mogelijk gemaakt die zijn geplaatst in de map loader_conf_files.
- De ondersteuning voor NFS is uitgebreid. Een nieuwe optie voor het monteren, "syskrb5", is toegevoegd ter ondersteuning van Kerberos in NFSv 4.1/4.2, en de operatie ExchangeID is geïmplementeerd. Het is mogelijk om nfsd, nfsuserd, mountd, gssd en rpc.tlsservd uit te voeren in een geïsoleerde netwerkomgeving vnet.
- In het growfs-script is de mogelijkheid toegevoegd om het swapgedeelte aan het einde van het uitbreidbare gebied op de schijf te plaatsen.
- Een nieuwe DTrace-provider kinst (dtrace_kinst) is toegevoegd, waarmee tracing van kernelstructuren mogelijk is.
- De cryptosubsystem van de kernel ondersteunt nu het XChaCha20-Poly1035 AEAD-encryptie-algoritme, en er is een API toegevoegd voor het gebruik van de elliptische curve curve25519 (voor WireGuard).
- De herstarttijd is verkort. Er is een sysctl-parameterveld kern.reboot_wait_time toegevoegd, waarmee de vertraging vóór de daadwerkelijke herstart na het weergeven van alle diagnostische berichten op de console kan worden gewijzigd. Standaard is de vertraging verwijderd.
- Er is een timerfd-subsysteem aan de kernel toegevoegd, wat het porteren van programma's vanuit Linux vergemakkelijkt.
- Een sysctl machdep.mitigations.zenbleed.enable is toegevoegd om de Zenbleed-kwetsbaarheid in AMD Zen2-processoren te blokkeren.
- In wpa_supplicant en hostapd is ondersteuning voor Wi-Fi 6 toegevoegd. In de iwlwifi-driver is de werking met Intel-chips die Wi-Fi 6E AX411/AX211/AX210 ondersteunen, gewaarborgd.
- Voor de kernel op amd64-systemen is ondersteuning voor de AddressSanitizer- en MemorySanitizer-tools van het LLVM-project toegevoegd.
- In de rc.d-scripts is het gebruik van de statusmethode toegestaan, zelfs als de programmanaam (procname) en PID-bestand niet zijn gedefinieerd.
- De gegevensoverdrachtsnelheid via de seriële poort in de kernel, bootloaders en gebruikersruimte is standaard verhoogd van 9600 naar 115200 bps. De standaardtonen van de bel zijn ingesteld op 800Hz. Integratie met devd is gewaarborgd voor het afspelen van de bel via de geluidskaart. Voor de vt-console is de bel standaard uitgeschakeld (om deze in te schakelen, moeten de commando's “sysctl kern.vt.enable_bell=1” en “kbdcontrol -b normal” worden uitgevoerd).
- De ondersteuning voor de NXP DPAA2-architectuur (Data Path Acceleration Architecture Gen2) voor hardwareversnelling van netwerkoperaties is verbeterd.
- Er is een igc-driver voor Intel I225 Ethernet-controllers toegevoegd, die snelheden tot 2,5 Gbps ondersteunt.
- De net.inet.tcp.nolocaltimewait-instelling is standaard ingeschakeld, waardoor het aanmaken van timewait-records voor TCP-verbindingen die aan de lokale systeemzijde zijn verbroken, wordt uitgeschakeld.
- De ondersteuning voor het Netlink-communicatieprotocol (RFC 3549), dat in Linux wordt gebruikt voor de interactie tussen de kernel en processen in de gebruikersruimte, is uitgebreid en standaard ingeschakeld. Sommige netwerkutilities zijn overgeschakeld naar het gebruik van Netlink.
- De pf-pakketfilter biedt compatibiliteit met de syntaxis en het gedrag van pakketnormalisatie (scrubbing) bewerkingen van pf versie van OpenBSD. De pfsync heeft de mogelijkheid om IPv6-transports te gebruiken geïmplementeerd. Het pfsync-pakketformaat is uitgebreid om wachtrijen, pakketnormalisatie en route-to-regels te ondersteunen.
- Bij de netwerkinterface if_stf (IPv6 over IPv4) is toegevoegd ondersteuning voor IPv6 Rapid Deployment (RFC 5969). Standaard is de IPv6 nodeinfo-modus (RFC 4620) uitgeschakeld.
- De sysctl-parameter net.inet.tcp.nolocaltimewait is standaard ingeschakeld, waardoor het aanmaken van records met de status timewait voor lokaal onderbroken TCP-verbindingen wordt uitgeschakeld.
- Standaard wordt het CUBIC-netwerkoverloadbeheersmechanisme voor TCP gebruikt in plaats van NewReno, wat heeft geleid tot een verbeterd gebruik van de beschikbare bandbreedte.
- Bij IPv4 is het verzenden van broadcastpakketten naar het nuladres van het subnet uitgeschakeld, tenzij dit adres expliciet als broadcast is aangegeven. Deze wijziging maakt het mogelijk om voor hosts adressen te gebruiken die eindigen op '.0'.
- De OpenSSH-instellingen zijn gewijzigd: in scp wordt standaard het SFTP-protocol gebruikt in plaats van scp/rcp, de ondersteuning voor RSA/SHA-1-handtekeningen is uitgeschakeld, de parameters VerifyHostKeyDNS en X11Forwarding zijn ingesteld op 'nee', de richtlijn VersionAddendum is verwijderd, en de ondersteuning voor HPN-instellingen is verwijderd.
- De date-tool heeft de optie '-z' gekregen voor het converteren van tijdzones.
- De diff-tool heeft de optie '—color' gekregen voor een visuele weergave van wijzigingen in kleur.
- De sleep-tool ondersteunt nu eenheden anders dan seconden (bijvoorbeeld, je kunt 'sleep 1h 30m' opgeven).
- De tools head en tail hebben de ondersteuning voor de opties '-q' en '-h' gekregen, en het is nu mogelijk om waarden met SI-eenheden opgegeven te krijgen. In head is de beperking van het maximale aantal regels 2^31 verwijderd.
- De systat-tool heeft het commando 'iolat' gekregen voor het weergeven van gegevens over input/output-vertragingen, berekend door de CAM-scheduler.
- De bibliotheek libncursesw is opgesplitst in twee bibliotheken: libtinfow en libncursesw. Er is ondersteuning toegevoegd voor het gebruik van de terminfo-database in ncurses, in plaats van alleen termcap.
- Voor de aarch64-architectuur (arm64) is de buildoptie COMPAT_LIB32 geïmplementeerd en standaard ingeschakeld, waardoor 32-bits bibliotheken voor ARM64-systemen kunnen worden gebouwd die uitvoerbare bestanden kunnen uitvoeren die zijn samengesteld voor het armv7-platform.
- Verbeterde ondersteuning voor cloudsystemen. Voor AWS EC2 zijn experimentele builds met een rootbestandssysteem ZFS en cloud-init toegevoegd. Voor Azure zijn er afbeeldingen beschikbaar voor de architecturen arm64 en amd64, met de keuze tussen UFS of ZFS. Een driver voor de virtuele netwerkkaart gve (Google Virtual NIC) is toegevoegd.
- Ondersteuning voor de drempelwaarde _CR3 is toegevoegd aan het ACPI-systeem, waarmee een temperatuur kan worden ingesteld waarbij het systeem in de slaapstand (S3) wordt gezet.
- De versies van externe toepassingen en bibliotheken die deel uitmaken van het basissysteem zijn bijgewerkt: OpenSSH 9.5p1, OpenSSL 3.0.12 (voorheen werd versie 1.1.1 gebruikt), 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. De implementatie van de utility objdump is vervangen door llvm-objdump. De compiler Clang is bijgewerkt naar versie 16.
- Opruiming van verouderde systemen:
- Ondersteuning voor eenmalige wachtwoorden OPIE is vanuit het basissysteem verwijderd (om deze opnieuw te gebruiken kan de port security/opie worden geïnstalleerd).
- Drivers voor geluidskaarten met een ISA-interface zijn verwijderd.
- De utilities fmtree en minigzip zijn verwijderd.
- Componenten van ATM in netgraph (NgATM) zijn verwijderd.
- Het achtergrondproces telnetd is verwijderd (de port net/freebsd-telnetd kan worden gebruikt).
- De klasse VINUM in geom is verwijderd.
- Verouderde drivers amr, iscsi_initiator, iir, mn, mly, nlmrsa en twa zijn verwijderd.
- De parameter VESA is verwijderd uit de GENERIC en MINIMAL kernels.
- Ondersteuning voor asymmetrische cryptografische operaties is verwijderd uit het cryptografische framework OCF (Open Cryptographic Framework) dat op kernelniveau werkt.
- De utility mergemaster is verouderd verklaard, en in plaats daarvan moet etcupdate worden gebruikt.
- De utility portsnap is verwijderd (gebruik voor het ophalen van ports 'git clone https://git.FreeBSD.org/ports.git /usr/ports').
- Het maken van builds voor de architectuur armv6 is stopgezet.
- Ondersteuning voor de architectuur MIPS is verwijderd.
Bron: opennet.ru
