Dopo due anni dalla pubblicazione della branch 14.0, è stato rilasciato FreeBSD 15.0. Le build di installazione sono state preparate per le architetture amd64, aarch64, armv7, powerpc64, powerpc64le e riscv64. Sono inoltre disponibili build per sistemi di virtualizzazione (QCOW2, VHD, VMDK, raw) e ambienti cloud come Amazon EC2, Google Compute Engine e Vagrant.
A partire dalla branch FreeBSD 15, il tempo di supporto per le branch significative dopo la creazione della prima release (15.0) è stato ridotto da 5 a 4 anni, e nuove branch significative saranno create ogni due anni. Le release intermedie (15.1, 15.2, 15.3) saranno sviluppate nell'ambito di un ciclo di sviluppo fisso, che prevede la pubblicazione di nuove versioni in una branch circa ogni 6 mesi, anziché una volta all'anno come in passato. Tenendo conto del supporto contemporaneo di due diverse branch significative, una nuova release intermedia verrà pubblicata ogni 3 mesi (15.4, 16.1, 15.5, 16.2, ecc.), ad eccezione della preparazione delle prime release di nuove branch significative, per le quali ci sarà una pausa di 6 mesi nelle release (ad esempio, la release 15.3 sarà formata a giugno 2027, la 16.0 a dicembre 2027, la 15.4 a marzo 2028, la 16.1 a giugno 2028).
Principali novità in FreeBSD 15.0 (nelle note ufficiali di rilascio, oltre alle modifiche specifiche per la versione 15.0, sono menzionate molte funzionalità precedentemente aggiunte nelle 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 nel supporto di installazione per l'installazione offline o scaricati dal repository pkg.freebsd.org. Nella configurazione pkg (/etc/pkg/FreeBSD.conf), il repository FreeBSD-base non è abilitato per impostazione predefinita. L'installatore bsdinstall offre due modalità di installazione: tradizionale e tramite pacchetti (pkgbase). Si prevede di rimuovere il supporto per il metodo tradizionale, in cui il sistema di base è considerato un ambiente monolitico aggiornabile tramite l'utilità freebsd-update, nella versione FreeBSD 16. Il nuovo metodo, che prevede l'installazione del sistema di base come insieme di pacchetti dal repository FreeBSD-base, è proposto per impostazione predefinita nelle build per di macchine virtuali e nelle immagini per ambienti cloud, ma è attualmente considerato sperimentale per i sistemi tradizionali.
- È stata aggiunta la supporto per la creazione di FreeBSD in ambienti non privilegiati, senza necessità dei diritti di root. Senza i diritti di root è possibile anche creare immagini iso di installazione e immagini di sistema per macchine virtuali. Nella fase di creazione, i diritti di root erano necessari per creare i file di dispositivi, impostare i diritti di accesso e montare file system aggiuntivi (ad esempio, durante la creazione di immagini disco).
- È stata implementata la supporto per le build riproducibili, che consentono di verificare che i file binari distribuiti siano stati compilati dal codice sorgente fornito e non contengano modifiche nascoste. Le build riproducibili garantiscono l'identità dei file binari generati dal codice sorgente in diversi ambienti di build.
- È stata interrotta la produzione di immagini di installazione e di pacchetti binari per architetture a 32 bit i386, armv6 e powerpc. Tra le piattaforme a 32 bit rimane solo armv7. La possibilità di compilare programmi a 32 bit e utilizzare la modalità COMPAT_FREEBSD32 per eseguire file eseguibili a 32 bit in un ambiente basato su un kernel a 64 bit sarà mantenuta almeno fino alla fine del ciclo di vita della versione FreeBSD 16.
- Sono state aggiunte chiamate di sistema con implementazione del meccanismo inotify per monitorare le modifiche nei file system.
- Aggiunto supporto per attributi di file nominati (attributi estesi in stile Solaris), che verranno supportati come meccanismo alternativo per gestire attributi estesi disponibili per ZFS e NFSv4. Le differenze rispetto ai metodi tradizionali di FreeBSD e Linux per lavorare con gli attributi estesi riguardano la rappresentazione degli attributi in una directory di servizio invisibile nello spazio principale del filesystem e associata al file. Gli attributi sono trattati come file normali, ad esempio, per determinare l'elenco degli attributi è possibile eseguire la funzione readdir().
- È stato dichiarato pronto per l'uso il modulo mac_do, che consente di impostare politiche che permettono agli utenti non privilegiati di modificare le credenziali dei processi. Per eseguire comandi come un altro utente, è stata preparata un'utilità chiamata mdo simile all'utilità su, ma senza richiedere il 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 802.11a/b/g/n/ac/ax/be) sono sincronizzati con il kernel Linux 6.17.
- L'implementazione del protocollo TLS a livello kernel (KTLS) è attivata per impostazione predefinita.
- Aggiunto lo strumento sndctl per gestire le impostazioni delle schede audio.
- Aggiunto lo strumento mididump per il dump degli eventi MIDI 1.0 in tempo reale.
- Aggiunto un nuovo backend di rete "slirp" all'hypervisor bhyve, che utilizza la libreria libslirp con l'implementazione dello stack di rete in spazio utente. Il backend "slirp" consente l'accesso alla rete del sistema ospite dall'ambiente host senza una configurazione separata della rete lato host.
- L'implementazione di Kerberos nel core di FreeBSD è stata sostituita da Heimdal Kerberos a MIT Kerberos. Per ripristinare Heimdal Kerberos durante la compilazione, è possibile utilizzare il flag WITHOUT_MITKRB5. In FreeBSD 16, il supporto per la compilazione di Heimdal Kerberos sarà rimosso.
- Il comportamento delle chiamate di sistema setgroups, getgroups e initgroups nella gestione dei gruppi utente è simile a quello di altre piattaforme (la differenza nell'implementazione su FreeBSD riguardava la memorizzazione dell'identificatore di gruppo efficace nel primo elemento dell'array con l'elenco dei gruppi).
- Nelle impostazioni del gestore di pacchetti pkg è abilitato per impostazione predefinita un nuovo repository FreeBSD-kmods, che ospita pacchetti con moduli del kernel compilati per rami di rilascio specifici 15.x-RELEASE, anziché il ramo sempre aggiornato 15-STABLE. Il repository FreeBSD-kmods risolve il problema dell'installazione di driver legati a interfacce instabili del kernel (ad esempio, driver grafici). I repository precedentemente presenti in /etc/pkg/FreeBSD.conf 'FreeBSD' e 'FreeBSD-kmods' sono stati rinominati in 'FreeBSD-ports' e 'FreeBSD-ports-kmods'.
- In NFS è stata aggiunta la supporto per l'operazione CLONE, definita nella specifica NFSv4.2 e che consente una copia rapida dei file tramite clonazione dei blocchi sul server. Attualmente, questa modalità funziona solo esportando tramite NFS partizioni ZFS.
- Nei sistemi amd64 è stata aggiunta la possibilità di utilizzare più di 4TB di RAM.
- Aggiunto il driver ufshci per supportare i controller di storage con interfaccia UFSHCI (Universal Flash Storage Host Controller Interface).
- Sysctl net.link.bridge.member_ifaddrs è impostato su 0 per impostazione predefinita, ovvero è possibile aggiungere interfacce a ponte di rete senza. IP addresses.
- Aumentata l'affidabilità delle partizioni con FS UFS contenenti oltre 2.000.000.000 inode. Nella realizzazione del FS UFS1 è stata risolta la problematica dell'anno 2038 (è possibile utilizzare date fino al 2106).
- Aggiunta l'opzione dei socket di rete SO_SPLICE per unire le connessioni TCP (simile a un proxy che opera senza copiare i dati nello spazio utente).
- Nell'utilità grep l'attraversamento dei link simbolici è disabilitato per impostazione predefinita durante la ricerca ricorsiva.
- Aggiunto il modulo del kernel nvmft per supportare i controller NVMe over Fabric e l'utilità nvmecontrol per connettersi a un controller esterno NVMe over Fabric.
- Nell'utilità date è stata aggiunta la supporto per la visualizzazione dell'orario con precisione al nanosecondo, ad esempio, "date -Ins" visualizzerà "2024-04-22T12:20:28,763742224+02:00".
- Nel jail è stata aggiunta la supporto per l'opzione zfs.dataset per includere nella jail l'insieme, uno snapshot o un clone ZFS. Nella comando jail è stato aggiunto il supporto per i parametri «meta» ed «env», che consentono di collegare i metadati o di passare le variabili d'ambiente. È stata implementata la possibilità di indirizzare gli ambienti jail tramite jail-descrittori, per i quali sono state proposte le funzioni jail_set e jail_get, insieme con le chiamate di sistema jail_attach_jd e jail_remove_jd. È stata aggiunta la capacità di utilizzare filtri kevent per monitorare le operazioni di creazione, eliminazione, modifica e aggiunta di Jail.
- Nell'utilità newsyslog è stata implementata una parametro per definire il metodo di compressione predefinito utilizzato (bzip2, xz, zstd, gzip), eliminando la necessità di specificare flag separati (J, X, Y, Z) in ogni riga di newsyslog.conf.
- Nella libreria standard C sono state integrate ottimizzazioni basate su istruzioni SIMD in molte funzioni per la gestione delle stringhe e della memoria.
- Nel font Gallant, utilizzato nei terminali virtuali, sono stati aggiunti oltre 4300 nuovi glifi, inclusi glifi con simboli in cirillico e segni matematici.
- Nel tty è impostato per default il flag IUTF8, che consente di rimuovere correttamente i caratteri UTF-8 quando si preme Backspace.
- L'utilità dialog, utilizzata nel configuratore bsdconfig e nell'installatore bsdinstall, è stata sostituita da bsddialog.
- Nell'utilità adduser, utilizzata in bsdinstall, è stata garantita la creazione di un dataset ZFS separato (partizione, snapshot o clone) per la home directory dell'utente, se il dataset ZFS è già in uso per la directory principale. È stata anche aggiunta la possibilità di utilizzare la crittografia delle home directory tramite ZFS. Per gestire l'attivazione di queste funzionalità sono stati aggiunti i parametri «Zcreate» e «Zencrypt» in adduser.conf.
- È stato garantito la creazione di immagini di container e immagini di sistema compatibili OCI per Oracle Cloud.
- È stato aggiunto un nuovo tipo di immagini «small» per ambienti cloud compatibili con AWS EC2. A differenza delle immagini di base, sono escluse le informazioni di debug, i test, le librerie a 32 bit, il debugger LLDB, l'Amazon SSM Agent e l'AWS CLI. Il caricamento delle immagini «base» per EC2 è stato accelerato del 76%.
- Di default è disabilitata e contrassegnata come obsoleta la configurazione net.inet.tcp.nolocaltimewait, ovvero è stato ripristinato il comportamento predefinito per la creazione delle voci TIME_WAIT per le connessioni TCP terminate dalla parte del sistema locale. È stato aggiunto un nuovo sysctl net.inet.tcp.msl_local per impostare il tempo di permanenza della connessione nello stato TIME_WAIT.
- Di default è disabilitato il supporto per la creazione di connessioni di rete a localhost che specificano INADDR_ANY. Per ripristinare il supporto, è possibile impostare il sysctl net.inet.ip.connect_inaddr_wild su 1.
- Rimosso il gestore di volumi logici gvinum, utilizzato per RAID software. Lo sviluppo di Gvinum si è fermato circa 15 anni fa, e nel codice ci sono diversi problemi noti che non sono stati mai risolti. Si raccomanda di utilizzare gconcat, gmirror, gstripe, graid o zfs come alternative a gvinum.
- È previsto per l'eliminazione nel FreeBSD 16 il driver agp (Accelerated Graphics Port), necessario per il funzionamento di molti driver per vecchie schede grafiche. Hanno anche dichiarato obsoleti e programmati per la rimozione i driver: fdc (IBM PC Floppy Disk Controller), firewire (IEEE1394 Serial Bus), le (AMD Am7900 LANCE e Am79C9xx Ethernet) e upgt (USB 802.11g).
- È stata dichiarata obsoleta la funzione readdir_r.
- Nel server SNMP bsnmpd è stata interrotta la supporto per il trasporto UDP.
- Generazione delle chiavi host RSA per SSH e EC2 AMI interrotta. Supporto per DSA rimosso da OpenSSH. Rimosso il database publickey, legato all'algoritmo DES.
- Ftpd e shar rimossi dal sistema base; si consigliano i porti ftp/freebsd-ftpd e sysutils/freebsd-shar.
- L'utilità fdisk è stata dichiarata obsoleta; si consiglia di utilizzare gpart.
- Il driver syscons è stato classificato come obsoleto, in quanto non compatibile con UEFI, non supporta UTF-8 e dipende dal lock globale.
- Aggiornate le versioni 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 per 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
