28 апреля 2025 года состоялся релиз свободной UNIX-подобной операционной системы OpenBSD 7.7. Предыдущая стабильная версия проекта вышла в октябре 2024 года. Версию OpenBSD 7.0 выпустили в октябре 2021 года.
Размер полного установочного ISO-образа базовой системы OpenBSD 7.7 составляет 746 МБ.
По информации OpenNET, основные изменения и доработки в OpenBSD 7.7:
реализация фреймворка drm (Direct Rendering Manager) синхронизирована с ядром Linux 6.12.21 (в прошлом выпуске — 6.6.52). В драйвере inteldrm реализована поддержка GPU, применяемого в процессорах Intel на базе микроархитектуры Arrow Lake. В драйвер amdgpu добавлена поддержка GPU Ryzen AI 300 (Strix Point, Strix Halo, Krackan Point) и Radeon RX 9070 (Navi 48);
в порте для архитектуры ARM64 реализована поддержка набора векторных инструкций SVE (Scalable Vector Extension). На системах с ARM‑чипами Apple M1 обеспечено выставление состояний энергопотребления. В механизме маппинга физических страницы памяти (pmap, physical mapping) оптимизированы операции сброса буфера ассоциативной трансляции (TLB), что примерно на 5% ускорило выполнение теста по сборке ядра. На оборудовании с поддержкой шифра QARMA3 для защиты пространства пользователя включена аутентификация указателей (PAC, Pointer Authentication Code);
на системах x86_64 для гостевых систем, выполняемых при помощи QEMU, реализована поддержка механизма AMD SEV (Secure Encrypted Virtualization), применяемого в системах виртуализации для защиты виртуальных машин от вмешательства со стороны гипервизора или администратора хост‑системы. В драйвер psp, используемый для настройки и запуска гостевых систем с включением AMD SEV, добавлена команда для загрузки прошивки в чип;
на системах x86_64 добавлена возможность выделения для DMA областей памяти размером больше 4 ГБ;
улучшена поддержка архитектур RISC‑V, Sparc64, HPPA, i386 и Powerpc64;
улучшена обработка ситуаций нехватки памяти в системе (OOM);
в механизм трассировки ptrace добавлены возможности, позволяющие выставлять в отладчике gdb точки останова в многопоточных процессах. Добавлены команды для чтения и записи области, в которую в отслеживаемом процессе сохраняется состояние процессора при использовании инструкции XSAVE;
в сценариях на языке BT (BPFtrace или Bug Tracing), применяемых в системе трассировки btrace, добавлена поддержка многострочных конструкций. В утилиту btrace добавлены дополнительные профили и именования временных интервалов (hz, us, ms, s);
добавлен sysctl‑параметр kern.audio.kbdcontrol, при выставлении которого в 0 мультимедийные клавиши управления громкостью на клавиатуре будут обрабатываться как обычные клавиши;
улучшена обработка сбоев и расширены проверки при переходе в спящий и ждущий режимы;
переработан код для остановки процессов при поступлении сигнала, что решило проблемы с остановкой многопоточных процессов, проявлявшиеся в таких пакетах, как golang и mpv;
усовершенствована поддержка многопроцессорных систем (SMP). Обеспечена параллельная работа таймеров ввода и вывода TCP, а системные вызовы send() и recv() переведены на использование общей блокировки. Несколько пользовательских потоков теперь могут параллельно работать с разными сокетами, а вывод TCP больше не блокирует обработку IP‑пакетов;
избавлены от глобальной блокировки системные вызовы open, openat, ptsignal, psignal и prsignal, а также sysctl kern.timeout_stats, kern.allowkmem, kern.video.record, net.inet.gre.allow, net.inet.gre.wccp, kern.global_ptrace, kern.wxabort, kern.malloc.kmemstat. Переведены в разряд mp‑safe драйверы psp, wsmouse и wstpad, а также структура video_filtops;
в гипервизоре VMM реализована возможность использования acpipci для прикрепления PCI‑шин;
предоставлена возможность определения альтернативной политики с настройками производительности (perfpolicy), применяемой при работе системы от аккумулятора;
в команду sysctl добавлена опция «‑f file» для загрузки разом всех настроек из файла. В rc‑скриптах новая опция применена для загрузки sysctl.conf целиком, вместо построчного разбора;
в команде pkg_add реализован вызов ldconfig, если в результате установки новых пакетов изменился список разделяемых библиотек;
добавлена поддержка нового оборудования. Улучшена поддержка SoC MediaTek и Qualcomm Snapdragon (включая X Elite). Улучшена поддержка устройств Samsung Galaxy Book4 Edge, ThinkPad T14 Gen 5, Vivobook, ThinkPad X1 Nano Gen 2, ThinkPad X13 и различных Chromebook. Добавлен драйвер ice для Intel E810 Ethernet 1Gb/10Gb/25Gb/50Gb/100Gb и драйвер ixv для виртуальных функций Intel Ethernet 82 598EB, 82 559 и X540. Продолжена работа по выносу выполнения сетевых операций на сторону сетевых карт;
в sysupgrade реализован режим для offline‑обновления систем с использованием пакетов, сохранённых в локальной файловой системе;
в утилиту fw_update добавлена возможность загрузки (не установки) прошивок под обычным пользователем без прав root. Добавлен флаг «‑l» для вывода списка драйверов и файлов;
для процесса sshd‑auth включена защита от эксплуатации уязвимостей, основанная на случайной перекомпоновке исполняемого файла при каждой загрузке системы (relink). Перекомпоновка позволяет сделать малопредсказуемым смещения функций, что затруднит создание эксплоитов, использующих методы возвратно‑ориентированного программирования;
обеспечена изоляция процесса mountd с использованием системного вызова unveil;
в сетевом стеке реализована поддержка сокетов AF_FRAME и семейства протоколов IFT_ETHER, позволяющих приложениям отправлять и принимать Ethernet‑кадры. Для исходящих пакетов UDP и TCP задействован новый метод хэширования, позволивший оптимизировать распределения трафика по очередям и заметно (~20%) ускорить отправку UDP для IPv4/IPv6 и TCP для IPv6. Для устройства tun реализован ioctl TUNSCAP и оптимизировано взаимодействие между ядром и пространством пользователя. Реализован отдельный для каждого потока кэш маршрутизации. В драйвере vio включён режим multiqueue;
в утилите pfctl для сетевых интерфейсов и очередей разрешено определение пропускной способности, превышающей 4 Гбит;
в iked, реализации протокола IKEv2 для IPsec, добавлена опция «natt» для принудительного использования nat‑t;
в relayd, фоновом процессе для перенаправления и балансировки запросов, реализована поддержка клиентских TLS‑сертификатов;
инструмент измерения сетевой производительности tcpbench добавлена поддержка TLS;
в bgpd реализована поддержка RFC 8654 (BGP Extended Message), RFC 8538 (BGP Notification Message), по умолчанию активирована опция «reject as‑set», обеспечено кэширование Adj‑RIB‑Out;
в LibreSSL 4.1.0 добавлена экспериментальная поддержка архитектуры loongarch64, предложены новые ассемблерные реализации алгоритмов SHA-1, SHA-256 и SHA-512 для архитектуры amd64 (задействована инструкция SHA‑NI), новые ассемблерные реализации SHA-256 и SHA-512 для Aarch64 (задействовано расширение CE), упрощена реализация MD5 для amd64, обеспечено кеширование списка отозванных сертификатов (CRLs), из BoringSSL перенесена реализация ML‑KEM 768 и 1024;
обновлён OpenSSH. Список изменений можно посмотреть в анонсе OpenSSH 10 (удалена поддержка цифровых подписей DSA, операции аутентификации выделены в отдельный процесс sshd‑auth, по умолчанию задействован гибридный алгоритм обмена ключами «mlkem768×25 519-sha256»).
Обновлены компоненты от сторонних разработчиков, входящие в состав OpenBSD 7.7:
графический стек Xenocara на базе X.Org 7.7 с xserver 21.1.16 + патчи, freetype 2.13.3, fontconfig 2.15.0, Mesa 23.3.6, xterm 395, xkeyboard‑config 2.20, fonttosfnt 1.2.4;
LLVM/Clang 16.0.6 (+ патчи);
GCC 4.2.1 (+ патчи) and 3.3.6 (+ патчи);
Perl 5.40.1 (+ патчи);
NSD 4.9.1;
Unbound 1.22.0;
Ncurses 6.4;
Binutils 2.17 (+ патчи);
Gdb 6.3 (+ патчи);
Awk 20 250 116;
Expat 2.7.1;
zlib 1.3.1 (+ патчи).
Источник: habr.com