Przedstawiamy wydanie wolnego wieloplatformowego systemu operacyjnego Unix-podobnego OpenBSD 7.0. Zauważono, że jest to 51. wydanie projektu, który 18 października ukończy 26 lat. Projekt OpenBSD został założony przez Theo de Raadta w 1995 roku po konflikcie z deweloperami NetBSD, w wyniku którego Theo utracił dostęp do repozytorium CVS NetBSD. Po tym Theo de Raad i grupa współpracowników stworzyli nowy otwarty system operacyjny na podstawie drzewa źródłowego NetBSD, którego głównymi celami rozwoju są przenośność (obsługiwanych jest 13 platform sprzętowych), standaryzacja, poprawna praca, proaktywne bezpieczeństwo oraz zintegrowane środki kryptograficzne. Rozmiar pełnego obrazu instalacyjnego ISO podstawowego systemu OpenBSD 7.0 wynosi 554 MB.
Oprócz samego systemu operacyjnego, projekt OpenBSD znany jest z komponentów, które zyskały popularność w innych systemach i zostały uznane za jedne z najbardziej bezpiecznych oraz jakościowych rozwiązań. Wśród nich znajduje się: LibreSSL (fork OpenSSL), OpenSSH, filtr pakietów PF, demony routingu OpenBGPD i OpenOSPFD, serwer NTP OpenNTPD, pocztowy OpenSMTPD, multiplexer terminali tekstowych (odpowiednik GNU screen) tmux, demon identyfikacji identd z implementacją protokołu IDENT, alternatywa pakietu GNU groff - mandoc, protokół organizacji systemów odpornych na awarie CARP (Common Address Redundancy Protocol), lekki serwer http, oraz narzędzie do synchronizacji plików OpenRSYNC. serwer OpenSMTPD, multiplexer terminali tekstowych (odpowiednik GNU screen) tmux, demon identd z realizacją protokołu IDENT, BSDL-alternatywa dla pakietu GNU groff — mandoc, protokół organizujący systemy odporne na awarie CARP (Common Address Redundancy Protocol), lekki serwer http, narzędzie do synchronizacji plików OpenRSYNC.
Zaimplementowano wywołania systemowe waitid (oczekiwanie na zmianę stanu procesu), pinsyscall (do przekazywania informacji o punkcie wejścia execve w celu ochrony przed exploitami ROP), getthrname i setthrname (uzyskiwanie i ustalanie nazwy wątku).
- Dodano port dla systemów 64-bitowych opartych na architekturze RISC-V. Obecnie wspierana jest praca na płytach HiFive Unmatched i częściowo na PolarFire SoC Icicle Kit.
- W porcie dla platform ARM64 poprawiono, ale wciąż nie zakończono, wsparcie dla urządzeń Apple z procesorem M1. W obecnej formie wspiera instalację OpenBSD na dysku z GPT i ma sterowniki dla USB 3, NVME, GPIO oraz SPMI. Oprócz M1 w porcie ARM64 rozszerzono również wsparcie dla Raspberry Pi 3 Model B+ i płyt opartych na SoC Rockchip RK3399.
- Dla architektury AMD64 domyślnie wyłączono kompilator GCC (pozostawiono jedynie Clang). Wcześniej GCC był wyłączony dla architektur armv7 i i386.
- Zaprzestano wsparcia dla platformy SGI.
- Dla platform amd64, arm64, i386, sparc64 i powerpc64 domyślnie włączono kompilację jądra z obsługą systemu dynamicznego śledzenia dt. Dodano dostawcę kprobes do zbierania informacji o zdarzeniach na poziomie jądra.
- W btrace zrealizowano wsparcie dla operatorów „” w filtrach oraz zapewniono wyjście czasu przebywania w przestrzeni użytkownika podczas analizy stosu jądra.
- Dodano plik konfiguracyjny /etc/bsd.re-config, który można wykorzystać do konfiguracji jądra podczas rozruchu oraz włączania/wyłączania określonych urządzeń.
- Zapewniło to określenie dostępności urządzeń TPM 2.0 oraz prawidłowe wykonywanie poleceń przejścia w tryb uśpienia (rozwiązuje problem z wybudzaniem laptopów ThinkPad X1 Carbon Gen 9 i ThinkPad X1 Nano).
- Wdrożenie kqueue zostało przekształcone na użycie mutex-ów.
- Wprowadzono możliwość dostosowywania przez sysctl rozmiaru bufora dla gniazd PF_UNIX. Domyślny rozmiar bufora został zwiększony do 8 KB.
- Udoskonalono wsparcie dla systemów wieloprocesorowych (SMP). Wywołanie pmap_extract() zostało przeniesione do kategorii mp-safe w systemach hppa i amd64. Kod do liczenia referencji obiektów anonimowych, część obsługi wyjątków oraz funkcje lseek, connect i setrtable zostały wydzielone z ogólnej blokady jądra. Wprowadzono oddzielne dla każdego rdzenia CPU bufory komunikatów w przypadku awarii (panic).
- Wdrożenie frameworka drm (Direct Rendering Manager) zostało zsynchronizowane z jądrem Linux 5.10.65. W sterowniku inteldrm poprawiono wsparcie dla chipów Intel opartych na mikroarchitekturze Tiger Lake. W sterowniku amdgpu wprowadzono wsparcie dla GPU Navi 12, Navi 21 'Sienna Cichlid', Arcturus i APU Cezanne 'Green Sardine' Ryzen 5000.
- Dodano wsparcie dla nowego sprzętu, w tym Aquantia AQC111U/AQC112U USB Ethernet, Aquantia 1/2.5/5/10 Gb/s PCIe Ethernet, Cadence GEM, Broadcom BCM5725, RTL8168FP/RTL8111FP/RTL8117. Ulepszono wsparcie dla platform Intel opartych na mikroarchitekturze Tiger Lake. Dodano sterownik ucc dla klawiatur z interfejsem USB HID Consumer Control, które wykorzystują przyciski uruchamiania aplikacji, zarządzania odtwarzaniem dźwięku i regulacji głośności.
- Wprowadzono ulepszenia w hipernadzorze VMM. Dodano limit 512 VCPU na maszyny wirtualne. Rozwiązano problemy z blokadami VCPU. W backendzie do zarządzania maszynami wirtualnymi vmd wprowadzono wsparcie dla ochrony przed złośliwymi sterownikami gości virtio.
- Z NetBSD przeniesiono narzędzie timeout, które pozwala na ograniczenie czasu wykonywania poleceń.
- W narzędziu do synchronizacji plików openrsync wprowadzono opcje 'include' i 'exclude'.
- W narzędziu ps zapewniono wyjście informacji o powiązanych grupach.
- Do edytora tekstowego mg dodano polecenie 'dired-jump'.
- W narzędziach fdisk i newfs poprawiono wsparcie dla dysków z rozmiarem sektora 4K. W fdisk przeprojektowano kod inicjalizacji MBR/GPT i dodano rozpoznawanie partycji GPT 'BIOS Boot', 'APFS', 'APFS ISC', 'APFS Recovry' (sic), 'HiFive FSBL' oraz 'HiFive BBL'. Dodano opcję '-A' do inicjalizacji GPT bez usuwania partycji rozruchowych.
- W narzędziu traceroute wprowadzono asynchroniczną obsługę pakietów kontrolnych i zapytań DNS, aby przyspieszyć działanie.
- W narzędziu doas dostępne są trzy próby wprowadzenia hasła.
- W xterm zapewniona jest izolacja dostępu do systemu plików za pomocą wywołania systemowego unveil(). Procesy ftpd są chronione za pomocą wywołania pledge.
- Zrealizowano zapis do logu informacji o nieprawidłowym użyciu parametru formatowania „%n” w funkcji printf.
- W implementacji IPsec w iked dodano wsparcie dla konfiguracji DNS po stronie klienta.
- W snmpd domyślnie wyłączone jest wsparcie dla protokołów SNMPv1 i SNMPv2c na rzecz użycia SNMPv3.
- Domyślnie włączone są procesy dhcpleased i resolvd, które umożliwiają konfigurację adresów IPv4 przez DHCP. Narzędzie dhclient pozostawiono w systemie jako opcję. Do narzędzia route dodano polecenie „nameserver”, aby przekazywać informacje o serwerze DNS do resolvd.
- W LibreSSL dodano wsparcie dla interfejsu API TLSv3 OpenSSL 1.1.1 oraz aktywowano nowy walidator X.509, który wspiera prawidłową weryfikację certyfikatów podpisanych krzyżowo.
- W OpenSMTPD dodano wsparcie dla opcji TLS „cafile=(path)”, „nosni”, „noverify” oraz „servername=(name)”. W smtp zezwolono na wybór parametrów szyfrów i protokołów TLS.
- Zaktualizowano pakiet OpenSSH. Szczegółowy przegląd ulepszeń można znaleźć tutaj: OpenSSH 8.7, OpenSSH 8.8. Wyłączono wsparcie dla cyfrowych podpisów rsa-sha.
- Liczba portów dla architektury AMD64 wyniosła 11325, dla aarch64 — 11034, dla i386 — 10248. Wśród wersji aplikacji w portach: FFmpeg 4.4, GCC 8.4.0 i 11.2.0, GNOME 40.4, Go 1.17, JDK 8u302, 11.0.12 i 16.0.2, KDE Applications 21.08.1, KDE Frameworks 5.85.0, LLVM/Clang 11.1.0, LibreOffice 7.2.1.2, Lua 5.1.5, 5.2.4 i 5.3.6, MariaDB 10.6.4, Node.js 12.22.6, PHP 7.3.30, 7.4.23 i 8.0.10, Postfix 3.5.12, PostgreSQL 13.4, Python 2.7.18, 3.8.12 i 3.9.7, Qt 5.15.2 i 6.0.4, Ruby 2.6.8, 2.7.4 i 3.0.2, Rust 1.55.0, SQLite 3.35.5, Xfce 4.16.
- Zaktualizowane komponenty od zewnętrznych dostawców w składzie OpenBSD 7.0:
- Graficzny stos Xenocara oparty na X.Org 7.7 z xserver 1.20.13 + łatki, freetype 2.10.4, fontconfig 2.12.4, Mesa 21.1.8, xterm 367, xkeyboard-config 2.20, fonttosfnt 1.2.2.
- LLVM/Clang 11.1.0 (+ łatki)
- GCC 4.2.1 (+ poprawki) i 3.3.6 (+ poprawki)
- Perl 5.32.1 (+ łatki)
- NSD 4.3.7
- Unbound 1.13.3
- Ncurses 5.7
- Binutils 2.17 (+ poprawki)
- Gdb 6.3 (+ poprawka)
- Awk 18.12.2020
- Expat 2.4.1
Źródło: opennet.ru
