Увидел свет релиз операционной системы OpenBSD 5.5, тридцать шестой выпуск за девятнадцатилетнюю историю существования проекта. При развитии OpenBSD основное внимание уделяется переносимости (поддерживается 21 аппаратная платформа), стандартизации, корректной работе, активной безопасности и интегрированным криптографическим средствам. Размер полного установочного ISO-образа базовой системы составляет 221 Мбайт.
Кроме непосредственно операционной системы, проект OpenBSD известен своими компонентами, которые получили распространение в других системах и зарекомендовали себя как одни из наиболее безопасных и качественных решений. Среди них: LibreSSL (форк OpenSSL), OpenSSH, пакетный фильтр PF, демоны маршрутизации OpenBGPD и OpenOSPFD, NTP-сервер OpenNTPD, почтовый сервер OpenSMTPD, мультиплексор текстового терминала (аналог GNU screen) tmux, демон identd с реализацией протокола IDENT, BSDL-альтернатива пакету GNU groff - mandoc, протокол для организации отказоустойчивых систем CARP (Common Address Redundancy Protocol).
Из улучшений, добавленных в OpenBSD 5.5 можно отметить:
Переход на использование 64-разрядного типа time_t для всех поддерживаемых платформ. Таким образом, OpenBSD отныне не подвержен проблеме 2038 года, которая приведёт к переполнению 32-разрядных эпохальных счётчиков времени. Изменение разрядности типа time_t нарушает бинарную совместимость с приложениями, собранными для прошлых выпусков OpenBSD. При этом текущая кодовая база ядра, приложений и библиотек прошла полный аудит на предмет полноценной поддержки 64-разрядного типа time_t. Приложения из состава базовой системы и многие порты были специально модифицированы для корректной обработки новой размерности time_t. Почищены сетевые, дисковые и БД форматы данных, в которых используется эпохальное время. В тех компонентах, в которых невозможно было расширить размерность типа time_t, осуществлено использование беззнакового 32-разрядного типа time_t, который позволяет отсрочить переполнение типа до 2106 года.
Задействование цифровых подписей для контроля подлинности пакетов и релизов. Поддержка верификации подлинности компонентов системы добавлена в инсталлятор и пакетный менеджер pkg_add, который по умолчанию теперь принимает только подписанные пакеты. Для управления проверкой цифровых подписей представлена новая утилита signify, которая была создана в качестве упрощённой замены gnupg и поддерживает только минимально необходимый набор функций, базирующихся на системе цифровой подписи с открытым ключом Ed25519, разработанной Дэниэлом Бернштейном (Daniel J. Bernstein). Информации о цифровой подписи распространяется в тестовом файле, в котором содержатся поля с идентификатором алгоритма, сигнатурой, сопутствующими данными для шифрования и комментарием.
В инсталлятор добавлена поддержка использования сценариев автоматической установки, позволяющих организовать установку и обновление без участия пользователя;
Для архитектур amd64 и i386 подготовлены установочные и загрузочные образы, которые можно использовать на USB Flash;
В сетевой стек добавлена поддержка нового сетевого интерфейса vxlan для создания виртуальных расширяемых локальных сетей (Virtual Extensible LAN), используемых для туннелирования виртуализированных сетей второго уровня поверх сетей третьего уровня. VXLAN позволяет обойти ограничение на 4096 VLAN-ов за счёт использования 24-разрядных идентификаторов;
В пакетном фильтре pf реализована новая система управления очередями сетевых пакетов, которая пришла на смену системе приоритизации трафика и управления пропускной способности ALTQ. Поддержка ALTQ пока сохранена, но будет удалена в следующем выпуске. Изменено действие правила блокировки по умолчанию, в pf.conf теперь используется "block return". Простейший пример нового синтаксиса расстановки приоритетов для разного вида трафика:
queue std on em0 bandwidth 100M
queue ssh parent std bandwidth 10M
queue mail parent std bandwidth 10M, min 5M, max 25M
queue http parent std bandwidth 80M default
Задействован новый демон identd с реализацией протокола IDENT (RFC 1413), предназначенного для организации идентификации пользователя, устанавливающего TCP-соединение. Новый identd разработан в недрах проекта OpenBSD в качестве безопасной и высокопроизводительной замены штатного BSD identd, вызываемого через inetd. Новая реализация сама обрабатывает соединения и запускается в форме фонового процесса, при этом соединения обрабатываются в неблокирующем режиме с использованием libevent, что позволило кардинально увеличить производительность работы сервиса IDENT. Для обеспечения безопасности в новом identd поддерживаются такие дополнительные механизмы, как разделение и аннулирование привилегий. Обработка запроса производится после перехода в изолированное chroot-окружение и сброса привилегий. Для проверки наличия пользователя используется непривилегированный процесс, при этом выполнение проверки не блокирует обработку других запросов.
Добавлена поддержка файловой системы tmpfs;
Значительно улучшена функциональность и стабильность работы драйвера fuse, используемого для обеспечения работы в пространстве пользователя файловых систем на базе интерфейса FUSE;
Улучшена реализация программных RAID: обеспечена возможность работы с разделами больше 2 Тб; для платформ i386 и amd64 добавлена поддержка загрузки с шифрованного softraid на основе keydisk; добавлена экспериментальная поддержка перестроения разделов RAID 5;
Улучшена поддержка платформ: В порт OpenBSD/alpha добавлена поддержка многопроцессорных систем. OpenBSD/armv7 заменил порт OpenBSD/beagle. Для OpenBSD/aviion обеспечена поддержка собственной пересборки (self-hosting) для систем 88100 AViiON. С целью создания единой унифицированной реализации для всех платформ переписана утилита installboot, ранее используемая только на системах amd64 и i386;
Существенно расширена поддержка оборудования.
Переработан видеодрайвер radeondrm, который синхронизирован с кодом DRM-модуля ядра Linux 3.8.13.19. Добавлена поддержка переключения видеорежимов на уровне ядра (KMS), включая поддержку расширенных устройств вывода, таких как порты DisplayPort. Реализована поддержка framebuffer-консоли, работающей через radeondrm;
Обновлён драйвер inteldrm, который синхронизирован с кодом из ядра Linux 3.8.13.19;
Новые драйверы:
vmx для виртуального сетевого адаптера VMware VMXNET3;
vmwpvs для виртуального контроллера VMware Paravirtual SCSI;
vioscsi для адаптеров VirtIO SCSI;
viornd для VirtIO-устройств с реализацией генераторов случайных чисел;
ubcmtp для трекпадов Broadcom, используемых в новых моделях ноутбуков Apple MacBook, MacBook Pro и MacBook Air;
ugold для термометров TEMPer с интерфейсом USB;
ugl для USB хост-адаптеров на базе чипов Genesys Logic;
qla для Qlogic fibre channel HBA;
Поддержка новых сетевых адаптеров:
em: Intel 8 Series Ethernet с i217/i218 PHYs и i210/i211/i354;
iwn: Intel Centrino Wireless-N 2200, 2230 и 105/135;
arc: Areca ARC-1880, ARC-1882, ARC-1883, ARC-1223, ARC-1214, ARC-1264 и ARC-1284;
В драйвер wpi добавлена поддержка 802.11a (5Ghz);
ral: адаптеры на базе чипов RT3572;
re: адаптеры на базе чипов RTL8106E;
udav: CoreChip RD9700 USB Ethernet;
Поддержка кардридеров на базе чипов RTS5229;
Поддержка контроллеров Microsoft XBox 360;
Повышена стабильность перехода в спящий режим и возврата из него;
Продолжено развитие фреймворка для выноса вычислений контрольных сумм для протоколов TCP, UDP, ICMP и ICMPv6 на плечи сетевых адаптеров;
Из базового состава удалён POP3-сервер popa3d;
Версия SMTP-сервера OpenSMTPD в составе OpenBSD 5.5 соответствует portable-версии OpenSMTPD 5.4.2. В новой версии представлена поддержка TLS-расширения SNI (Server Name Indication), которое позволяет обеспечить доступ через шифрованное соединение к виртуальным хостам на одном IP. Реализована начальная поддержка механизма уведомления о доставке DSN (Delivery Status Notification) и расширенных кодов статуса (Enhanced Status Codes). Добавлен вывод статуса процессов через команду "smtpctl show status". Продолжается развитие экспериментальных бэкендов для хранения таблиц в Redis, SQLite, LDAP, PostgreSQL и SOCKETMAP.
Обновлён пакет OpenSSH 6.6, обзор улучшений можно посмотреть здесь;
По умолчанию осуществлён переход на использование PIE (Position-independent executables) для платформы i386 (большинство остальных платформ, включая amd64, перешли на PIE в прошлых выпусках);
В базовую систему добавлена новая утилита ntpctl, предназначенная для управления NTP-демоном (синхронизация точного времени);
В утилиту snmpctl добавлена поддержка работы в форме клиента SNMPv2 (команды "get", "walk" и "bulkwalk").
Внесены многочисленные исправления и улучшения в DHCP-сервер dhcpd;
В демоне iked (Internet Key Exchange version 2, IKEv2) добавлена поддержка OCSP ("Online Certificate Status Protocol"), аутентификации по публичным RSA-ключам (в дополнение к сертификатам X.509), DPD ("Dead Peer Detection"), IPComp и динамического назначения IP-адресов из выделенного пула;
При сборке системы в GCC по умолчанию включена опция "-Wbounded" для включения дополнительных проверок выхода за границы буфера в функциях, получающих на входе ссылку на буфер и его размер;
В состав включена новая утилита nl (фильтр для нумерации строк), определённая в стандарте POSIX;
Число портов превысило 8700 (полгода назад было 7900). Для архитектуры i386 подготовлено 8468 бинарных пакетов, для amd64 - 8534, для arm - 6181, для mips64el - 6730, для sparc64 - 7969, для hppa - 6549. Существенно переработаны утилиты для управления пакетами, в которых существенно снижено потребление памяти. Из находящихся в портах приложений, отмечены:
GNOME 3.10.2
KDE 3.5.10
KDE 4.11.5
Xfce 4.10
MySQL 5.1.73
PostgreSQL 9.3.2
Postfix 2.11.0
OpenLDAP 2.3.43 и 2.4.38
Mozilla Firefox 24.3 и 26.0
Mozilla Thunderbird 24.3.0
GHC 7.6.3
LibreOffice 4.1.4.2
Emacs 21.4 и 24.3
Vim 7.4.135
PHP 5.3.28 и 5.4.24
Python 2.7.6 и 3.3.2
Ruby 1.8.7.374, 1.9.3.484, 2.0.0.353 и 2.1.0
Tcl/Tk 8.5.15 и 8.6.1
JDK 1.6.0.32 and 1.7.0.21
Mono 2.10.9
Chromium 32.0.1700.102
Groff 1.22.2
Go 1.2
GCC 4.6.4 и 4.8.2
LLVM/Clang 3.3
Node.js 0.10.24
Компоненты от сторонних разработчиков, входящие в состав OpenBSD 5.5:
Xenocara, основанная на X.Org 7.7 с xserver 1.14.5 + patches, , freetype 2.5.2, fontconfig 2.10.91, Mesa 9.2.5, xterm 301, xkeyboard-config 2.10.1;
GCC 4.2.1 (с патчами) и 3.3.6 (с патчами);
Perl 5.16.3 (с патчами)
Улучшенная и более защищённая версия Apache 1.3, с поддержкой SSL/TLS и DSO
Nginx 1.4.4 (с патчами)
OpenSSL 1.0.1c (с патчами)
SQLite 3.8.0.2 (с патчами)
Sendmail 8.14.8 с libmilter
Bind 9.4.2-P2 (с патчами)
NSD 4.0.1
Lynx 2.8.7rel.2 c поддержкой HTTPS и IPv6
Sudo 1.7.2p8
Ncurses 5.7
Heimdal 1.5.2 (с патчами)
Binutils 2.15 (с патчами)
Gdb 6.3 (с патчами)
Less 444 (с патчами)
Awk в версии от 10 августа 2011 г.