Представлен выпуск свободной 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 и IPv6 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 and 22.3.0
- Audacity 3.7.3
- CMake 3.31.6
- Chromium 135.0.7049.52
- Emacs 30.1
- FFmpeg 6.1.2
- GCC 8.4.0 и 11.2.0
- GNOME 47
- Go 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 (+ патчи) 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 20250116
- Expat 2.7.1
- zlib 1.3.1 (+ патчи)