Выпуск OpenBSD 6.9

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

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

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

  • В драйвер softraid добавлен режим RAID1C с реализацией программного RAID1 с шифрованием данных.
  • Улучшена поддержка платформы powerpc64, развиваемой для 64-разрядные систем на базе процессоров POWER8 и POWER9. По сравнению с прошлым выпуском для
    powerpc64 реализована поддержка механизма защиты RETGUARD, добавлен драйвер astfb для фреймбуфера Aspeed BMC, решены проблемы с работой драйверов radeondrm и amdgpu на системах с GPU AMD, в сборки ядра для ram-диска добавлена возможность сетевой загрузки, добавлена поддержка режимов энергосбережения CPU POWER9, добавлена поддержка исключений, генерируемых при операциях с плавающей запятой, реализована поддержка IPMI для систем PowerNV.
  • Добавлена начальная поддержка устройств Apple с процессором M1. В том числе реализовано распознание arm64-ядер Apple Icestorm/Firestorm и добавлена поддержка беспроводных чипов BCM4378, используемых в SoC Apple M1.
  • Для платформ ARM64 обеспечена поддержка CPU Cortex-A78AE, Cortex-X1 и Neoverse V1, реализованы оптимизированные для ARM64 варианты вызовов copyin, copyout и kcopy, добавлен драйвер cryptox для поддержки крипторасширений ARMv8, а также драйвер smmu для RM System MMU с поддержкой Guard Page. Улучшена поддержка устройств Raspberry Pi, Rock Pi N10, NanoPi и Pinebook Pro.
  • В драйвер video добавлен sysctl-параметр kern.video.record, который по аналогии с kern.audio.record управляет включением вывода пустой картинки при попытке захвата видео (для разрешения захвата требуется изменить значение на 1). Процессам разрешено многократное открытие устройства video (решает проблемы с использованием web-камеры в Firefox и BigBlueButton).
  • Добавлены точки трассировки для вызовов malloc и free, позволяющие отслеживать связанную с распределением памяти активность через dt и btrace. В btrace добавлена опция ‘-n’ для парсинга программы без выполнения каких-либо действий.
  • Усовершенствована поддержка многопроцессорных систем (SMP). Из общей блокировки ядра выведена реализация UNIX-сокетов, добавлен общий mutex для сериализации операций с msgbuf, переведён в разряд mp-safe вызов uvm_pagealloc, избавлены от блокировок вызовы getppid и sendsyslog.
  • Исправлены проблемы в компонентах DRM (Direct Rendering Manager), в том числе устранены крахи в драйвере radeondrm на системах Powerbook5/6 и RV350, налажена поддержка DRI3 в драйверах amdgpu и ati, для совместимости с Linux реализовано создание устройств в каталоге /dev/dri/.
  • Внесены улучшения в гипервизор VMM. В бэкенде для управления виртуальными машинами vmd появилась поддержка загрузки сжатых RAM-дисков.
  • Внесены улучшения в звуковую подсистему. Предоставлена возможность отдельного закрепления звуковых устройств
    sndio только для воспроизведения и только для записи. В sndiod задействован низкочастотный фильтр с конечной импульсной характеристикой (КИХ-фильтр) восьмого порядка, позволивший избавиться от шумов из-за наложения спектров при ресэмплинге. По умолчанию отключена функция автоматического уменьшения громкости, когда новая программа начинает воспроизведение (autovolume), в качестве значения по умолчанию выставлен уровень громкости 127. Разрешено микширование звука от альтернативных устройств, отличающихся по уровню поддерживаемой в sndiod функциональности.
  • Включена по умолчанию сборка и установка отладчика LLDB.
  • В rcctl, rc.subr и rc.d добавлена поддержка обработчика logger, дающего возможность перенаправить вывод логов из фоновых процессов в stdout/stderr.
  • Для тачпадов предоставлена возможность настройки раскладки кнопок через wsconsctl. В wscons улучшена обработка одновременных касаний.
  • Для устройств ARM64 реализована возможность использования APM для получения данных о потреблении энергии и заряде аккумулятора. Для ограничения доступа процесса apmd к файловой системе задействован вызов unveil.
  • Расширена поддержка оборудования. Добавлены новые драйверы acpige (для обработки событий ACPI, таких как нажатие кнопки питания), pchgpio (для контроллеров GPIO, которыми оснащены современные Intel PCH), ujoy (для игровых контроллеров), uhidpp (для устройств Logitech HID++). Добавлена поддержка расширений AMD Vi и Intel VTD IOMMU для изоляции PCI устройств и блокирования некорректного доступа к памяти. Добавлена поддержка компьютеров Lynloong LM9002/9003 и LM9013.
    В драйверы pcamux и imxiic добавлена поддержка ACPI.
  • Улучшена поддержка сетевых адаптеров: mvpp (SFP+ и 10G для Marvel Armada Ethernet), mvneta (1000base-x и 2500base-x), mvsw (Marvel SOHO-коммутаторы), второй Ethernet-порт в i.MX8MP, rge (поддержка Wake on LAN), Netgear ProSecure UTM25. Для беспроводных драйверов iwm, iwn и athn добавлена поддержка RA (802.11n Tx Rate Adaptation). В беспроводном стеке налажено автоматический выбор режимов 11a/b/g/n/ac при использовании сетевого интерфейса в виде точки доступа.
  • В сетевом стеке реализован драйвер veb (Virtual Ethernet Bridge). Реализована поддержка режима мониторинга, при котором приходящие на сетевой интерфейс пакеты не передаются в сетевой стек для обработки, но к ним могут применяться механизмы анализа трафика, такие как BPF.
    Добавлен новый тип сетевых интерфейсов – etherbridge. Предоставлена возможность (команда route sourceaddr) переопределения исходного IP-адреса для программ, в обход штатного алгоритма выбора адреса.
    Обеспечено автоматическое поднятие сетевых интерфейсов при включении режима автонастройки (AUTOCONF4 и AUTOCONF6).
  • В инсталляторе реализована поставка сжатого образа ram-диска (bsd.rd) на всех платформах, поддерживающих подобную загрузку.
  • Реализован вывод через syslog предупреждения об использовании в printf подстановки форматирования строк “%n”.
  • В демоне маршрутизации OpenBGPD добавлена поддержка протокола RTR (Resource Public Key Infrastructure (RPKI) to Router Protocol). Для отображения основной информации об RTR-сеансах добавлена команда “bgpctl show rtr”.
  • Проведена реструктуризация кода ospfd и ospf6d с целью их унификации с другими демонами маршрутизации и упрощения сопровождения. Налажена поддержка сетевых интерфейсов в режиме точка-точка.
  • Во встроенном HTTP-сервере httpd реализованы новые опции “location (found|notfound)” для проверки существования ресурсов.
  • В утилиту rpki-client добавлена поддержка протокола RRDP (The RPKI Repository Delta Protocol, RFC 8182). Реализована возможность указания более одного URI в файле TAL.
  • В утилите dig реализована поддержка RFC 8914 (Extended DNS Error) и RFC 8976 (ZONEMD).
  • В dhclient добавлена возможность указания опций в файлах hostname.if, используя строки “dhcp”.
  • В состав включены два новых фоновых процесса – dhcpleased и resolvd, которые работают вместе с slaacd и unwind для автоматической настройки сетевых интерфейсов и определения имён в DNS. В dhcpleased реализован протокол DHCP для получения IP-адресов, а в resolvd обеспечено управление содержимым resolv.conf на основе данных о серверах имён, полученных от dhcpleased, slaacd и драйверов наподобие umb.
  • В демоне snmpd реализована полная поддержка преобразования Trapv1 в Trapv2 (RFC 3584). В snmpd.conf добавлены новые ключевые слова read, write и notify. В утилите snmp реализована поддержка перечислений SMI.
  • В DNS резолвер unwind добавлена поддержка DNS64 и приёма соединений через TCP-порт.
  • В утилите ftp добавлена поддержка постоянных перенаправлений (RFC 7538) и возможность отправки заголовка If-Modified-Since при отправке запросов по HTTP/HTTPS.
  • В OpenSMTPD добавлена опция “-a” для выполнения аутентификации до отправки сообщения. Средства шифрования переведены на использования библиотеки libtls. В слушающих сокетах для TLS реализована возможность настройки нескольких сертификатов, выбираемых в зависимости от имени домена (SNI).
  • В LibreSSL добавлена поддержка протокола DTLSv1.2. Реализована возможность сборки только libtls (‘–enable-libtls-only’) без libcrypto и libssl.
  • Обновлён пакет OpenSSH. Подробный обзор улучшений можно посмотреть здесь: OpenSSH 8.5, OpenSSH 8.6.
  • Число портов для архитектуры AMD64 составило 11310, для aarch64 – 10943, для i386 – 10468. Среди версий приложений в портах: Xfce 4.16, Asterisk 18.3.0, Chromium 90.0.4430.72, FFmpeg 4.3.2, GCC 8.4.0, GNOME 3.38, Go 1.16.2, KDE Applications 20.12.3, Krita 4.4.3, LLVM/Clang 10.0.1, LibreOffice 7.0.5.2, Lua 5.3.6, MariaDB 10.5.9, Firefox 88.0 и ESR 78.10.0, Thunderbird 78.10.0, Node.js 12.16.1, PHP 8.0.3, Postfix 3.5.10, PostgreSQL 13.2, Python 3.9.2, Ruby 3.0.1, Rust 1.51.0.

    Обновлены компоненты от сторонних разработчиков, входящие в состав OpenBSD 6.9:

    • Графический стек Xenocara на базе X.Org 7.7 с xserver 1.20.10 + патчи, freetype 2.10.4, fontconfig 2.12.4, Mesa 20.0.8, xterm 367, xkeyboard-config 2.20, fonttosfnt 1.2.1.
    • LLVM/Clang 10.0.1 (+ патчи)
    • GCC 4.2.1 (+ патчи) и 3.3.6 (+ патчи)
    • Perl 5.32.1 (+ патчи)
    • NSD 4.3.6
    • Unbound 1.13.1
    • Ncurses 5.7
    • Binutils 2.17 (+ патчи)
    • Gdb 6.3 (+ патч )
    • Awk 18.12.2020
    • Expat 2.2.10

К выходу релиза OpenBSD 6.9 приурочена новая песня “Vetera Novis“.

Release. Ссылка here.