Dopo 11 mesi di sviluppo, è stata rilasciata la versione FreeBSD 13.2. Le immagini di installazione sono state create per le architetture amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 e riscv64. Sono state preparate anche build per sistemi di virtualizzazione (QCOW2, VHD, VMDK, raw) e ambienti cloud Amazon EC2, Google Compute Engine e Vagrant.
Principali modifiche:
- È stata implementata la possibilità di creare snapshot per i file system UFS e FFS, su cui è abilitato il journaling (soft updates). È stata inoltre aggiunta la supporto per il salvataggio in background dei dump (esecuzione di dump con il flag "-L") del contenuto dei file system UFS montati con il journaling attivo. Tra le funzionalità non disponibili quando si utilizza il journaling, rimane l'esecuzione in background del controllo dell'integrità tramite l'utilità fsck.
- È stato accettato nel nucleo il driver wg che implementa un'interfaccia di rete per VPN WireGuard. Per utilizzare gli algoritmi crittografici necessari al driver, è stata ampliata l'API della sottosistema crittografico del nucleo FreeBSD, aggiungendo un wrapper che permette di utilizzare algoritmi non supportati da FreeBSD provenienti dalla libreria libsodium attraverso l'API crittografico standard. Durante lo sviluppo, è stata anche effettuata un'ottimizzazione per un bilanciamento uniforme del binding delle attività di crittografia e decifratura dei pacchetti ai core della CPU, riducendo così i costi operativi durante la gestione dei pacchetti WireGuard.
Il precedente tentativo di integrare WireGuard in FreeBSD è stato fatto nel 2020, ma ha portato a uno scandalo che ha portato alla rimozione del codice già aggiunto a causa della bassa qualità, della scarsa gestione dei buffer, dell'uso di stub invece di controlli, di un'implementazione incompleta del protocollo e della violazione della licenza GPL. La nuova implementazione è stata redatta congiuntamente dai principali team di sviluppo di FreeBSD e WireGuard, con la partecipazione di Jason Donenfeld, autore della VPN WireGuard, e John Baldwin, noto sviluppatore di FreeBSD. Prima dell'approvazione del nuovo codice, è stata effettuata una revisione completa delle modifiche con il supporto dell'organizzazione FreeBSD Foundation.
- È stata implementata la supporto per il protocollo di comunicazione Netlink (RFC 3549), utilizzato in Linux per organizzare l'interazione tra il kernel e i processi nello spazio utente. Il progetto si limita al supporto della famiglia di operazioni NETLINK_ROUTE per la gestione dello stato del sottosistema di rete nel kernel, permettendo di utilizzare l'utilità ip di Linux dal pacchetto iproute2 per gestire le interfacce di rete, impostare indirizzi IP, configurare il routing e manipolare gli oggetti nexthop, che memorizzano i dati sullo stato utilizzato per trasmettere i pacchetti al rispettivo punto di destinazione.
- Per tutti i file eseguibili del sistema di base su piattaforme a 64 bit, la randomizzazione dello spazio degli indirizzi (ASLR, Address Space Layout Randomization) è abilitata per impostazione predefinita. Per disabilitare selettivamente l'ASLR, è possibile utilizzare i comandi "proccontrol -m aslr -s disable" o "elfctl -e +noaslr".
- In ipfw, per la ricerca degli indirizzi MAC sono impiegate tabelle di base (Radix table), il che consente di creare tabelle con indirizzi MAC e utilizzarle per filtrare il traffico. Ad esempio: ipfw table 1 create type mac ipfw table 1 add 11:22:33:44:55:66/48 ipfw add skipto tablearg src-mac ‘table(1)’ ipfw add deny src-mac ‘table(1, 100)’ ipfw add deny lookup dst-mac 1
- Sono stati aggiunti e sono disponibili per il download tramite loader.conf i moduli del kernel dpdk_lpm4 e dpdk_lpm6 con l'implementazione dell'algoritmo di ricerca percorsi DIR-24-8 per IPv4/IPv6, che consente di ottimizzare le funzioni di routing per host con tabelle di routing molto grandi (nei test si osserva un incremento della velocità del 25%). Per configurare i moduli si può utilizzare l'utility route (è stata aggiunta l'opzione FIB_ALGO).
- L'implementazione del file system ZFS è stata aggiornata alla versione OpenZFS 2.1.9. Nel programma di avvio zfskeys è garantito il caricamento automatico delle chiavi memorizzate nel FS ZFS. È stato aggiunto un nuovo script RC zpoolreguid per assegnare un identificatore GUID a uno o più zpool (ad esempio, utile per ambienti di virtualizzazione con dati condivisi).
- Nel hypervisor Bhyve e nel modulo vmm è stata implementata la supporto per l'allocazione a un sistema guest di oltre 15 CPU virtuali (regolabile tramite sysctl hw.vmm.maxcpu). Nell'utility bhyve è stata implementata l'emulazione del dispositivo virtio-input, tramite la quale è possibile iniettare eventi di input da tastiera e mouse nel sistema guest.
- In KTLS, the implementation of the TLS protocol, which operates at the kernel level of FreeBSD, support for hardware acceleration of TLS 1.3 has been added by offloading certain operations related to processing encrypted incoming packets to the network card. Previously, such capability was available for TLS 1.1 and TLS 1.2.
- In the growfs startup script, when expanding the root filesystem, support for adding a swap partition has been implemented if such a partition was initially absent (for example, this is useful when installing a pre-packaged system image on an SD card). A new parameter, growfs_swap_size, has been added to rc.conf for managing the size of the swap.
- In the hostid startup script, random UUID generation is ensured in the absence of the /etc/hostid file and when it is impossible to obtain the UUID from the hardware. Additionally, the /etc/machine-id file has been added, compactly representing the host identifier (without dashes).
- In rc.conf, the variables defaultrouter_fibN and ipv6_defaultrouter_fibN have been added, through which default routes can be added to FIB tables different from the primary one.
- Support for SHA-512/224 hashes has been added to the libmd library.
- Support for the semantics of functions used in Linux has been implemented in the pthread library.
- Support for decoding Linux system calls has been added to kdump. Additionally, support for tracing Linux-style system calls has been added to kdump and sysdecode.
- The killall utility now offers the ability to send signals to processes attached to a specific terminal (for example, "killall -t pts/1").
- A new utility, nproc, has been added to output the number of computational blocks available to the current process.
- Support for decoding ACS (Access Control Services) parameters has been added to the pciconf utility.
- The kernel has been enhanced with the SPLIT_KERNEL_DEBUG setting, allowing debug information for the kernel and kernel modules to be saved to separate files.
- The implementation of support for the vDSO (virtual dynamic shared objects) mechanism in the ABI linux is almost complete, providing a limited set of system calls available in user space without context switching. The ABI linux on ARM64 systems has been brought to parity with the implementation for the AMD64 architecture.
- Migliorato il supporto hardware. Aggiunto il supporto per il monitoraggio delle prestazioni (hwpmc) per i CPU Intel Alder Lake. Aggiornato il driver iwlwifi per le schede wireless Intel con supporto per i nuovi chip e lo standard 802.11ac. Aggiunto il driver rtw88 per le schede wireless Realtek con interfaccia PCI. Le funzionalità del layer linuxkpi sono state ampliate per l'uso con i driver Linux su FreeBSD.
- La libreria OpenSSL è stata aggiornata alla versione 1.1.1t, LLVM/Clang alla versione 14.0.5 e il server e il client SSH sono stati aggiornati a OpenSSH 9.2p1 (nella versione precedente era usato OpenSSH 8.8p1). Aggiornate anche le versioni di bc 6.2.4, expat 2.5.0, file 5.43, less 608, libarchive 3.6.2, sendmail 8.17.1, sqlite 3.40.1, unbound 1.17.1, zlib 1.2.13.
È stata annunciata la declassificazione e la rimozione, a partire dalla branch FreeBSD 14.0, delle password monouso OPIE, dei driver ce e cp, dei driver per schede con interfaccia ISA, degli strumenti mergemaster e minigzip, dei componenti ATM in netgraph (NgATM), del processo in background telnetd e della classe VINUM in geom.
Fonte: opennet.ru
