Dopo due anni e mezzo dalla pubblicazione della versione 13.0, è stato creato il rilascio di FreeBSD 14.0. Le immagini di installazione sono state preparate per le architetture amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv7, aarch64 e riscv64. Sono state inoltre preparate versioni per sistemi di virtualizzazione (QCOW2, VHD, VMDK, raw) e ambienti cloud come Amazon EC2, Google Compute Engine e Vagrant. La versione FreeBSD 14 sarà l'ultima con supporto per piattaforme a 32 bit. Nella versione FreeBSD 15 rimarrà solo il supporto per sistemi a 64 bit, ma sarà comunque possibile compilare programmi a 32 bit e utilizzare la modalità COMPAT_FREEBSD32 per eseguire file eseguibili a 32 bit in un ambiente a 64 bit.
Variazioni principali:
- Come interprete dei comandi per l'utente root, per impostazione predefinita è configurato /bin/sh.
- Per i dispositivi NVME, per impostazione predefinita su tutte le piattaforme è utilizzato il driver nda. Per ripristinare il precedente driver nvd, nel file loader.conf è prevista l'impostazione "hw.nvme.use_nvd=1".
- È stata aggiunta una nuova utility "fwget", che identifica l'hardware che necessita di firmware e installa i pacchetti di firmware corrispondenti. Attualmente sono supportati solo dispositivi PCI e firmware per GPU Intel e AMD.
- È stata aggiunta una nuova utility base64 per la codifica e la decodifica dei dati nel formato base64.
- È stata aggiunta l'utility tcpsso, che consente di impostare le opzioni del socket per le connessioni TCP esistenti (ad esempio, è possibile cambiare il modulo di controllo della congestione o lo stack TCP).
- Come agente di consegna della posta, per impostazione predefinita è utilizzato dma (DragonFly Mail Agent) al posto di sendmail. Sendmail è stato mantenuto nella distribuzione base ed aggiornato alla versione 8.17.1.
- In KTLS, l'implementazione del protocollo TLS che opera a livello del kernel di FreeBSD, è stata aggiunta la supporto per l'accelerazione hardware di TLS 1.3 sul lato ricevente. L'accelerazione è fornita tramite la delega a una scheda di rete di alcune operazioni relative al trattamento dei pacchetti crittografati.
- Nel file di configurazione jail.conf è stata aggiunta la direttiva ".include", che consente di includere file aggiuntivi durante il caricamento della configurazione, dove è possibile utilizzare maschere nei percorsi. È stato ampliato il parametro sysctl security.bsd.see_jail_proc, tramite il quale ora è possibile negare agli utenti non autorizzati, in un cage specifico, la forza di terminazione, la modifica della priorità e il debug dei processi.
- I programmi pw e bsdinstall ora creano gli utenti per impostazione predefinita nella directory «/home», anziché in «/usr/home». Il collegamento simbolico per «/home», che puntava a «/usr/home», non viene più creato.
- Per impostazione predefinita, è disabilitata la configurazione di build PROFILE: le versioni profilate delle librerie di sistema non vengono più fornite, è meglio utilizzare l'hardware di profilazione (hwpmc).
- È abilitata la build di file eseguibili per architetture a 64 bit in modalità PIE (Position Independent Executable).
- Aggiunta la possibilità di passare l'accesso a TPM (Trusted Platform Module) e GPU nel hypervisor Bhyve (in ambienti virtuali per chip AMD e Intel).
- L'implementazione del file system ZFS è stata aggiornata alla versione OpenZFS 2.2. È stata aggiunta la supporto del file system ZFS allo strumento makefs. È stata fornita la possibilità di creare un pool ZFS associato a un singolo disco virtuale vdev.
- Il numero di core CPU supportati (parametro MAXCPU) nei sistemi basati su architettura amd64 e arm64 è stato aumentato da 256 a 1024.
- In UFS, per configurazioni con il journaling (soft updates) abilitato, è consentita l'esecuzione di controlli in background del file system utilizzando gli snapshot UFS. Sono state aggiunte verifiche hash aggiuntive per identificare danni agli superblocs, alle mappe dei gruppi di cilindri e agli inode.
- Aggiunto il file system tarfs, utilizzabile con archivi tar compressi con zstd.
- È stato aggiunto l'insieme di strumenti boottrace per monitorare gli eventi avvenuti durante la fase di avvio e spegnimento del sistema.
- Aggiunto il parametro di configurazione del kernel FIRECRACKER per eseguire FreeBSD nel sistema di virtualizzazione Firecracker, progettato per l'esecuzione di macchine virtuali con costi minimi. Il tempo di avvio del kernel FreeBSD 14 in esecuzione su Firecracker è stato ridotto a 25 millisecondi, consentendo l'avvio di ambienti con FreeBSD secondo necessità per realizzare un'infrastruttura serverless.
- Nel bootloader, scritto in linguaggio Lua, è stata implementata la supporto per l'esecuzione di file lua posizionati nella directory loader_conf_files in un ambiente sandbox speciale.
- È stata ampliata la supporto per NFS. È stata aggiunta una nuova opzione di montaggio «syskrb5» per supportare Kerberos in NFSv 4.1/4.2 e implementata la supporto per l'operazione ExchangeID. È stata fornita la possibilità di eseguire nfsd, nfsuserd, mountd, gssd e rpc.tlsservd in un ambiente di rete isolato vnet.
- Nello script growfs è stata implementata la possibilità di posizionare la partizione di swap alla fine dell'area ampliabile sul disco.
- Aggiunto un nuovo provider DTrace kinst (dtrace_kinst), che consente di tracciare le strutture del kernel.
- Nel sottosistema crittografico del kernel è stata aggiunta la supporto per l'algoritmo di cifratura XChaCha20-Poly1035 AEAD, oltre a un'API per l'uso della curva ellittica curve25519 (per WireGuard).
- Ridotto il tempo di riavvio. Aggiunto il parametro sysctl kern.reboot_wait_time, tramite il quale è possibile modificare il ritardo prima del riavvio effettivo dopo l'uscita di tutti i messaggi diagnostici sulla console. Per impostazione predefinita, il ritardo è stato rimosso.
- Nel kernel è stato aggiunto il sottosistema timerfd, che semplifica il porting delle applicazioni da Linux.
- Aggiunto il sysctl machdep.mitigations.zenbleed.enable per bloccare la vulnerabilità Zenbleed sui processori AMD Zen2.
- Nel wpa_supplicant e in hostapd è stata aggiunta la supporto per Wi-Fi 6. Nel driver iwlwifi è garantito il funzionamento con i chip Intel che supportano Wi-Fi 6E AX411/AX211/AX210.
- Per il kernel su sistemi amd64 è stata garantita la supporto per gli strumenti AddressSanitizer e MemorySanitizer del progetto LLVM.
- Negli script rc.d è stato consentito l'uso del metodo status, anche se nel script non è stato definito il nome del programma (procname) e il file PID.
- La velocità di trasmissione dei dati attraverso la porta seriale nel kernel, nei bootloader e nello spazio utente è stata aumentata per impostazione predefinita da 9600 a 115200 bps. Il tono del segnale acustico è stato impostato a 800Hz. È stata garantita l'integrazione con devd per la riproduzione del segnale acustico attraverso la scheda audio. Per la console vt, il segnale acustico è disattivato per impostazione predefinita (per attivarlo, è necessario eseguire i comandi «sysctl kern.vt.enable_bell=1» e «kbdcontrol -b normal»).
- Migliorata la supporto per l'architettura di accelerazione hardware delle operazioni di rete NXP DPAA2 (Data Path Acceleration Architecture Gen2).
- Aggiunto il driver igc per controller Ethernet Intel I225, che supporta velocità di 2.5 Gbps.
- Per impostazione predefinita è attivata la configurazione net.inet.tcp.nolocaltimewait, che disabilita la creazione di voci timewait per le connessioni TCP chiuse dalla parte del sistema locale.
- È stata ampliata e attivata per impostazione predefinita la supporto per il protocollo di comunicazione Netlink (RFC 3549), utilizzato in Linux per organizzare l'interazione del kernel con i processi nello spazio utente. Alcuni strumenti di rete sono stati convertiti per utilizzare Netlink.
- Il filtro pacchetti pf garantisce la compatibilità con la sintassi e il comportamento delle operazioni di normalizzazione dei pacchetti (scrubbing) della versione pf di OpenBSD. In pfsync è stata implementata la possibilità di utilizzare il trasporto IPv6. Il formato dei pacchetti pfsync è stato esteso per supportare code, normalizzazione dei pacchetti e regole route-to.
- Interfaccia di rete if_stf (IPv6 su IPv4) aggiunta supporto IPv6 Rapid Deployment (RFC 5969). Per impostazione predefinita, la modalità IPv6 nodeinfo (RFC 4620) è disabilitata.
- Il parametro sysctl net.inet.tcp.nolocaltimewait è abilitato per impostazione predefinita, disabilitando la creazione di registrazioni con stato timewait per le connessioni TCP interrotte localmente.
- Per impostazione predefinita, per il TCP è stato utilizzato il meccanismo di gestione della congestione della rete CUBIC invece di NewReno, consentendo un utilizzo più ampio della larghezza di banda disponibile.
- In IPv4 è stata disabilitata l'invio di pacchetti di broadcast all'indirizzo zero della sottorete, a meno che tale indirizzo non sia esplicitamente dichiarato come broadcast. Questa modifica consente l'uso di indirizzi per host che terminano con “.0”.
- Sono state modificate le impostazioni di OpenSSH: in scp è attivato per impostazione predefinita il protocollo SFTP invece di scp/rcp, è stata disabilitata la supporto per firme RSA/SHA-1, i parametri VerifyHostKeyDNS e X11Forwarding sono impostati su “no”, è stata rimossa la direttiva VersionAddendum e il supporto per le impostazioni HPN è stato eliminato.
- Nell'utilità date è stata aggiunta l'opzione “-z” per la conversione dei fusi orari.
- Nell'utilità diff è stata aggiunta l'opzione “—color” per una visualizzazione dei cambiamenti a colori.
- Nell'utilità sleep è stato aggiunto il supporto per unità di misura diverse dai secondi (ad esempio, è possibile specificare “sleep 1h 30m”).
- Nelle utilità head e tail è stato aggiunto il supporto per le opzioni “-q” e “-h”, e implementata la possibilità di specificare valori con suffissi nel sistema internazionale di unità SI. In head è stata rimossa la limitazione sul numero massimo di righe a 2^31.
- Nell'utilità systat è stato aggiunto il comando “iolat” per visualizzare informazioni sui ritardi di input/output calcolati dal pianificatore CAM.
- La libreria libncursesw è stata divisa in due librerie: libtinfow e libncursesw. È stato aggiunto il supporto per l'uso da parte di ncurses del database terminfo e non solo di termcap.
- Per l'architettura aarch64 (arm64) è stata implementata e abilitata per impostazione predefinita l'opzione di compilazione COMPAT_LIB32, che consente la compilazione di librerie a 32 bit per i sistemi ARM64, permettendo l'esecuzione di file eseguibili compilati per la piattaforma armv7.
- Migliorato il supporto per i sistemi cloud. Per AWS EC2 sono state aggiunte build sperimentali con filesystem radice ZFS e cloud-init. Per Azure sono state fornite immagini per le architetture arm64 e amd64, con opzione di scelta tra UFS o ZFS. Aggiunto il driver per la scheda di rete virtuale gve (Google Virtual NIC).
- Aggiunto nel sistema ACPI il supporto per il valore soglia _CR3, che consente di impostare la temperatura al raggiungimento della quale il sistema entrerà in modalità di sospensione (S3).
- Aggiornate le versioni delle applicazioni e librerie di terze parti incluse nel sistema di base: OpenSSH 9.5p1, OpenSSL 3.0.12 (in precedenza era stata utilizzata la versione 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. L'implementazione dello strumento objdump è stata sostituita con llvm-objdump. Il compilatore Clang è stato aggiornato alla versione 16.
- Eseguita la pulizia dei sistemi obsoleti:
- Rimosso dal sistema di base il supporto per le password usa e getta OPIE (per ripristinare l'uso è possibile installare il pacchetto security/opie).
- Rimossi i driver per le schede audio con interfaccia ISA.
- Rimossi gli strumenti fmtree e minigzip.
- Rimossi i componenti ATM in netgraph (NgATM).
- Rimosso il processo in background telnetd (è possibile utilizzare il pacchetto net/freebsd-telnetd).
- Rimossa la classe VINUM in geom.
- Rimossi driver obsoleti amr, iscsi_initiator, iir, mn, mly, nlmrsa e twa.
- Dal kernel GENERIC e MINIMAL è stato rimosso il parametro VESA.
- Rimosso il supporto per le operazioni crittografiche asimmetriche dal framework crittografico a livello kernel OCF (Open Cryptographic Framework).
- Dichiarato obsoleto lo strumento mergemaster, che deve essere sostituito con etcupdate.
- Rimosso lo strumento portsnap (per estrarre i porti utilizzare «git clone https://git.FreeBSD.org/ports.git /usr/ports»).
- Interrotto il rilascio di build per l'architettura armv6.
- Rimosso il supporto per l'architettura MIPS.
Fonte: opennet.ru
