Due anni dopo la pubblicazione del ramo 14.0, è stata rilasciata la versione 15.0 di FreeBSD. Le build di installazione sono disponibili per le architetture amd64, aarch64, armv7, powerpc64, powerpc64le e riscv64. Inoltre, sono disponibili build per sistemi di virtualizzazione (QCOW2, VHD, VMDK, raw) e ambienti cloud come Amazon EC2, Google Compute Engine e Vagrant.
A partire dal ramo FreeBSD 15, il periodo di manutenzione per i rami principali dopo la prima release (15.0) è stato ridotto da 5 a 4 anni, con nuovi rami principali creati ogni due anni. Le release intermedie (15.1, 15.2, 15.3) saranno sviluppate secondo un ciclo di sviluppo fisso, con nuove versioni pubblicate in un singolo ramo circa ogni sei mesi, anziché una volta all'anno come in precedenza. Considerando la manutenzione simultanea di due rami principali diversi, ogni 3 mesi verrà pubblicata una nuova versione intermedia (15.4, 16.1, 15.5, 16.2, ecc.), ad eccezione della preparazione delle prime versioni dei nuovi rami principali, prima delle quali ci sarà una pausa di 6 mesi nelle versioni (ad esempio, la versione 15.3 verrà rilasciata a giugno 2027, la 16.0 a dicembre 2027, la 15.4 a marzo 2028, la 16.1 a giugno 2028).
Principali modifiche in FreeBSD 15.0 (le note di rilascio ufficiali, oltre alle modifiche specifiche della versione 15.0, menzionano molte funzionalità aggiunte in precedenza alle versioni 14.1, 14.2 e 14.3):
- È stata introdotta la possibilità di utilizzare il gestore di pacchetti pkg per installare e aggiornare i componenti del sistema di base. I pacchetti pkgbase possono essere forniti sul supporto di installazione per l'installazione offline o scaricati dal repository pkg.freebsd.org. Il repository FreeBSD-base non è abilitato di default nella configurazione pkg (/etc/pkg/FreeBSD.conf). Il programma di installazione bsdinstall offre due opzioni di installazione: tradizionale e tramite pacchetti (pkgbase). Il supporto per il metodo tradizionale, in cui il sistema di base viene trattato come un ambiente monolitico aggiornato tramite l'utilità freebsd-update, verrà rimosso a partire dal ramo FreeBSD 16. Un nuovo metodo, che prevede l'installazione del sistema di base come un set di pacchetti dal repository FreeBSD-base, è offerto di default nelle build per macchine virtuali e immagini per ambienti cloud, ma è attualmente considerato sperimentale per i sistemi regolari.
- È stato aggiunto il supporto per la compilazione di FreeBSD in ambienti non privilegiati che non richiedono privilegi di root. È possibile creare immagini ISO di installazione e immagini di sistema per macchine virtuali anche senza privilegi di root. Durante il processo di compilazione, i privilegi di root erano richiesti per creare file di dispositivo, impostare i permessi e montare file system aggiuntivi (ad esempio, durante la creazione di immagini disco).
- È stato implementato il supporto per build riproducibili, garantendo che i binari distribuiti vengano compilati a partire dal codice sorgente fornito e non contengano modifiche nascoste. Le build riproducibili garantiscono che i binari generati dal codice sorgente in diversi ambienti di build siano identici.
- La generazione di immagini di installazione e build di pacchetti binari per le architetture i386, armv6 e powerpc a 32 bit è stata interrotta. Delle piattaforme a 32 bit, rimane solo armv7. La possibilità di compilare programmi a 32 bit e di utilizzare la modalità COMPAT_FREEBSD32 per eseguire eseguibili a 32 bit in un ambiente kernel a 64 bit rimarrà almeno fino alla fine del ciclo di vita del ramo FreeBSD 16.
- Aggiunte chiamate di sistema che implementano il meccanismo inotify per tracciare le modifiche nei file system.
- Aggiunto il supporto per gli attributi di file denominati (attributi estesi in stile Solaris), che si prevede di supportare come meccanismo alternativo per la gestione degli attributi estesi disponibili per ZFS e NFSv4. Differenze rispetto al FreeBSD tradizionale e Linux Il metodo per lavorare con attributi estesi si riduce a rappresentare gli attributi in una directory di servizio, invisibile allo spazio dei nomi principale del file system e associata al file. Gli attributi vengono gestiti come i file normali; ad esempio, per determinare l'elenco degli attributi, è possibile utilizzare la funzione readdir().
- Il modulo mac_do è stato dichiarato pronto all'uso, consentendo di impostare policy che consentono agli utenti senza privilegi di modificare le credenziali dei processi. Per eseguire comandi con un altro utente, è stata predisposta l'utilità mdo, simile all'utilità su, ma non richiede suid root.
- Lo stato dei driver DRM i915 e amdgpu è sincronizzato con il kernel Linux 6.9. I driver dei dispositivi wireless rtw88 (Realtek 802.11n/ac), rtw89 (Realtek 802.11ax) e iwlwifi (Intel 02.11a/b/g/n/ac/ax/be) sono sincronizzati con il kernel Linux 6.17
- L'implementazione del Kernel-side TLS (KTLS) è abilitata per impostazione predefinita.
- Aggiunta l'utilità sndctl per la gestione delle impostazioni della scheda audio.
- Aggiunta l'utilità mididump per scaricare gli eventi MIDI 1.0 in tempo reale.
- Un nuovo backend di rete "slirp" è stato aggiunto all'hypervisor bhyve, che utilizza la libreria libslirp con un'implementazione user-space dello stack di rete. Il backend "slirp" consente di organizzare l'accesso alla rete del sistema guest dall'ambiente host senza dover configurare separatamente la rete lato host.
- L'implementazione di Kerberos nel core di FreeBSD è stata sostituita da MIT Kerberos da Heimdal Kerberos. Il flag WITHOUT_MITKRB5 può essere utilizzato per ripristinare Heimdal Kerberos. In FreeBSD 16, il supporto per la compilazione di Heimdal Kerberos verrà rimosso.
- Il comportamento delle chiamate di sistema setgroups, getgroups e initgroups durante la gestione dei gruppi di utenti è simile a quello di altre piattaforme (l'implementazione in FreeBSD differiva nel memorizzare l'identificatore effettivo del gruppo di processi nell'elemento zero dell'array con l'elenco dei gruppi).
- Il nuovo repository FreeBSD-kmods è abilitato di default nelle impostazioni del gestore pacchetti pkg. Contiene pacchetti di moduli kernel creati per specifici rami di release 15.x-RELEASE, anziché per il ramo 15-STABLE, costantemente aggiornato. Il repository FreeBSD-kmods risolve il problema dell'installazione di driver che si basano su interfacce kernel instabili (come i driver grafici). I repository "FreeBSD" e "FreeBSD-kmods", precedentemente presenti in /etc/pkg/FreeBSD.conf, sono stati rinominati "FreeBSD-ports" e "FreeBSD-ports-kmods".
- NFS ora supporta l'operazione CLONE, definita nella specifica NFSv4.2, che consente la copia rapida dei file clonando i blocchi sul server. Attualmente, la modalità funziona solo quando si esportano partizioni ZFS tramite NFS.
- Sui sistemi amd64 è stata aggiunta la possibilità di utilizzare più di 4 TB di RAM.
- Aggiunto il driver ufshci per supportare i controller del sistema di archiviazione con interfaccia UFSHCI (Universal Flash Storage Host Controller Interface).
- Sysctl net.link.bridge.member_ifaddrs è impostato su 0 per impostazione predefinita, ovvero le interfacce possono essere aggiunte ai bridge di rete senza Indirizzi IP.
- Affidabilità migliorata per le partizioni UFS contenenti più di 2,000,000,000 di inode. Il problema dell'anno 2038 è stato risolto nell'implementazione UFS1 (è possibile utilizzare date fino al 2106).
- Aggiunta l'opzione socket di rete SO_SPLICE per il pooling delle connessioni TCP (come un proxy che funziona senza copiare i dati nello spazio utente).
- Per impostazione predefinita, l'utilità grep disabilita l'attraversamento dei collegamenti simbolici durante la ricerca ricorsiva.
- Aggiunto il modulo kernel nvmftа per supportare i controller NVMe over Fabric e l'utilità nvmecontrol per connettersi a un controller NVMe over Fabric esterno.
- L'utilità data ora supporta l'output dell'ora con una precisione in nanosecondi, ad esempio, "date -Ins" restituirà "2024-04-22T12:20:28,763742224+02:00".
- Jail ora supporta l'opzione zfs.dataset per aggiungere una partizione ZFS, uno snapshot o un clone a una jail isolata. Il comando jail ora supporta i parametri "meta" e "env", che possono essere utilizzati per associare metadati o passare variabili d'ambiente. L'indirizzamento dei descrittori di jail è ora supportato, utilizzando le funzioni jail_set e jail_get, nonché le chiamate di sistema jail_attach_jd e jail_remove_jd. I filtri Kevent possono ora essere utilizzati per tracciare le operazioni di creazione, eliminazione, modifica e collegamento di jail.
- L'utilità newsyslog dispone di un parametro per impostare il metodo di compressione predefinito (bzip2, xz, zstd, gzip), eliminando la necessità di specificare flag separati (J, X, Y, Z) in ogni riga di newsyslog.conf.
- Nella libreria C standard, molte funzioni di stringa e di memoria utilizzano ottimizzazioni basate su SIMD.
- Il font Gallant utilizzato nei terminali virtuali è stato aggiornato con oltre 4300 nuovi glifi, tra cui glifi con caratteri cirillici e simboli matematici.
- Per impostazione predefinita, il tty ha impostato il flag IUTF8, che garantisce che i caratteri UTF-8 vengano rimossi correttamente quando si preme Backspace.
- L'utilità di dialogo utilizzata nel configuratore bsdconfig e nel programma di installazione bsdinstall è stata sostituita da bsddialog.
- L'utilità adduser utilizzata in bsdinstall ora crea un set di dati ZFS separato (partizione, snapshot o clone) per la directory home dell'utente se un set di dati ZFS è già in uso per la directory padre. È ora supportata anche la crittografia ZFS per le directory home. I parametri "Zcreate" e "Zencrypt" sono stati aggiunti ad adduser.conf per controllare l'attivazione di queste funzionalità.
- Consente la generazione di immagini di contenitori e sistemi conformi a OCI per Oracle Cloud.
- È stato aggiunto un nuovo tipo di immagine "piccola" per gli ambienti cloud compatibili con AWS EC2. A differenza delle immagini di base, queste immagini escludono dati di debug, test, librerie a 32 bit, il debugger LLDB, l'agente Amazon SSM e l'interfaccia a riga di comando di AWS. Le immagini di base EC2 ora si caricano il 76% più velocemente.
- L'impostazione net.inet.tcp.nolocaltimewait è stata disabilitata e deprecata per impostazione predefinita, ovvero è stata ripristinata la creazione predefinita di record TIME_WAIT per le connessioni TCP terminate sul lato del sistema locale. È stato aggiunto un nuovo sysctl net.inet.tcp.msl_local per configurare il tempo in cui una connessione rimane nello stato TIME_WAIT.
- Per impostazione predefinita, il supporto per la creazione di connessioni di rete a localhost che specificano INADDR_ANY è disabilitato. Per abilitare il supporto, impostare net.inet.ip.connect_inaddr_wild sysctl su 1.
- Il gestore di volumi logici gvinum, utilizzato per il RAID software, è stato rimosso. Lo sviluppo di gvinum si è interrotto circa 15 anni fa, nonostante il codice presenti una serie di problemi noti che nessuno si è ancora preso la briga di risolvere. Al posto di gvinum, si consiglia di utilizzare gconcat, gmirror, gstripe, graid o zfs.
- Il driver agp (Accelerated Graphics Port), necessario per molti driver di vecchie schede video, è destinato alla rimozione in FreeBSD 16. Anche i seguenti driver sono stati deprecati e la loro rimozione è stata programmata: fdc (IBM PC Floppy Disk Controller), firewire (IEEE1394 Serial Bus), le (AMD Am7900 LANCE e Am79C9xx Ethernet) e upgt (USB 802.11g).
- La funzione readdir_r è stata deprecata.
- Il server SNMP bsnmpd ha interrotto il supporto per il trasporto UDP.
- La generazione di chiavi host RSA per SSH ed EC2 AMI è stata interrotta. Il supporto DSA è stato rimosso da OpenSSH. Il database delle chiavi pubbliche, che si basa sull'algoritmo DES, è stato rimosso.
- ftpd e shar sono stati rimossi dal sistema di base e al loro posto dovrebbero essere utilizzate le porte ftp/freebsd-ftpd e sysutils/freebsd-shar.
- L'utilità fdisk è stata deprecata e al suo posto dovrebbe essere utilizzata gpart.
- Il driver syscons è stato deprecato perché non è compatibile con UEFI, non supporta UTF-8 e si basa su un blocco globale.
- Versioni aggiornate di LLVM 19.1.7, OpenSSH 10.0p2, OpenSSL 3.5.4, OpenZFS 2.4.0rc4, Lua 5.4.8, jemalloc 5.3.0, Awk 20250804 (con supporto UTF-8), bc 7.1.0, unicode 16.0.0, ncurses 6.5, libarchive 3.8.2, tcpdump 4.99.5, unbound 1.24.1, less 679, file 5.46, GoogleTest 1.15.2.
Fonte: opennet.ru
