Представлен выпуск свободной кросс-платформенной UNIX-подобной операционной системы OpenBSD 7.1. Проект OpenBSD был основан Тэо де Раадтом (Theo de Raadt) в 1995 году после конфликта с разработчиками NetBSD, в результате которого для Тэо был закрыт доступ к CVS репозиторию NetBSD. После этого Тэо де Раадт с группой единомышленников создал на базе дерева исходных текстов NetBSD новую открытую операционную систему, главными целями развития которой стали переносимость (поддерживается 13 аппаратных платформ), стандартизация, корректная работа, проактивная безопасность и интегрированные криптографические средства. Размер полного установочного ISO-образа базовой системы OpenBSD 7.1 составляет 580 МБ.
Кроме непосредственно операционной системы, проект 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.
Основные улучшения:
- Объявлена готовой к использованию поддержка компьютеров Mac, оснащённых ARM-чипом Apple M1 (Apple Silicon), таких как Apple M1 Pro/Max и Apple T2 Macs. Добавлены драйверы для SPI, I2C, контроллера DMA, клавиатуры, тачпада, управления питанием и производительностью. Обеспечена поддержка Wi-Fi, GPIO, framebuffer, USB, экрана, накопителей NVMe.
- Улучшена поддержка архитектуры ARM64. Добавлены драйверы gpiocharger, gpioleds и gpiokeys, обеспечивающие поддержку зарядок, подсветок и кнопок, подключаемых к GPIO (например, так сделано в Pinebook Pro). Добавлены новые драйверы: mpfclock (PolarFire SoC MSS clock controller), cdsdhc (Cadence SD/SDIO/eMMC host controller), mpfiic (PolarFire SoC MSS I2C controller) и mpfgpio (PolarFire SoC MSS GPIO).
- Улучшена поддержка архитектуры RISC-V 64, для которой включены драйверы uhid и fido, обеспечена поддержка установки на диски с GPT.
- В утилите mount_msdos по умолчанию включено использование длинных имён файлов.
- Переработан код сборщика мусора для unix-сокетов.
- sysctl hw.perfpolicy пр умолчанию выставлен в значение “auto”, подразумевающее включение режима полной производительности при подключении стационарного питания и использование адаптивного алгоритма при питании от аккумулятора.
- Усовершенствована поддержка многопроцессорных систем (SMP). Переведены в разряд mp-safe фильтры событий неименованных каналов, kqread, звука и сокетов, а также механизм BPF. Системные вызовы poll, select, ppoll и pselect переписаны и теперь реализованы поверх kqueue. Избавлены от блокировок системные вызовы kevent, getsockname, getpeername, accept и accept4. Добавлен интерфейс ядра для атомарных функций load и store, позволяющих использовать типы int и long в элементах структур, к которым применяется подсчёт ссылок.
- Реализация фреймворка drm (Direct Rendering Manager) синхронизирована с ядром Linux 5.15.26 (в прошлом выпуске – 5.10.65). В драйвер inteldrm добавлена поддержка чипов Intel на базе микроархитектур Elkhart Lake, Jasper Lake и Rocket Lake. В драйвере amdgpu реализована поддержка APU/GPU Van Gogh, Rembrandt “Yellow Carp” Ryzen 6000, Navi 22 “Navy Flounder”, Navi 23 “Dimgrey Cavefish” и Navi 24 “Beige Goby”.
- В библиотеке FreeType включён субпиксельный рендеринг шрифтов.
- Добавлена утилита realpath для вывода абсолютного пути к файлу.
- В утилиту rcctl добавлена команда “ls rogue” для показа фоновых процессов, которые запущены, но не включены в rc.conf.local.
- BPFtrace реализована поддержка переменных для проверок. В btrace добавлены скрипты kprofile.bt для профилирования стека ядра и runqlat.bt для выявления задержек в работе планировщика.
- В libc добавлена поддержка RFC6840, определяющего поддержку флага AD и настройки ‘trust-ad’ для DNSSEC.
- В apm и apmd включён показ прогнозируемого времени перезарядки аккумулятора.
- Предоставлена возможность хранения БД capability в /etc/login.conf.d для упрощения добавления из пакетов собственных классов учётных записей.
- В malloc обеспечено кэширование регионов памяти размером от 128k до 2M.
- В архиваторе pax реализована поддержка расширенных заголовков с данными mtime, atime и ctime.
- В утилиты gzip и gunzip добавлена опция “-k” для сохранения исходного файла.
- В утилиту openrsync добавлены опции: “–compare-dest” для проверки наличия файлов в дополнительных каталогах; “–max-size” и “–min-size” для ограничения размера файлов.
- Добавлена команда seq для вывода последовательностей чисел.
- Из FreeBSD 13 перенесена универсальная программная реализация тригонометрических функций (реализации на ассемблере для x86 отключены).
- Из FreeBSD перенесена реализация функций lrint, lrintf, llrint и llrintf (ранее применялась реализация из NetBSD).
- В утилите fdisk отмечены многочисленные изменения и исправления, связанные с работой с дисковыми разделами.
- Добавлена поддержка нового оборудования, в том числе контроллера Intel PCH GPIO (для платформ Cannon Lake H и Tiger Lake H), NXP PCF85063A/TP RTC, Synopsys Designware UART, Intel 2.5Gb Ethernet, SIMCom SIM7600, RTL8156B, MediaTek MT7601U USB wifi, BCM4387 wifi.
- В состав включены перелицензированные прошивки для беспроводных чипов Realtek, позволяющие использовать драйверы rsu, rtwn и urtwn без ручной загрузки прошивок.
- В драйверах ixl (Intel Ethernet 700), ix (Intel 82598/82599/X540/X550) и aq (Aquantia AQC1xx) включена поддержка аппаратной обработки VLAN-тегов и вычисления/проверки контрольных сумм для IPv4, TCP4/6 и UDP4/6.
- Добавлен звуковой драйвер для чипов Intel Jasper Lake. Добавлена поддержка игрового контроллера XBox One.
- В беспроводном стеке IEEE 802.11 реализована поддержка каналов 40MHz для режима 802.11n и начальная поддержка стандарта 802.11ac (VHT). Для драйверов добавлен опциональный обработчик фонового сканирования. При выборе точки доступа приоритетными теперь являются точки с каналами 5GHz, а уже потом выбираются точки с каналами 2GHz.
- Переписана реализация драйвера vxlan, который теперь работает независимо от подсистемы bridge.
- В инсталляторе переработана логика вызова утилиты pkg_add для сокращения интенсивности перемещений файлов в процессе обновления. В файле install.site документирован процесс настройки установки и обновления. Для всех архитектур в состав добавлены прошивки, распространение которых разрешено в сторонних продуктах. Для установки проприетарных прошивок, доступных на установочном носителе, задействована утилита fw_update.
- В xterm из соображений безопасности отключено по умолчанию отслеживание мыши.
- В usbhidctl и usbhidaction обеспечена изоляция доступа к файловой системе при помощи системного вызова unveil.
- В dhcpd по умолчанию обеспечено прикрепление и к сетевым интерфейсам, находящимся в неактивном состоянии (‘down’), для того чтобы обеспечить приём пакетов сразу после того как сетевой интерфейс будет активирован.
- В OpenSMTPD (smtpd) включена по умолчанию проверка TLS для исходящих подключений “smtps://” и “smtp+tls://”.
- В httpd реализована проверка версии протокола, добавлена возможность определения собственных файлов с текстами ошибок и улучшена обработка данных в сжатом виде, в том числе в httpd.conf добавлена опция gzip-static для доставки предварительно сжатых файлов с выставлением флага gzip в заголовке content-encoding.
- В IPsec в параметре proto из iked.conf разрешено указание списка протоколов. В утилиту ikectl добавлена команда “show certinfo” для показа заслуживающих доверия удостоверяющих центров и сертификатов. В iked улучшена обработка фрагментированных сообщений.
- В rpki-client добавлена поддержка проверки отрытых ключей BGPsec Router и улучшена проверка сертификатов X509. Добавлен кэш верифицированных файлов. Улучшена совместимость с RFC 6488.
- bgpd добавлен параметр “port”, который можно использовать в секциях “listen on” и “neighbor” для привязки к нестандартному номеру сетевого порта. Проведён рефакторинг кода для работы с RIB (Routing Information Base), выполненный с оглядкой на обеспечение в будущем поддержки multipath.
- В консольном оконном менеджере tmux (“terminal multiplexer”) расширены возможности для цветного вывода. Добавлены команды pane-border-format, cursor-colour и cursor-style.
- В LibreSSL выполнено портирование из OpenSSL поддержки RFC 3779 (расширения X.509 для IP-адресов и автономных систем) и механизма Certificate Transparency (независимый публичного лога всех выданных и отозванных сертификатов, который даёт возможность проводить независимый аудит всех изменений и действий удостоверяющих центров, и позволяет сразу отслеживать любые попытки скрытого создания поддельных записей). Значительно улучшена совместимость с OpenSSL 1.1 и задействованы идентичные с OpenSSL имена шифров для TLSv1.3. Многие функции переведены на использование calloc(). В libssl и libcrypto добавлена большая порция новых вызовов.
- Обновлён пакет OpenSSH. Подробный обзор улучшений можно посмотреть в обзорах OpenSSH 8.9 и OpenSSH 9.0. Утилита scp переведена по умолчанию на использование SFTP вместо устаревшего протокола SCP/RCP.
- Число портов для архитектуры AMD64 составило 11301 (было 11325), для aarch64 – 11081 (было 11034), для i386 – 10136 (было 10248). Среди версий приложений в портах: Asterisk 16.25.1, 18.11.1 и 19.3.1 Audacity 2.4.2 CMake 3.20.3 Chromium 100.0.4896.75 Emacs 27.2 FFmpeg 4.4.1 GCC 8.4.0 и 11.2.0 GNOME 41.5 Go 1.17.7 JDK 8u322, 11.0.14 и 17.0.2 KDE Applications 21.12.2 KDE Frameworks 5.91.0 Krita 5.0.2 LLVM/Clang 13.0.0 LibreOffice 7.3.2.2 Lua 5.1.5, 5.2.4 и 5.3.6 MariaDB 10.6.7 Mono 6.12.0.122 Firefox 99.0 и ESR 91.8.0 Thunderbird 91.8.0 Mutt 2.2.2 и NeoMutt 20211029 Node.js 16.14.2 OpenLDAP 2.4.59 PHP 7.4.28, 8.0.17 и 8.1.4 Postfix 3.5.14 PostgreSQL 14.2 Python 2.7.18, 3.8.13, 3.9.12 и 3.10.4 Qt 5.15.2 и 6.0.4 R 4.1.2 Ruby 2.7.5, 3.0.3 и 3.1.1 Rust 1.59.0 SQLite 2.8.17 и 3.38.2 Shotcut 21.10.31 Sudo 1.9.10 Suricata 6.0.4 Tcl/Tk 8.5.19 и 8.6.8 TeX Live 2021 Vim 8.2.4600 и Neovim 0.6.1 Xfce 4.16
- Обновлены компоненты от сторонних разработчиков, входящие в состав OpenBSD 7.1:
- Графический стек Xenocara на базе X.Org 7.7 с xserver 1.21.1 + патчи, freetype 2.11.0, fontconfig 2.12.94, Mesa 21.3.7, xterm 369, 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.4.0
- Unbound 1.15.0
- Ncurses 5.7
- Binutils 2.17 (+ патчи)
- Gdb 6.3 (+ патч )
- Awk 12.10.2021
- Expat 2.4.7