Представлен выпуск свободной UNIX-подобной операционной системы OpenBSD 7.7. Проект OpenBSD был основан Тэо де Раадтом (Theo de Raadt) в 1995 году после конфликта с разработчиками NetBSD, в результате которого для Тэо был закрыт доступ к CVS репозиторию NetBSD. После этого Тэо де Раадт с группой единомышленников создал на базе дерева исходных текстов NetBSD новую открытую операционную систему, главными целями развития которой стали переносимость (поддерживается 13 аппаратных платформ), стандартизация, корректная работа, проактивная безопасность и интегрированные криптографические средства. Размер полного установочного ISO-образа базовой системы OpenBSD 7.7 составляет 746 МБ.
Кроме непосредственно операционной системы, проект OpenBSD известен своими компонентами, которые получили распространение в других системах и зарекомендовали себя как одни из наиболее безопасных и качественных решений. Среди них: LibreSSL (форк OpenSSL), OpenSSH, пакетный фильтр PF, демоны маршрутизации OpenBGPD и OpenOSPFD, NTP-сервер OpenNTPD, почтовый сервер OpenSMTPD, мультиплексор текстового терминала (аналог GNU screen) tmux, демон identd с реализацией протокола IDENT, BSDL-альтернатива пакету GNU groff - mandoc, протокол для организации отказоустойчивых систем CARP (Common Address Redundancy Protocol), легковесный http-сервер, утилита синхронизации файлов OpenRSYNC.
Основные изменения:
- Реализация фреймворка 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 82598EB, 82559 и 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 для сетевых интерфейсов и очередей разрешено определение пропускной способности, превышающей 4Gbit.
- В 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, по умолчанию задействован гибридный алгоритм обмена ключами "mlkem768x25519-sha256").
- Число портов для архитектуры AMD64 составило 12593 (было 12312), для aarch64 - 12446 (было 12148), для i386 - 10429 (было 10534). Среди версий приложений в портах:
Asterisk 16.30.1, 18.26.1, 20.13.0 и 22.3.0
Audacity 3.7.3CMake 3.31.6
Chromium 135.0.7049.52
Emacs 30.1
FFmpeg 6.1.2GCC 8.4.0 и 11.2.0
GNOME 47Go 1.24.1
JDK 8u442, 11.0.26, 17.0.14 и 21.0.6
KDE Gears 24.12.3
KDE Frameworks 6.12.0
KDE Plasma 6.3.3
Krita 5.2.9
LLVM/Clang 13.0.0, 16.0.6, 18.1.8, 19.1.7
LibreOffice 25.2.1.2
Lua 5.1.5, 5.2.4, 5.3.6, 5.4.7
MariaDB 11.4.5
Mono 6.12.0.199
Mozilla Firefox 137.0 и ESR 128.9.0
Mozilla Thunderbird 128.9.0
Mutt 2.2.14 и NeoMutt 20250113
Node.js 22.14.0
OpenLDAP 2.6.9
PHP 8.2.28, 8.3.19 и 8.4.5
Postfix 3.10.1
PostgreSQL 17.4
Python 2.7.18 и 3.12.9
Qt 5.15.16 (+ патчи от проекта KDE) и 6.8.2
Ruby 3.2.8, 3.3.7, 3.4.2
Rust 1.86.0
SQLite 3.49.1
Shotcut 25.01.25
Sudo 1.9.16p1
Suricata 7.0.7
Tcl/Tk 8.5.19 и 8.6.16
Vim 9.1.1265 и Neovim 0.10.4
Xfce 4.20.0 - Обновлены компоненты от сторонних разработчиков, входящие в состав 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 (+ патчи) и 3.3.6 (+ патчи)
Perl 5.40.1 (+ патчи)
NSD 4.9.1Unbound 1.22.0
Ncurses 6.4
Binutils 2.17 (+ патчи)
Gdb 6.3 (+ патчи)
Awk 20250116
Expat 2.7.1
zlib 1.3.1 (+ патчи)