OpenBSD

OpenBSD — свободная многоплатформенная операционная система, основанная на 4.4BSD — BSD-реализации UNIX-системы. Основным отличием OpenBSD от других свободных операционных систем, базирующихся на 4.4BSD (таких, как NetBSD, FreeBSD), является изначальная ориентированность проекта на создание наиболее безопасной, свободной и лицензионно чистой из существующих операционных систем.

История 
OpenBSD — самостоятельный проект, ответвление NetBSD, возникшее в конце 1995 года в результате раскола в команде разработчиков. Тео де Раадт (Theo de Raadt), один из четырёх основателей NetBSD, был вынужден покинуть проект после конфронтации по поводу дальнейшего развития операционной системы. Взяв за основу дерево исходных кодов NetBSD и переделав его в соответствии со своим видением, он создал свой собственный проект — OpenBSD, в который, вслед за ним, перешли и некоторые другие разработчики NetBSD.

Релизы 
Новые версии (релизы) OpenBSD выходят каждые полгода: ориентировочно 1 мая и 1 ноября. В настоящий момент поддерживаются 15 различных платформ и архитектур, включая популярные i386-совместимые компьютеры, M68k, UltraSPARC, DEC Alpha, AMD64, Sharp Zaurus и другие. Для установки доступно свыше 9500 пакетов с программным обеспечением, собираемым посредством штатного механизма портов.

Между релизами происходит регулярный выход «срезов» (), формируемых тем же путём, что и релизы. Срезы в основном соответствуют текущему состоянию дерева исходных текстов, но иногда в них вносятся дополнительные изменения, требующие тестирования.

До версии 6.2 каждый релиз сопровождался комиксом и как минимум одной песней. В песнях рассказывалось о процессе создания релизов, о спорах и конфликтах, возникших за прошедшие 6 месяцев, но чаще всего темой песен становятся новинки соответствующего релиза. До 2016 года релизы выпускались на CD-ROM. Начиная с версии 6.1 релизы выпускаются только в Интернете, при этом на CD-ROM выпускается ровно один экземпляр, выставляемый на аукцион.

Установка OpenBSD штатно возможна многими способами, в том числе: с компакт-диска, с USB-флешки, с дискеты, а также по сети посредством PXE. Из-за ограничений отдельных аппаратных платформ некоторые способы установки могут быть недоступны.

Релизы, включая срезы, подписываются утилитой signify собственной разработки. Отдельными ключами подписываются: 1) базовая система; 2) сторонние пакеты с прошивками оборудования; 3) все остальные сторонние пакеты. Каждый новый релиз подписывается новым ключом, при этом публичный ключ для очередного релиза поставляется уже вместе с предшествующим релизом.

OpenBSD — одна из немногих популярных современных операционных систем общего назначения, не обладающей штатным графическим и/или локализованным инсталлятором. Штатный инсталлятор представляет собой большой шелл-скрипт, с возможностью автоматической установки.

Распространённость OpenBSD и дочерние проекты 

Наиболее популярным (хотя далеко не единственным) применением OpenBSD являются системы защиты сетей (межсетевые экраны). В немалой степени этому способствуют дочерние проекты, разрабатываемые параллельно:
 Packet Filter (PF) — межсетевой экран (фаервол) со встроенной платформой организации очередей ALTQ, заменивший в OpenBSD популярный IPFilter Даррена Рида после многолетних разногласий по поводу лицензии. PF был высоко оценён и взят на вооружение разработчиками параллельных проектов NetBSD и FreeBSD.
 OpenSSH — самая распространённая открытая реализация SSH.
 OpenNTPD — демон для синхронизации времени по протоколу NTP; может работать и как сервер.
 OpenOSPFD — реализация протокола динамической маршрутизации OSPF (локальная маршрутизация).
 OpenBGPD — реализация протокола динамической маршрутизации BGP (глобальная маршрутизация).
 OpenCVS — (в разработке и отладке; на данный момент используется только часть — OpenRCS) — более простая и безопасная реализация CVS, чем разрабатываемая в рамках GNU.
 OpenSMTPD — реализация протокола SMTP.
 OpenIKED — реализация протокола IKEv2, являющегося одной из основных составляющих IPSec VPN.
 LibreSSL — форк OpenSSL, обеспечиващий совместимость с родительским проектом, но при этом систематически проходящий аудит как составная часть OpenBSD.
 sndio — звуковой сервер.
 OpenRSYNC — форк rsync под BSD лицензией.

Отдельные разработки OpenBSD не стали отдельными проектами, но используются в качестве компактных, легче аудируемых взамен внешним альтернативам, например:

 doas — альтернатива sudo.
 signify — альтернатива утилите openssl, реализующей отдельные заложенные в OpenSSL функции.
 vmm — собственный механизм (пара-)виртуализации.

Особенности разработки 
OpenBSD отличается от других свободных BSD-систем своей системой разработки. Никакой код не может попасть в систему извне случайно; любые изменения просматриваются ответственными за соответствующую часть системы лицами. Любая ошибка, найденная в одном месте, вызывает пересмотр всего аналогичного кода.

В OpenBSD уделяется огромное внимание качеству документации. Любая ошибка в man-странице считается серьёзной и немедленно исправляется. Также большое внимание уделяется простоте и ясности кода — поскольку разработчики небезосновательно полагают, что чем проще код, тем меньше вероятность пропустить ошибку.

Разработчики OpenBSD категорически не приемлют использование любого несвободного кода в системе. Неоднократно части операционной системы исключались из репозитория из-за проблем с лицензированием:
 IPFilter — оригинальная лицензия Даррена Рида имела ряд серьёзных ограничений, например, не допускала модификации кода. А кроме исправления ошибок, сторонние программы в OpenBSD подвергаются тюнингу — изменению умолчаний, запрету небезопасных режимов и т. п. Некоторое время IP Filter имел компромиссную лицензию, но автор вернулся к оригинальной формулировке, и начиная с релиза 3.0, межсетевым экраном в OpenBSD стал собственный Packet Filter.
 XFree86 — из-за изменения лицензии был заменён на X.Org.
 В OpenBSD (в отличие от наиболее распространённых сегодня свободных систем — Linux и FreeBSD, не говоря о «полуоткрытых» системах вроде OpenSolaris) не используются драйвера с «блобами» — скомпилированными объектными модулями с нераскрываемым исходным кодом. Кроме несвободного исполнения, такие драйвера позиционируются как потенциально опасные (в особенности, в системе с монолитным ядром, каковой является и OpenBSD), так как не поддаются проверке и необходимой модификации. Однако бинарные прошивки включаются в состав системы, если они допускают свободное распространение, поскольку они исполняются не на центральном процессоре, а на самом оборудовании.
 В дерево портированных программ (портов), за редкими исключениями, не включаются (или удаляются) программы с лицензиями, не разрешающими распространение в виде исходных кодов и в бинарном (скомпилированном) виде.

Разработка OpenBSD ведётся с помощью CVS. Для частичной компенсации неудобств, связанных с использованием централизованной системы управления версиями файлов, поддерживается сеть зеркал cvsync. При этом существует openbsd-wip  — полуофициальное дерево портов, находящихся в состоянии разработки, располагающееся на GitHub. Также на GitHub имеются зеркала CVS-репозиториев.

Собственные API 
Перечисленные ниже технологии активно используются в кодовой базе OpenBSD. На сайте проекта поддерживается развёрнутый список  с указанием авторов.
 BSD Authentication — API для аутентификации; изначально разработан в рамках проекта BSDi, на данный момент поддерживается только в OpenBSD.
 imsg — API для программ с разделением привилегий между процессами, используется во многих субпроектах OpenBSD.
 pledge/unveil — механизм самоограничения процессами своих возможностей, близкий по духу к Seccomp.
 strlcat/strlcpy — получивший широкое распространение за пределами OpenBSD API для работы с C-строками, помогающий избегать типичных для strcat/strcpy проблем с переполнением буфера.

Совместимость с оборудованием 
Поддерживаемые платформы и устройства перечислены в документе OpenBSD Supported Platforms Notes. Другие конфигурации также могут работать, но пока ещё не были протестированы или документированы. Списки поддерживаемых идентификаторов устройств доступны в стороннем репозитории.

В 2020 году был представлен новый проект для автоматического сбора информации о протестированных конфигурациях оборудования.

Финансирование 

В 2003 году финансирование со стороны DARPA было прекращено. Основным источником средств для поддержания жизнедеятельности проекта становятся индивидуальные пожертвования; как в денежной форме, так и в виде приобретения оборудования или транспортных билетов для разработчиков.

Для решения проблемы с пожертвованиями от юридических лиц 26 апреля 2007 года создана некоммерческая организация — фонд OpenBSD (OpenBSD Foundation). В отличие от многих других подобных организаций, фонд OpenBSD не влияет на принимаемые проектом решения и, за отдельным исключением, не выступает от его имени.

17 января 2014 года проект оказался под угрозой закрытия из-за того, что у Тео де Раадта, использующего для OpenBSD огромный «зоопарк железа» у себя дома, накопилась значительная задолженность за электроэнергию, эквивалентная $20 000, в связи с чем он опубликовал письмо с просьбой о помощи. Спонсор из числа Bitcoin-богачей нашёлся буквально через 2 дня сразу после того, как ссылку опубликовали на IRC-канале #bitcoin-assets. Румынский предприниматель Мирча Попеску сообщил, что готов пожертвовать сразу всю необходимую сумму.

На данный момент именно OpenBSD Foundation финансово поддерживает инфраструктуру проекта, а также проведение хакатонов.

См. также 
 Сравнение операционных систем семейства BSD

Примечания

Ссылки 

 
 Undeadly  — официальный блог разработчиков OpenBSD и не только
 Новости OpenBSD  на сайте Linux.org.ru

 Дополнительная информация
 Поиск исходных кодов OpenBSD 
 Поиск портов OpenBSD на основе sqlports с подробностями о зависимостях
 Поиск портов OpenBSD  на основе истории изменений в CVS

OpenBSD
Свободные операционные системы
ОС семейства BSD
Операционные системы повышенной защищённости
Программное обеспечение с лицензией ISC