După doi ani și jumătate de la publicarea versiunii 13.0, a fost lansată versiunea FreeBSD 14.0. Imaginile de instalare sunt disponibile pentru arhitecturile amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv7, aarch64 și riscv64. De asemenea, au fost pregătite versiuni pentru sisteme de virtualizare (QCOW2, VHD, VMDK, raw) și medii cloud precum Amazon EC2, Google Compute Engine și Vagrant. Versiunea FreeBSD 14 va fi ultima care va suporta platformele pe 32 de biți. În FreeBSD 15, va rămâne doar suportul pentru sistemele pe 64 de biți, dar va fi menținută capacitatea de a compila aplicații pe 32 de biți și utilizarea modului COMPAT_FREEBSD32 pentru rularea fișierelor executabile pe 32 de biți în medii pe 64 de biți.
Modificări principale:
- Ca interpret de comandă pentru utilizatorul root, implicit este setat /bin/sh.
- Pentru dispozitivele NVME, driverul nda este activat implicit pe toate platformele. Pentru a reveni la vechiul driver nvd, în loader.conf există setarea «hw.nvme.use_nvd=1».
- A fost adăugată o nouă utilitate «fwget», care identifică echipamentul care necesită firmware și instalează pachetele corespunzătoare de firmware. În prezent, sunt suportate doar dispozitive PCI și firmware pentru GPU Intel și AMD.
- A fost adăugată o nouă utilitate base64 pentru codificarea și decodificarea datelor în format base64.
- A fost adăugată utilitatea tcpsso, care permite setarea opțiunilor de socket pentru conexiunile TCP existente (de exemplu, se poate schimba modul de control al congestionării sau stiva TCP).
- Ca agent de livrare a poștei, în mod implicit, este utilizat dma (DragonFly Mail Agent) în loc de sendmail. Sendmail a fost păstrat în versiunea de bază și actualizat la versiunea 8.17.1.
- În KTLS, implementarea protocolului TLS care funcționează la nivel de kernel în FreeBSD, a fost adăugată suportul pentru accelerarea hardware a TLS 1.3 pe partea de primire. Accelerarea este realizată prin mutarea pe partea plăcii de rețea a unora dintre operațiile legate de procesarea pachetelor criptate.
- În fișierul de configurare jail.conf a fost adăugată directiva «.include», care permite includerea fișierelor suplimentare la încărcarea configurației, în căile cărora este permisă utilizarea mascărilor. Parametrul sysctl security.bsd.see_jail_proc a fost extins, permițându-le utilizatorilor neautorizați într-un mediu jail separat să li se interzică acum forțarea terminării, modificarea priorității și depanarea proceselor.
- Programele pw și bsdinstall creează acum implicit utilizatori în directorul "/home", nu în "/usr/home". Linkul simbolic pentru "/home", care se referea la "/usr/home", nu mai este creat.
- Setarea de construire PROFILE este dezactivată implicit — versiunile profilate ale bibliotecilor de sistem nu mai sunt furnizate, în schimb ar trebui utilizate resursele de profilare (hwpmc).
- Construcția fișierelor executabile pentru arhitecturi pe 64 de biți este activată în modul PIE (Executable Independent de Poziție).
- Hypervisorul Bhyve a primit capacitatea de a redirecționa accesul la TPM (Trusted Platform Module) și GPU (în medii virtuale pentru cipuri AMD și Intel).
- Implementarea sistemului de fișiere ZFS a fost actualizată la versiunea OpenZFS 2.2. Utilitarul makefs a fost îmbunătățit cu suport pentru sistemul de fișiere ZFS. A fost oferită capacitatea de a crea un pool ZFS asociat cu un singur disc virtual vdev.
- Numărul de nuclee CPU suportate (parametrul MAXCPU) a fost crescut de la 256 la 1024 în sistemele bazate pe arhitectura amd64 și arm64.
- În UFS pentru configurațiile în care jurnalizarea (actualizări soft) este activată, este permisă efectuarea verificării de fond a sistemului de fișiere, utilizând instantanee UFS. Verificările suplimentare ale hash-urilor au fost adăugate în superblock-uri, hărțile grupurilor de cilindri și inode-uri pentru a detecta deteriorarea.
- A fost adăugat sistemul de fișiere tarfs, care poate fi utilizat cu arhive tar, comprimate cu zstd.
- A fost adăugat instrumentul boottrace pentru urmărirea evenimentelor care au avut loc în etapa de încărcare și încheiere a sistemului.
- A fost adăugat parametrul de configurare a nucleului FIRECRACKER pentru a permite rularea FreeBSD în sistemul de virtualizare Firecracker, destinat rulării mașinilor virtuale cu costuri minime. Timpul de încărcare al nucleului FreeBSD 14 sub Firecracker a fost redus la 25 de milisecunde, ceea ce permite lansarea mediilor cu FreeBSD pe măsură ce este necesar pentru a implementa infrastructura calculului fără server.
- În încărcătorul scris în limbajul Lua, suportul pentru executarea fișierelor lua, plasate în directorul loader_conf_files, a fost implementat într-un mediu special sandbox.
- Suportul pentru NFS a fost extins. A fost adăugată o nouă opțiune de montare "syskrb5" pentru a sprijini Kerberos în NFSv 4.1/4.2, iar suportul pentru operația ExchangeID a fost implementat. A fost posibilă rularea nfsd, nfsuserd, mountd, gssd și rpc.tlsservd într-un mediu de rețea izolat vnet.
- În scriptul growfs a fost implementată posibilitatea de a plasa partiția de swapping la sfârșitul zonei extensibile de pe disc.
- A fost adăugat un nou provider DTrace kinst (dtrace_kinst), care permite trasarea structurilor nucleului.
- În subsistemul criptografic al nucleului a fost adăugată suport pentru algoritmul de criptare XChaCha20-Poly1035 AEAD, precum și un API pentru utilizarea curbei eliptice curve25519 (pentru WireGuard).
- Timpul de restart a fost redus. A fost adăugat parametrul sysctl kern.reboot_wait_time, prin care se poate modifica întârzierea înainte de restartul efectiv după afisarea tuturor mesajelor de diagnostic în consolă. Prin default, întârzierea a fost eliminată.
- A fost adăugată în nucleu subsistemul timerfd, care simplifică portarea programelor din Linux.
- A fost adăugat sysctl machdep.mitigations.zenbleed.enable pentru blocarea vulnerabilității Zenbleed în procesoarele AMD Zen2.
- În wpa_supplicant și hostapd a fost adăugată suport pentru Wi-Fi 6. În driverul iwlwifi a fost asigurată funcționarea cu cipurile Intel care suportă Wi-Fi 6E AX411/AX211/AX210.
- Pentru nucleul de pe sistemele amd64 a fost asigurată suport pentru instrumentele AddressSanitizer și MemorySanitizer din proiectul LLVM.
- În scripturile rc.d a fost permisă utilizarea metodei status, chiar dacă numele programului (procname) și fișierul PID nu sunt definite în script.
- Viteza de transmisie a datelor prin portul serial în nucleu, bootloadere și spațiul utilizatorului a fost în mod standard crescută de la 9600 la 115200 bps. Tonul soneriei a fost setat în mod standard la 800Hz. A fost asigurată integrarea cu devd pentru redarea soneriei prin placa de sunet. Pentru consolă vt, soneria este dezactivată în mod standard (pentru a activa, trebuie să rulați comanda „sysctl kern.vt.enable_bell=1” și „kbdcontrol -b normal”).
- A fost îmbunătățit suportul pentru arhitectura de accelerare hardware a operațiunilor de rețea NXP DPAA2 (Data Path Acceleration Architecture Gen2).
- A fost adăugat driverul igc pentru controlerele Ethernet Intel I225, care suportă viteza de 2.5 Gbps.
- În mod standard, a fost activată setarea net.inet.tcp.nolocaltimewait, care dezactivează crearea înregistrărilor timewait pentru conexiunile TCP întrerupte pe partea sistemului local.
- A fost extins și activat în mod standard suportul pentru protocolul de comunicare Netlink (RFC 3549), utilizat în Linux pentru organizarea interacțiunii nucleului cu procesele din spațiul utilizatorului. Unele utilitare de rețea au fost migrate la utilizarea Netlink.
- Filtrul de pachete pf asigură compatibilitatea cu sintaxa și comportamentul operațiunilor de normalizare a pachetelor (scrubbing) din versiunea pf de OpenBSD. În pfsync a fost implementată posibilitatea de utilizare a transportului IPv6. Formatul pachetelor pfsync a fost extins pentru a sprijini coada, normalizarea pachetelor și regulile route-to.
- Interfața de rețea if_stf (IPv6 peste IPv4) a fost adăugată suportul IPv6 Rapid Deployment (RFC 5969). În mod implicit, modul IPv6 nodeinfo (RFC 4620) este dezactivat.
- Parametrul sysctl net.inet.tcp.nolocaltimewait este activat în mod implicit, dezactivând crearea înregistrărilor cu starea timewait pentru conexiunile TCP întrerupte local.
- În mod implicit, pentru TCP este utilizat mecanismul de control al congestiei rețelei CUBIC în loc de NewReno, ceea ce a permis extinderea utilizării lățimii de bandă disponibile.
- În IPv4, trimiterea pachetelor de difuzare către adresa 0 a subrețelei este dezactivată, cu excepția cazului în care această adresă este în mod explicit declarată ca fiind de difuzare. Această modificare permite utilizarea adreselor care se termină cu „.0” pentru gazde.
- Setările OpenSSH au fost modificate: în scp, protocolul SFTP este utilizat în mod implicit în loc de scp/rcp, suportul pentru semnăturile RSA/SHA-1 a fost dezactivat, parametrii VerifyHostKeyDNS și X11Forwarding sunt setați pe „nu”, directiva VersionAddendum a fost eliminată, iar suportul pentru setările HPN a fost eliminat.
- Utilitarului date i s-a adăugat opțiunea „-z” pentru conversia fusurilor orare.
- Utilitarului diff i s-a adăugat opțiunea „—color” pentru vizualizarea clară a modificărilor prin culoare.
- Utilitarului sleep i s-a adăugat suport pentru unități de măsură diferite de secunde (de exemplu, se poate specifica „sleep 1h 30m”).
- Utilitarelor head și tail li s-a adăugat suport pentru opțiunile „-q” și „-h”, precum și posibilitatea de a specifica dimensiuni cu sufixe în sistemul internațional de unități SI. În head, limita maximă a numărului de linii 2^31 a fost eliminată.
- Utilitarului systat i s-a adăugat comanda „iolat” pentru a afișa informații despre întârzierile de intrare/ieșire, calculate de planificatorul CAM.
- Biblioteca libncursesw a fost împărțită în două biblioteci: libtinfow și libncursesw. A fost adăugat suportul pentru utilizarea bazei terminfo în ncurses, nu doar pentru termcap.
- Pentru arhitectura aarch64 (arm64) a fost implementată și activată opțiunea de construire COMPAT_LIB32, care permite construirea de biblioteci pe 32 de biți pentru sistemele ARM64, permițând rularea fișierelor executabile construite pentru platforma armv7.
- Suportul sistemelor cloud a fost îmbunătățit. Pentru AWS EC2 au fost adăugate versiuni experimentale cu sistemul de fișiere rădăcină ZFS și cloud-init. Pentru Azure sunt disponibile imagini pentru arhitecturi arm64 și amd64, având opțiunea de a alege între UFS sau ZFS. A fost adăugat driverul pentru placa de rețea virtuală gve (Google Virtual NIC).
- În sistemul ACPI s-a adăugat suport pentru pragul _CR3, care permite stabilirea unei temperaturi, la care sistemul va fi trecut în modul de somn (S3).
- Au fost actualizate versiunile aplicațiilor și bibliotecilor terțe incluse în sistemul de bază: OpenSSH 9.5p1, OpenSSL 3.0.12 (anterior se folosea ramura 1.1.1), 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. Implementarea utilitarului objdump a fost înlocuită cu llvm-objdump. Compilatorul Clang a fost actualizat la ramura 16.
- A fost efectuată curățarea sistemelor învechite:
- Suportul pentru parolele unice OPIE a fost eliminat din sistemul de bază (pentru a relua utilizarea se poate instala portul security/opie).
- Driverele pentru plăcile de sunet cu interfață ISA au fost eliminate.
- Utilitarele fmtree și minigzip au fost eliminate.
- Componentele ATM în netgraph (NgATM) au fost eliminate.
- Procesul de fundal telnetd a fost eliminat (se poate folosi portul net/freebsd-telnetd).
- Clasa VINUM în geom a fost eliminată.
- Driverele învechite amr, iscsi_initiator, iir, mn, mly, nlmrsa și twa au fost eliminate.
- Parametrul VESA a fost eliminat din nucleele GENERIC și MINIMAL.
- Suportul pentru operațiile criptografice asimetrice a fost eliminat din cadrul criptografic OCF (Open Cryptographic Framework) la nivel de kernel.
- Utilitarul mergemaster a fost declarat învechit, în locul acestuia ar trebui folosit etcupdate.
- Utilitarul portsnap a fost eliminat (pentru extragerea porturilor se recomandă utilizarea „git clone https://git.FreeBSD.org/ports.git /usr/ports”).
- Generarea versiunilor pentru arhitectura armv6 a fost oprită.
- Suportul pentru arhitectura MIPS a fost eliminat.
Sursa: opennet.ro
