A un anno e mezzo dalla formazione dell'ultimo aggiornamento, è stata pubblicata la release del sistema operativo NetBSD 10. Sono disponibili immagini di installazione di 630 MB, pronte per 57 architetture di sistema e 16 famiglie di CPU diverse. Il nuovo ramo include una serie di miglioramenti significativi, come il supporto per le liste di controllo degli accessi nel file system FFS, un'ottimizzazione significativa delle prestazioni, la crittografia del disco utilizzando l'algoritmo Adiantum e l'implementazione nel kernel dei driver per VPN WireGuard.
Il progetto supporta 8 porte principali che costituiscono il nucleo della strategia di sviluppo di NetBSD: amd64, i386, evbarm, evbmips, evbppc, hpcarm, sparc64 e xen, oltre a 49 porte secondarie collegate a CPU come alpha, hppa, m68010, m68k, sh3, sparc e vax. Le porte secondarie sono ancora supportate, ma hanno già perso rilevanza o non hanno un numero sufficiente di sviluppatori interessati al loro sviluppo. Una porta (acorn26) è inclusa in una terza categoria, in cui si trovano porte non funzionanti che potrebbero essere rimosse se non si trovano entusiasti interessati al loro sviluppo.
Miglioramenti principali in NetBSD 10:
- Nel file system FFS è stato aggiunto il supporto per le liste di controllo degli accessi (POSIX.1e ACL), implementato utilizzando attributi estesi dei file e trasferito da FreeBSD. Per utilizzare le ACL è stato proposto un nuovo tipo di FS FFSv2ea (non utilizzato per impostazione predefinita), a cui è possibile trasferire esistenti FS utilizzando l'utilità fsck_ffs.
- È stata aggiunta un'interfaccia di rete wg con implementazione VPN, compatibile con WireGuard.
- È stata ottimizzata la performance. È stata aumentata l'efficienza del cache dei percorsi dei file nel kernel. È stata migliorata la performance dello scheduler dei processi, adattato per funzionare su sistemi big.LITTLE Arm, che combinano core CPU veloci e lenti. Inoltre, è stata aumentata la performance delle chiamate di sistema select e poll. È stata migliorata la performance del file system tmpfs. Il processo di avvio è stato accelerato. Sono state aggiunte ottimizzazioni specifiche per le architetture x86 e AArch64. È stata aumentata la larghezza di banda delle operazioni di input/output e di rete sui sistemi AArch64.
- Sono state apportate ottimizzazioni al sistema di memoria virtuale: per la ricerca delle pagine di memoria è stato utilizzato un algoritmo radix tree più veloce, la velocità di tracciamento delle pagine di memoria pulite e sporche è stata aumentata, l'operazione fsync per file di grandi dimensioni è stata notevolmente accelerata, e migliorata l'efficienza nell'esecuzione parallela delle operazioni.
- È stato aggiunto il supporto per la crittografia dei dischi utilizzando l'algoritmo Adiantum, che consente di ottenere alta efficienza su sistemi senza accelerazione hardware per la crittografia AES. L'utilità cgdconfig ha aggiunto il supporto per le chiavi condivise, che possono essere utilizzate per crittografare più dispositivi. L'algoritmo per l'hashing delle password di default è stato cambiato in Argon2id. È stata inclusa la crittografia automatica delle partizioni di swap (vm.swap_encrypt=1). È stato aggiunto il supporto per i meccanismi hardware di accelerazione della crittografia forniti da processori x86 e Arm, ad esempio, istruzioni per l'accelerazione di AES e ChaCha. Nella realizzazione software di AES fornita dal kernel, è garantito un tempo di esecuzione costante per tutte le architetture.
- È stato aggiunto il supporto per le estensioni relative alla sicurezza fornite nei processori Armv8-A: PAN (Privileged Access Never), PA (Pointer Authentication), BTI (Branch Target Identification).
- Per identificare i problemi di sicurezza nel kernel sono stati utilizzati i meccanismi Kernel Concurrency Sanitizer e Kernel Memory Sanitizer.
- Nel stack di rete è stato implementato il supporto per l'RFC 7048, che migliora il funzionamento del meccanismo IPv6 Neighbor Discovery rendendolo indipendente dagli indirizzi.
- È stata aggiunta una nuova interfaccia di rete lagg per l'aggregazione dei collegamenti di rete e per garantire tolleranza ai guasti (lagg ha sostituito l'interfaccia agr).
- È stato aggiunto il driver vether con implementazione di interfacce virtuali Ethernet, che possono essere utilizzate in ponti di rete e al posto delle interfacce tap.
- Nell'implementazione di ipsec è stato aggiunto il sysctl net.key.allow_different_idtype per migliorare la compatibilità con altre VPN.
- È stato migliorato il supporto per il formato UDF (Universal Disk Format, FS per dischi ottici), che ora è compatibile a livello di errori con l'implementazione di Windows 10. Nell'utilità newfs_udf è stata introdotta la possibilità di generare in formato UDF 2.50 con una partizione separata per i metadati. È stata aggiunta l'utilità fsck_udf per il controllo e il ripristino dei filesystem UDF danneggiati.
- Nell'utilità fstat è stato aggiunto il supporto per ZFS.
- È stata ampliata la supporto per il meccanismo FUSE (Filesystem in Userspace), il driver refuse ora offre pieno supporto per le varianti API FUSE, utilizzate nelle versioni FUSE da 1.1 a 3.10.
- Nell'implementazione del RAID software è stata aggiunta la supporto per le configurazioni con ordine dei byte invertito (swapped-endian). L'utilità raidctl ha ora l'opzione «-t» per verificare la correttezza dei file di configurazione.
- È stata aggiunta una nuova utilità blkdiscard per eseguire manualmente operazioni TRIM sui dischi per informare sui blocchi non utilizzati.
- Nell'utilità scan_ffs è stata aggiunta la possibilità di mostrare le statistiche correnti al ricevimento del segnale SIGINFO (Ctrl+T).
- Sono state incluse nuove applicazioni:
- aiomixer — mixer audio
- realpath — restituisce il percorso assoluto di un file basato su un percorso relativo.
- tradcpp — preprocessore in stile K&R C.
- ioctlprint — mostra i valori ioctl.
- testpat — restituisce una tabella di test per valutare la riproduzione di colori dello schermo.
- warp — gioco classico dei sistemi BSD.
- Sono inclusi e attivati nel ctwm i font raster Spleen, forniti sotto licenza BSD e disponibili sia per schermi a bassa risoluzione che per schermi ad alta densità di pixel. Sono stati inclusi anche i font console Terminus.
- Nello strato di compatibilità con Linux (compat_linux) è stata aggiunta la supporto per i meccanismi eventfd, timerfd, timer POSIX, preadv e pwritev.
- È stato migliorato il supporto per la virtualizzazione. È stato aggiunto il supporto per Xen PVH, consentendo l'uso di driver Xen PV nei sistemi guest basati su HVM; è stata anche migliorata l'implementazione delle interfacce di rete para-virtualizzate. Nei kernel host (Dom0) per Xen è stato incluso il supporto per sistemi multiprocessore. Nei kernel per Xen è stata fornita la possibilità di utilizzare moduli condivisi con il kernel standard. Le interfacce di rete (xennet) e i dispositivi a blocchi (xbd) sono stati adattati per sistemi multiprocessore (hanno ottenuto lo stato MPSAFE). È stato notevolmente migliorato il supporto per l'hypervisor HyperV ed estese le funzionalità dell'hypervisor nvmm (NetBSD Virtual Machine Monitor). È stata aggiunta la possibilità di passare alla modalità di sospensione durante l'esecuzione macchine virtuali in nvmm.
- I driver VirtIO sono stati migliorati, ora implementano il supporto per la specifica VirtIO 1.0. È stato aggiunto il driver vio9p per il montaggio nei sistemi guest del filesystem VirtIO 9P, esportato dall'ambiente host. È stato aggiunto il driver viocon per la porta seriale virtuale.
- Sono state implementate chiamate di sistema eventfd e timerfd, compatibili con Linux e utilizzate in compat_linux. È stata aggiunta la chiamata di sistema fexecve per eseguire un file tramite un descrittore di file.
- Rimossi componenti obsoleti, ad esempio, è stata interrotta la supporto per le tecnologie HIPPI, FDDI e TokenRing; i driver nsmb e mount_smbfs per SMBFS sono stati rimossi dal kernel (non supportano le nuove versioni del protocollo SMB); il supporto per l'IPv6 Router Advertisement è stato spostato dallo spazio kernel a quello utente; rimosse le librerie libXTrap, libXevie e libglut; rimossi driver per molti dispositivi obsoleti.
- Significativa espansione del supporto hardware. È stato garantito il supporto per le funzionalità dei nuovi processori Intel e AMD. Aggiunto supporto per le nuove piattaforme ARM (Raspberry Pi 4, Orange Pi 5, Lichee Pi Zero, ODROID-N2+, M1 Mac Mini, HummingBoard Pulse, UDOO Neo Full, PINE64 Quartz64, Asus Tinker, ecc.). Espanso il supporto per l'architettura MIPS.
- Aggiunti 17 nuovi driver di dispositivi, ad esempio, driver per tablet Wacom, Realtek 8125 2.5 Gigabit Ethernet, Motorcomm YT8511C / YT8511H Gigabit Ethernet, Intel Ethernet 700, Broadcom GENETv5 Ethernet, acceleratori crittografici Intel QuickAssist e modem LTE Intel XMM7360.
- Aggiornati i driver grafici per GPU Intel, NVIDIA e AMD per sistemi x86. Il sottosistema DRM/KMS è stato sincronizzato con il kernel Linux 5.6.
- Aggiornate le versioni dei componenti di terze parti, incluso il gestore di finestre ctwm 4.0.3, gcc 10.5, lua 5.4.6, OpenSSL 3.0.12, postfix 3.8.4, tmux 3.2a, OpenSSH 9.6, X.org Server 21.1.7, BIND 9.18.24, Heimdal kerberos 7.8.0, unbound 1.19.1, wpa_supplicant 2.9, OpenLDAP 2.5.6, binutils 2.34, libfido2 1.13.0, pam-u2f 1.2.0, zlib 1.2.13.
Fonte: opennet.ru
