Po półtora roku od wydania poprzedniej aktualizacji, opublikowano wersję systemu operacyjnego NetBSD 10. Przygotowano obrazy instalacyjne o rozmiarze 630 MB, dostępne w wersjach dla 57 architektur systemowych i 16 różnych rodzin CPU. Nowa gałąź zawiera szereg istotnych ulepszeń, takich jak wsparcie dla list kontroli dostępu w systemie plików FFS, znaczna optymalizacja wydajności, szyfrowanie dysku przy użyciu algorytmu Adiantum oraz implementację w jądrze sterownika dla VPN WireGuard.
Projekt wspiera 8 podstawowych portów, stanowiących trzon strategii rozwoju NetBSD: amd64, i386, evbarm, evbmips, evbppc, hpcarm, sparc64 oraz xen, a także 49 portów drugorzędnych związanych z takimi CPU jak alpha, hppa, m68010, m68k, sh3, sparc i vax. Porty drugorzędne wciąż są wspierane, ale straciły na aktualności lub nie mają wystarczającej liczby zainteresowanych ich rozwojem programistów. Jeden port (acorn26) został umieszczony w trzeciej kategorii, gdzie znajdują się nieaktywni porty, które mogą zostać usunięte, jeśli nie znajdą się entuzjaści zainteresowani ich rozwojem.
Główne ulepszenia w NetBSD 10:
- Do systemu plików FFS dodano wsparcie dla list kontroli dostępu (POSIX.1e ACL), zaimplementowane z użyciem rozszerzonych atrybutów plików, przeniesione z FreeBSD. Aby używać ACL, zaproponowano nowy typ systemu plików FFSv2ea (nie jest on używany domyślnie), na który można przenieść istniejące systemy plików za pomocą narzędzia fsck_ffs.
- Dodano interfejs sieciowy wg z implementacją VPN, kompatybilną z WireGuard.
- Przeprowadzono optymalizację wydajności. Zwiększono efektywność działania pamięci podręcznej ścieżek plików w jądrze. Zwiększono wydajność planistów zadań, który dostosowano do pracy w systemach big.LITTLE Arm, łączących szybkie i wolne rdzenie CPU. Zwiększono wydajność wywołań systemowych select i poll. Zwiększono wydajność systemu plików tmpfs. Przyspieszono proces ładowania. Dodano optymalizacje specyficzne dla architektur x86 i AArch64. Zwiększono przepustowość operacji wejścia-wyjścia oraz sieciowych operacji na systemach AArch64.
- Wprowadzono optymalizacje w systemie wirtualnej pamięci: zastosowano szybszy algorytm radix tree do wyszukiwania stron pamięci, zwiększono szybkość śledzenia czystych i brudnych stron pamięci, znacznie przyspieszono działanie fsync dla dużych plików, usprawniono zarządzanie blokadami oraz zwiększono efektywność równoległego wykonywania operacji.
- Dodano wsparcie dla szyfrowania dysków z wykorzystaniem algorytmu Adiantum, który zapewnia wysoką efektywność w systemach bez sprzętowego wsparcia dla szyfrowania AES. Do narzędzia cgdconfig dodano wsparcie dla współdzielonych kluczy, które można używać do szyfrowania wielu nośników. Domyślny algorytm haszowania haseł został zmieniony na Argon2id. Włączono automatyczne szyfrowanie partycji wymiany (vm.swap_encrypt=1). Dodano wsparcie dla sprzętowych mechanizmów przyspieszających szyfrowanie oferowanych przez procesory x86 i Arm, takich jak instrukcje przyspieszające AES i ChaCha. W dostarczonej przez jądro implementacji AES zapewniono stały czas wykonywania operacji dla wszystkich architektur.
- Dodano wsparcie dla powiązanych z bezpieczeństwem rozszerzeń dostępnych w procesorach Armv8-A: PAN (Privileged Access Never), PA (Pointer Authentication), BTI (Branch Target Identification).
- W celu wykrywania problemów z bezpieczeństwem w jądrze zastosowano mechanizmy Kernel Concurrency Sanitizer i Kernel Memory Sanitizer.
- W stosie sieciowym wprowadzono wsparcie dla RFC 7048, co poprawia działanie mechanizmu IPv6 Neighbor Discovery i czyni go niezależnym od adresów.
- Dodano nowy interfejs sieciowy lagg do agregacji linków sieciowych i zapewnienia odporności na awarie (lagg zastępuje interfejs agr).
- Dodano sterownik vether z implementacją wirtualnych interfejsów Ethernet, które można używać w mostach sieciowych i zamiast interfejsów tap.
- Do implementacji ipsec dodano sysctl net.key.allow_different_idtype w celu poprawy kompatybilności z innymi VPN.
- Zwiększono wsparcie dla formatu UDF (Universal Disk Format, system plików dla dysków optycznych), który teraz jest zgodny na poziomie błędów z implementacją z Windows 10. W narzędziu newfs_udf dodano możliwość tworzenia w formacie UDF 2.50 z osobną partycją dla metadanych. Dodano narzędzie fsck_udf do sprawdzania i przywracania uszkodzonych systemów plików w formacie UDF.
- Do narzędzia fstat dodano wsparcie dla ZFS.
- Zostało rozszerzone wsparcie dla mechanizmu FUSE (Filesystem in Userspace). W sterowniku refuse zapewniono pełne wsparcie dla wersji API FUSE, używanych w wersjach FUSE od 1.1 do 3.10.
- Do implementacji programowego RAID dodano wsparcie dla konfiguracji z zamienionym porządkiem bajtów (swapped-endian). W narzędziu raidctl dodano opcję „-t” do sprawdzania poprawności plików konfiguracyjnych.
- Dodano nowe narzędzie blkdiscard do ręcznego wykonywania operacji TRIM na dyskach, aby poinformować o nieużywanych blokach.
- W narzędziu scan_ffs dodano możliwość wyświetlania bieżącej statystyki podczas odbierania sygnału SIGINFO (Ctrl+T).
- Do zestawu dodano nowe programy:
- aiomixer — mikser dźwięku
- realpath — wyświetlanie absolutnej ścieżki do pliku na podstawie ścieżki względnej.
- tradcpp — makroprocesor w stylu K&R C.
- ioctlprint — wyświetlanie wartości ioctl.
- testpat — wyświetlanie tabeli testowej do oceny reprodukcji kolorów ekranu.
- warp — klasyczna gra systemów BSD.
- Włączono w zestawie i wykorzystano w ctwm rastry Spleen, dostarczane na licencji BSD, dostępne dla ekranów o niskiej rozdzielczości oraz o wysokiej gęstości pikseli. Do zestawu dodano również czcionki konsolowe Terminus.
- Do warstwy zgodności z Linux (compat_linux) dodano wsparcie dla mechanizmów eventfd, timerfd, POSIX-timerów, preadv i pwritev.
- Poprawiono wsparcie dla wirtualizacji. Dodano wsparcie dla Xen PVH, umożliwiono korzystanie ze sterowników Xen PV w systemach gościnnych opartych na HVM, ulepszono implementację pół-wirtualizowanych interfejsów sieciowych. W jądrach hosta (Dom0) dla Xen włączono wsparcie dla systemów wieloprocesorowych. W jądrach dla Xen umożliwiono korzystanie z modułów wspólnych z normalnym jądrem. Urządzenia sieciowe (xennet) i blokowe (xbd) dostosowano do systemów wieloprocesorowych (uzyskały status MPSAFE). Znacząco poprawiono wsparcie dla hipernadzorcy HyperV oraz rozszerzono możliwości hipernadzorcy nvmm (NetBSD Virtual Machine Monitor). Dodano możliwość przejścia w stan uśpienia. maszyn wirtualnych w nvmm.
- Poprawiono sterowniki VirtIO, w których teraz wdrożono wsparcie dla specyfikacji VirtIO 1.0. Dodano sterownik vio9p do montowania w systemach gościnnych systemu plików VirtIO 9P, eksportowanych przez środowisko hosta. Dodano sterownik viocon dla wirtualnego portu szeregowego.
- Wprowadzono wywołania systemowe eventfd i timerfd, kompatybilne z Linuxem i wykorzystywane w compat_linux. Dodano wywołanie systemowe fexecve do uruchamiania plików przez deskryptor pliku.
- Usunięto przestarzałe komponenty, takie jak zakończenie wsparcia dla technologii HIPPI, FDDI i TokenRing, z jądra usunięto sterowniki nsmb i mount_smbfs dla SMBFS (nie wspierają nowych wersji protokołu SMB), wsparcie dla IPv6 Router Advertisement przeniesiono z jądra do przestrzeni użytkownika, usunięto biblioteki libXTrap, libXevie i libglut, usunięto sterowniki dla wielu przestarzałych urządzeń.
- Zdecydowanie rozszerzono wsparcie dla sprzętu. Zapewniono wsparcie dla nowych możliwości procesorów Intel i AMD. Dodano wsparcie dla nowych platform ARM (Raspberry Pi 4, Orange Pi 5, Lichee Pi Zero, ODROID-N2+, M1 Mac Mini, HummingBoard Pulse, UDOO Neo Full, PINE64 Quartz64, Asus Tinker itd.). Rozszerzono wsparcie dla architektury MIPS.
- Dodano 17 nowych sterowników urządzeń, w tym sterowniki dla tabletów Wacom, Realtek 8125 2.5 Gigabit Ethernet, Motorcomm YT8511C / YT8511H Gigabit Ethernet, Intel Ethernet 700, Broadcom GENETv5 Ethernet, akceleratorów kryptograficznych Intel QuickAssist oraz modemów LTE Intel XMM7360.
- Zaktualizowano sterowniki graficzne dla GPU Intel, NVIDIA i AMD dla systemów x86. Podsystem DRM/KMS zsynchronizowano z jądrem Linux 5.6.
- Zaktualizowano wersje komponentów zewnętrznych, w tym menedżera okien 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, serwer X.org 21.1.7, BIND 9.18.24, kerberos Heimdal 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.
Źródło: opennet.ru
