Выпуск OpenBSD 7.2

Представлен выпуск свободной кросс-платформенной UNIX-подобной операционной системы OpenBSD 7.2. Проект OpenBSD был основан Тэо де Раадтом (Theo de Raadt) в 1995 году после конфликта с разработчиками NetBSD, в результате которого для Тэо был закрыт доступ к CVS репозиторию NetBSD. После этого Тэо де Раадт с группой единомышленников создал на базе дерева исходных текстов NetBSD новую открытую операционную систему, главными целями развития которой стали переносимость (поддерживается 13 аппаратных платформ), стандартизация, корректная работа, проактивная безопасность и интегрированные криптографические средства. Размер полного установочного ISO-образа базовой системы OpenBSD 7.2 составляет 556 МБ.

Кроме непосредственно операционной системы, проект 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.

Основные улучшения:

  • Улучшена поддержка систем на базе архитектуры ARM, в том числе добавлена поддержка ARM-чипов Apple M2 и Ampere Altra. Добавлена поддержка ноутбука Lenovo ThinkPad x13s и других устройства на базе SoC Qualcomm Snapdragon 8cx Gen 3 (SC8280XP).
  • Добавлена возможность загрузки в окружениях Oracle Cloud ядра для ram-диска (bsd.rd) и ядра для многопроцессных систем (bsd.mp).
  • Включено устройство kstat, экспортирующее статистику о работе ядра, которая может быть просмотрена утилитой kstat.
  • Для каждого процессорного ядра с поддержкой MPERF/APERF реализованы датчики частоты CPU. При работе от аккумулятора включено масштабирование частоты CPU в зависимости от нагрузки.
  • На системах ARM64 добавлена начальная поддержка спящего режима. Лимит на число поддерживаемых CPU увеличен до 256. Реализована возможность переключения из консоли на основе фреймбуфера (glass console) в консоль на базе последовательного порта (serial console).
  • Удалён код для определения CPU 386sx/386dx, NexGen, Rise и старых процессоров Cyrix, выпущенных до чипа Cyrix M2.
  • Усовершенствована поддержка многопроцессорных систем (SMP). Переведены в разряд mp-safe функции ограничения пропускной способности (rate limit), поиска ARP-записей и route timer. Реализована возможность параллельного выполнения таких операций, как пересборка пакетов IPv4 и перенаправление IP-пакетов. В функции обработки входящих пакетов UDP и IP добавлены блокировки сокетов, использующие mutex. Избавлены от блокировок системные вызовы kbind и pledge.
    Реализованы блокировки UNIX-сокетов, действующие на уровне отдельных сокетов.
  • Реализация фреймворка drm (Direct Rendering Manager) синхронизирована с ядром Linux 5.15.69 (в прошлом выпуске – 5.15.26). В драйвер inteldrm добавлена поддержка чипов Intel на базе микроархитектур Alder Lake и Raptor Lake. Реализована поддержка фреймбуферов, не выравненных по границе страницы памяти (применяются, например, в MacBook Pro 2021 14″ и 16″).
  • Внесены улучшения в гипервизор VMM. В vmd добавлена поддержка обработчиков в пространстве пользователя на базе MMIO. В vmm эмуляция портов ввода/вывода перенесена в пространство пользователя. Унифицированы внутренние структуры и интерфейсы в vmd, vmctl и vmm. Добавлена поддержка мониторинга за виртуальными машинами при помощи SNMP AgentX, используя параметры VM-MIB (RFC7666).
  • Переменная $rcexec в скриптах инициализации rc.d заменена на функцию rc_exec. Добавлена новая переменная daemon_execdir, позволяющая сменить каталог перед выполнением функции rc_exec. В rc.d и rcctl добавлено новое действие configtest для проверки синтаксиса конфигурации.
  • В состав включена утилита ts, позволяющая добавить время к строкам, передаваемым через стандартный ввод, отражающее момент поступления каждой строки.
  • В утилиту ps добавлена опция “-f” для вывода с использование древовидной группировки процессов, отражающей связь между родительскими и дочерними процессами.
  • В утилите openrsync реализована опция “–contimeout” для определения таймаута установки соединения.
  • В утилите pkg_add по умолчанию включено кэширование, оптимизирована работа с пакетами и обеспечен вывод индикатора выполнения операции во время передачи данных.
  • В fdisk улучшена работа с таблицами GPT и MBR, добавлены предупреждения при ненадлежащем размещении разделов MBR и GPT.
  • В утилите disklabel добавлена поддержка ключевого слова raid в шаблонах для автоматического размещения разделов RAID-ов. Прекращена поддержка редактирования информации о геометрии диска. Прекращена поддержка атрибутов ‘bs’ (размер загрузочного блока), ‘sb’ (размер суперблока) и d[0-4] (данные диска)
  • В каталог /usr/share/btrace помещена подборка полезных скриптов btrace для динамической трассировки для инспектирования приложений.
  • В звуковую библиотеку sndio добавлена функция sio_flush для немедленной остановки воспроизведения.
  • В состав включена утилита llvm-profdata для работы с данными профилирования.
  • В утилите ускорено выполнение подсчёта слов.
  • Добавлена поддержка нового оборудования, в том числе в состав включены новые драйверы:
    • aplaudio (звуковая подсистема Apple).
    • aplmca (MCA контроллер Apple).
    • aplsart (Apple SART).
    • alpdc, apldchidev, apldckbd, apldcms, aplrtk (клавиатура и трекпад Apple M2).
    • qcgpio, qciic (GPIO и GENI I2C контроллеры для Qualcomm Snapdragon).
    • sfgpio, stfclock, stfpinctrl, stftemp (драйверы для GPIO, таймера и датчиков плат SiFive).
    • sxirintc (контроллер прерываний для чипов Allwinner).
    • gpiorestart (драйвер для сброса через GPIO).
    • В ipmi расширена поддержка датчиков питания.
    • В ehci добавлена поддержка контроллера, применяемого в платах Marvell 3720.
  • В драйвере igc для гигабитных Ethernet-адаптеров Intel I225 включено аппаратное ускорение вычисления контрольных сумм для IPv4, TCP и UDP. В драйвере ix для Ethernet-адаптеров Intel 82598/82599/X540/X550 реализована поддержка аппаратного ускорения обработки сегментов TCP (Large Receive Offloading), включаемая при помощи опции
    tso в ifconfig.
  • В драйвере iwx реализована поддержка чипов Intel AX210/AX211 и расширен спектр определяемых беспроводных устройств.
  • Добавлена возможность загрузки с разделов программных RAID 1 (softraid) на системах amd64, sparc64 и arm64.
  • В snmpd и xlock реализовано разделение привилегий.
  • В функциях bind и connect для UNIX-сокетов обеспечена поддержка изоляция на базе системного вызова unveil.
  • Добавлен новый системный вызов ypconnect для создания сокета для соединения с сервером YP, используя IP-адрес из заблокированного файла ypbinding. В ypldap добавлен режим ‘local bind’, при котором осуществляется привязка RPC-сокета к loopback-интерфейсу, чтобы исключить внешние соединения с сервером.
  • Размещённые в каталоге /sbin программы hcpleased, mountd, nfsd, pflogd, resolvd, slaacd и unwind переведены на использование динамического связывания для задействования дополнительных средств защиты, применимых к динамически связываемым исполняемым файлам.
  • В сетевом стеке реализованы системные вызовы sendmmsg и recvmmsg, которые позволяют в рамках одного системного вызова организовать отправку и чтение сразу нескольких сообщений, которые ранее потребовали бы отдельных вызовов sendmsg и recvmsg.
  • В пакетном фильтре pf изменена обработка пакетов IGMP и ICMP6 MLD (Multicast Listener Discovery), которая позволила наладить работу с
    управляющими multicast-пакетами в конфигурации по умолчанию. Реализована более строгая проверка сообщений IGMP/MLD.
  • В IPsec улучшена работа с сертификатами. В iked улучшена совместимость с OpenIKED. В команду ikectl show stats добавлен вывод статистики об успешных и сбойных подключениях к iked.
  • В bgpd добавлен фильтр max-communities для ограничения числа разрешённых community, реализован RFC 9234 (Route Leak Prevention and Detection Using Roles in UPDATE and OPEN Messages), обеспечена полная поддержка RFC 7911 (Advertisement of Multiple Paths in BGP), статические хэши заменены на RB-деревья для повышения производительности крупных систем. Добавлен процесс bgplgd с реализацией сервера FastCGI, предоставляющего REST API для команд bgpctl.
  • В rpki-client разрешено использование более одного CRL URI в сертификатах, реализован skiplist для игнорирования доменов, добавлена возможность проверки ASPA (Autonomous System Provider Authorization) и sig-файлов, реализовано декодирование TAL (RFC 8630), ужесточена проверка EE-сертификатов, улучшена совместимость со спецификациями HTTP.
  • В snmpd разрешено использование в snmpd.conf имён объектов, помимо OID, реализована возможность задания чёрного списка для исключения поддеревьев из вывода, в реализацию протокола AgentX добавлена поддержка агента master.
  • В httpd предложены новые определения MIME-типов.
  • Утилита ftp переведена на использование соединений в неблокирующем режиме при помощи ppoll.
  • В tmux (“terminal multiplexer”) добавлена возможность использования ACL для организации подключения нескольких пользователей через один сокет.
  • Обновлены пакеты LibreSSL и OpenSSH. Подробный обзор улучшений можно посмотреть в обзорах LibreSSL 3.6.0 и OpenSSH 9.1.
  • Число портов для архитектуры AMD64 составило 11451 (было 11301), для aarch64 – 11261 (было 11081), для i386 – 10225 (было 10136). Среди версий приложений в портах:
    • Asterisk 16.28.0, 18.14.0 and 19.6.0
    • Audacity 2.4.2
    • CMake 3.24.2
    • Chromium 105.0.5195.125
    • Emacs 28.2
    • FFmpeg 4.4.2
    • GCC 8.4.0 и 11.2.0
    • GHC 9.2.4
    • GNOME 42.4
    • Go 1.19.1
    • JDK 8u342, 11.0.16 и 17.0.4
    • KDE Gear 22.08.1
    • KDE Frameworks 5.98.0
    • Krita 5.1.1
    • LLVM/Clang 13.0.0
    • LibreOffice 7.4.1.2
    • Lua 5.1.5, 5.2.4 и 5.3.6
    • MariaDB 10.9.3
    • Mono 6.12.0.182
    • Mozilla Firefox 105.0.1 и ESR 102.3.0
    • Mozilla Thunderbird 102.3.0
    • Mutt 2.2.7 и NeoMutt 20220429
    • Node.js 16.17.1
    • OCaml 4.12.1
    • OpenLDAP 2.6.3
    • PHP 7.4.30, 8.0.23 и 8.1.10
    • Postfix 3.7.2
    • PostgreSQL 14.5
    • Python 2.7.18, 3.9.14 и 3.10.7
    • Qt 5.15.6 и 6.3.1
    • R 4.2.1
    • Ruby 2.7.6, 3.0.4 и 3.1.2
    • Rust 1.63.0
    • SQLite 3.39.3
    • Shotcut 22.06.23
    • Sudo 1.9.11.2
    • Suricata 6.0.6
    • Tcl/Tk 8.5.19 и 8.6.12
    • TeX Live 2021
    • Vim 9.0.0192 и Neovim 0.7.2
    • Xfce 4.16
  • Обновлены компоненты от сторонних разработчиков, входящие в состав OpenBSD 7.2:
    • Графический стек Xenocara на базе X.Org 7.7 с xserver 1.21.4 + патчи, freetype 2.12.1, fontconfig 2.13.94, Mesa 22.1.7, xterm 372, xkeyboard-config 2.20, fonttosfnt 1.2.2.
    • LLVM/Clang 13.0.0 (+ патчи)
    • GCC 4.2.1 (+ патчи) и 3.3.6 (+ патчи)
    • Perl 5.32.1 (+ патчи)
    • NSD 4.6.0
    • Unbound 1.16.3
    • Ncurses 5.7
    • Binutils 2.17 (+ патчи)
    • Gdb 6.3 (+ патч )
    • Awk 12.9.2022
    • Expat 2.4.9
Release. Ссылка here.