Релиз OpenBSD 7.7

Представлен выпуск свободной 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 (+ патчи)
Release. Ссылка here.