una significativa release del sistema operativo , che introduce un nuovo insieme di funzionalità. Per il download immagini di installazione di 470 MB. La release di NetBSD 9.0 è ufficialmente disponibile in versioni per e 15 diverse famiglie di CPU.
Sono stati evidenziati 8 port primariamente supportati, che costituiscono il nucleo della strategia di sviluppo di NetBSD: amd64, i386, evbarm, evbmips, evbppc, hpcarm, sparc64 e xen. 49 port, associati a CPU come alpha, hppa, m68010, m68k, sh3, sparc e vax, sono stati classificati in una seconda categoria, ovvero sono ancora supportati, ma hanno perso attualità o non hanno un numero sufficiente di sviluppatori interessati al loro sviluppo. Un port (acorn26) è stato incluso in una terza categoria, dove si trovano port non funzionanti, che sono in procinto di essere rimossi se non si trovano entusiasti disposti a svilupparli.
Chiave NetBSD 9.0:
- Aggiunto un nuovo hypervisor , che supporta i meccanismi hardware di virtualizzazione SVM per CPU AMD e VMX per CPU Intel. Una caratteristica di NVMM è che a livello di kernel viene eseguito solo il set minimo necessario di wrapper attorno ai meccanismi hardware di virtualizzazione, mentre tutto il codice di emulazione hardware è spostato dallo spazio del kernel a quello dell'utente. Per la gestione delle macchine virtuali è stato preparato un toolkit basato sulla libreria libnvmm, oltre al pacchetto qemu-nvmm per avviare sistemi guest utilizzando NVMM. L'API di libnvmm copre funzioni come la creazione e l'avvio di una macchina virtuale, l'assegnazione di memoria al sistema guest e la distribuzione di VCPU. Tuttavia, libnvmm non contiene funzioni di emulatore, ma fornisce solo un'API che consente di integrare il supporto NVMM in emulatori esistenti come QEMU;
- Supporto assicurato per l'architettura a 64 bit AArch64 (ARMv8-A), incluse le sistemi server che soddisfano i requisiti ARM (SBBR+SBSA), e sistemi big.LITTLE (una combinazione in un unico chip di nuclei potenti ma ad alto consumo energetico e nuclei meno performanti ma più efficienti). È supportata l'esecuzione di applicazioni a 32 bit in un ambiente a 64 bit tramite l'uso di COMPAT_NETBSD32. È possibile utilizzare fino a 256 CPU. È supportato l'avvio in emulatore QEMU e SoC:
- Allwinner A64, H5, H6
- Amlogic S905, S805X, S905D, S905W, S905X
- Broadcom BCM2837
- NVIDIA Tegra X1 (T210)
- Rockchip RK3328, RK3399
- Schede server SBSA/SBBR, come Amazon Graviton, Graviton2, AMD Opteron A1100, Ampere eMAG 8180, Cavium ThunderX, Marvell ARMADA 8040.
- Ampliato il supporto per dispositivi basati sull'architettura ARMv7-A. Aggiunto supporto per sistemi big.LITTLE e avvio tramite UEFI. È possibile utilizzare fino a 8 CPU. Aggiunto supporto per SoC:
- Allwinner A10, A13, A20, A31, A80, A83T, GR8, H3, R8
- Amlogic S805
- Arm Versatile Express V2P-CA15
- Broadcom BCM2836, BCM2837
- Intel Cyclone V SoC FPGA
- NVIDIA Tegra K1 (T124)
- Samsung Exynos 5422
- TI AM335x, OMAP3
- Xilinx Zynq 7000
- Aggiornati i driver grafici per GPU Intel (aggiunto il supporto per Intel Kabylake), NVIDIA e AMD per sistemi x86. Il sottosistema DRM/KMS è sincronizzato con il kernel Linux 4.4. Aggiunti nuovi driver per GPU utilizzati su sistemi ARM, inclusi i driver DRM/KMS per Allwinner DE2, Rockchip VOP e TI AM335x LCDC, driver framebuffer per ARM PrimeCell PL111 e TI OMAP3 DSS;
- È stato migliorato il supporto per l'esecuzione di NetBSD come sistema operativo guest. È stata aggiunta la supporto per il dispositivo fw_cfg (QEMU Firmware Configuration), Virtio MMIO e PCI per ARM. È stato garantito il supporto per HyperV su x86;
- Sono stati implementati contatori per il monitoraggio delle prestazioni, che permettono di analizzare in tempo reale le performance del kernel e delle applicazioni utente. La gestione avviene tramite il comando tprof. Sono supportate le piattaforme Armv7, Armv8 e x86 (AMD e Intel);
- Per l'architettura x86_64 il meccanismo di randomizzazione dello spazio degli indirizzi del kernel (KASLR, Kernel Address Space Layout Randomization), che aumenta la resilienza rispetto ad alcune tipologie di attacchi sfruttando vulnerabilità nel kernel, grazie alla generazione di una disposizione casuale del codice del kernel in memoria ad ogni avvio;
- Per l'architettura x86_64 è stato aggiunto il supporto , una tecnica per identificare le perdite di memoria del kernel, che ha permesso di trovare e correggere oltre 25 bug nel kernel;
- Per le architetture x86_64 e Aarch64 è stato implementato un meccanismo di debugging KASan (Kernel address sanitizer), che consente di identificare errori nella gestione della memoria, come accessi a blocchi di memoria già liberati e overflow di buffer;
- È stato aggiunto il meccanismo KUBSAN (Kernel Undefined Behavior Sanitizer) per identificare i casi di comportamento indefinito nel kernel
- Per l'architettura x86_64 è stato implementato il driver KCOV (Kernel Coverage) per l'analisi della copertura del codice del kernel;
- È stato aggiunto il Userland Sanitizer per identificare errori e anomalie nell'esecuzione delle applicazioni nello spazio utente;
- È stato introdotto il meccanismo KHH (Kernel Heap Hardening) per proteggere l'heap da alcuni tipi di errori di gestione della memoria;
- una valutazione della sicurezza dello stack di rete;
- È stato migliorato l'insieme di strumenti di debug ptrace;
- È stata effettuata una pulizia del kernel da sottosistemi obsoleti e non più mantenuti, come NETISDN (driver daic, iavc, ifpci, ifritz, iwic, isic), NETNATM, NDIS, SVR3, SVR4, n8, vm86 e ipkdb;
- Le capacità sono state ampliate e le prestazioni del filtro dei pacchetti , che ora è attivato di default;
- È stata aggiornata l'implementazione del file system ZFS, portandolo a uno stato adatto per l'uso quotidiano. Attualmente, le funzionalità di avvio da ZFS e utilizzo di ZFS nella partizione root non sono supportate;
- Sono stati aggiunti nuovi driver, inclusi bwfm per i dispositivi wireless Broadcom (Full-MAC), ena per Amazon Elastic Network Adapter e mcx per i adattatori Ethernet Mellanox ConnectX-4 Lx EN, ConnectX-4 EN, ConnectX-5 EN, ConnectX-6 EN;
- Il sottosistema SATA è stato riprogettato, con il supporto per NCQ e migliorata gestione degli errori dal disco;
- nuovo framework usbnet per la creazione di driver per adattatori Ethernet con interfaccia USB;
- Aggiornate le versioni dei componenti di terze parti, tra cui GCC 7.4, GDB 8.3, LLVM 7.0.0, OpenSSL 1.1.1d, OpenSSH 8.0 e SQLite 3.26.0.
Fonte: opennet.ru
