OpenBSD

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
OpenBSD
OpenBSD textual logo.svg
Рабочий стол OpenBSD 7.0Рабочий стол OpenBSD 7.0
Разработчик Тэо де Раадт и проект OpenBSD
Семейство ОС BSD UNIX
Основана на BSD (NetBSD)
Исходный код открытое ПО
Первый выпуск 18 октября 1995
Последняя версия 7.4 (16 октября 2023)
Частота обновления финальных версий два раза в год
Метод обновления сборка портов или установка пакетов
Менеджеры пакетов Pkg, pkgsrc
Поддерживаемые платформы ARMv7, ARMv8, MIPS, PowerPC, PA-RISC, SPARC64, LUNA, RISC-V, DEC Alpha, IA-32 и x86_64
Тип ядра модульное (UNIX)
Лицензия ISC
Состояние активное
Репозиторий исходного кода cvsweb.openbsd.org
Веб-сайт openbsd.org

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

Разработчики OpenBSD на хакатоне c2k1 в MIT

История

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

Релизы

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

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

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

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

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

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

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

OpenBSD — вторая по популярности BSD-система

Наиболее популярным (хотя далеко не единственным) применением OpenBSD являются системы защиты сетей (межсетевые экраны). В немалой степени этому способствуют дочерние проекты, разрабатываемые параллельно:

  • Packet Filter (PF) — межсетевой экран (фаервол) со встроенной платформой организации очередей ALTQ, заменивший в OpenBSD популярный IPFilter Даррена Рида после многолетних разногласий по поводу лицензии[17][18]. PF был высоко оценён и взят на вооружение разработчиками параллельных проектов NetBSD[19] и FreeBSD[20].
  • OpenSSH — самая распространённая открытая реализация SSH[21].
  • OpenNTPD — демон для синхронизации времени по протоколу NTP; может работать и как сервер[22][23][24].
  • OpenOSPFD — реализация протокола динамической маршрутизации OSPF (локальная маршрутизация).
  • OpenBGPD — реализация протокола динамической маршрутизации BGP (глобальная маршрутизация)[25].
  • OpenCVS — (в разработке и отладке; на данный момент используется только часть — OpenRCS) — более простая и безопасная реализация CVS, чем разрабатываемая в рамках GNU[26].
  • OpenSMTPD — реализация протокола SMTP[27].
  • OpenIKED — реализация протокола IKEv2, являющегося одной из основных составляющих IPSec VPN[28].
  • LibreSSL — форк OpenSSL, обеспечиващий совместимость с родительским проектом, но при этом систематически проходящий аудит как составная часть OpenBSD.
  • sndio — звуковой сервер.
  • OpenRSYNC — форк rsync под BSD лицензией.[29]

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

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

Особенности разработки

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 Архивная копия от 5 декабря 2015 на Wayback Machine — полуофициальное дерево портов, находящихся в состоянии разработки, располагающееся на GitHub. Также на GitHub имеются зеркала CVS-репозиториев.[30]

Собственные API

Перечисленные ниже технологии активно используются в кодовой базе OpenBSD. На сайте проекта поддерживается развёрнутый список Архивная копия от 9 сентября 2016 на Wayback Machine с указанием авторов.

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

Совместимость с оборудованием

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

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

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

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

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

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

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

См. также

Примечания

  1. OpenBSD - For Your Eyes Only. Дата обращения: 23 июня 2018. Архивировано 23 июня 2018 года.
  2. DistroWatch Weekly, Issue 381, 22 November 2010. Дата обращения: 23 июня 2018. Архивировано 23 июня 2018 года.
  3. DistroWatch Weekly, Issue 639, 7 December 2015. Дата обращения: 23 июня 2018. Архивировано 23 июня 2018 года.
  4. DistroWatch Weekly, Issue 681, 3 October 2016. Дата обращения: 23 июня 2018. Архивировано 23 июня 2018 года.
  5. OpenBSD Project Goals. Дата обращения: 1 октября 2006. Архивировано 7 июля 2013 года.
  6. Review: OpenBSD 3.4 SPARC64 Edition. Дата обращения: 23 июня 2018. Архивировано 23 июня 2018 года.
  7. Список рассылки netbsd-users: «… Theo de Raadt was asked to resign from the NetBSD Project…». Дата обращения: 1 октября 2006. Архивировано 14 октября 2017 года.
  8. 1 — Introduction to OpenBSD. Дата обращения: 1 октября 2006. Архивировано 23 июня 2018 года.
  9. OpenBSD Platforms. Дата обращения: 1 октября 2006. Архивировано 27 ноября 2015 года.
  10. OpenBSD 3.5: a peek at another free Unix [LWN.net]. Дата обращения: 23 июня 2018. Архивировано 23 июня 2018 года.
  11. DistroWatch Weekly, Issue 534, 18 November 2013. Дата обращения: 23 июня 2018. Архивировано 23 июня 2018 года.
  12. OpenBSD Ports (недоступная ссылка). Дата обращения: 12 ноября 2013. Архивировано 19 мая 2014 года.
  13. OpenBSD Release Songs. Дата обращения: 4 мая 2016. Архивировано 27 июня 2018 года.
  14. Official OpenBSD 6.1 CD - There's only One! (англ.). undeadly.org. Дата обращения: 24 ноября 2017. Архивировано 1 декабря 2017 года.
  15. OpenBSD Mirrors. Дата обращения: 4 мая 2016. Архивировано 14 марта 2014 года.
  16. autoinstall — unattended OpenBSD installation and upgrade. Дата обращения: 4 мая 2016. Архивировано 4 июня 2016 года.
  17. PF: The OpenBSD Packet Filter. Дата обращения: 1 октября 2006. Архивировано 24 сентября 2006 года.
  18. IP Filter — TCP/IP Firewall/NAT Software. Дата обращения: 1 октября 2006. Архивировано 7 декабря 2010 года.
  19. NetBSD Packet Filter information. Дата обращения: 1 октября 2006. Архивировано 24 сентября 2006 года.
  20. FreeBSD packet filter (pf). Дата обращения: 1 октября 2006. Архивировано 12 октября 2006 года.
  21. OpenSSH. Дата обращения: 23 октября 2020. Архивировано 10 апреля 2006 года.
  22. OpenNTPD. Дата обращения: 1 октября 2006. Архивировано 4 октября 2006 года.
  23. OpenBSD manual pages: ntpd.conf(5) (недоступная ссылка). Дата обращения: 6 июня 2011. Архивировано 26 апреля 2011 года.
  24. OpenBSD manual pages: ntpd(8) (недоступная ссылка). Дата обращения: 6 июня 2011. Архивировано 26 апреля 2011 года.
  25. OpenBGPD. Дата обращения: 1 октября 2006. Архивировано 1 октября 2006 года.
  26. OpenCVS. Дата обращения: 1 октября 2006. Архивировано 1 октября 2006 года.
  27. OpenSMTPD. Дата обращения: 17 февраля 2013. Архивировано 9 марта 2013 года.
  28. OpenIKED (недоступная ссылка). Дата обращения: 20 октября 2013. Архивировано 24 ноября 2013 года.
  29. уведомление на undeadly.org. Дата обращения: 6 сентября 2019. Архивировано 1 сентября 2019 года.
  30. OpenBSD. GitHub. Дата обращения: 24 ноября 2017. Архивировано 25 июля 2017 года.
  31. imsg_init(3) - OpenBSD manual pages. man.openbsd.org. Дата обращения: 24 ноября 2017. Архивировано 1 декабря 2017 года.
  32. pledge(2) - OpenBSD manual pages. man.openbsd.org. Дата обращения: 24 ноября 2017. Архивировано 29 ноября 2017 года.
  33. unveil(2) - OpenBSD manual pages. man.openbsd.org. Дата обращения: 3 ноября 2018. Архивировано 3 ноября 2018 года.
  34. OpenBSD Supported Platforms. OpenBSD Foundation. Дата обращения: 14 июля 2020. Архивировано 9 июля 2020 года.
  35. OpenBSD 6.7: ids of supported devices. BSD Hardware Project. Дата обращения: 14 июля 2020. Архивировано 24 февраля 2021 года.
  36. OpenBSD Hardware Trends. BSD Hardware Project. Дата обращения: 14 июля 2020. Архивировано 1 ноября 2020 года.
  37. LWN: DARPA Cancels OpenBSD Funding. Дата обращения: 4 мая 2016. Архивировано 15 марта 2014 года.
  38. Announcing — The OpenBSD Foundation. Дата обращения: 4 мая 2016. Архивировано 8 мая 2014 года.
  39. Google Summer Of Code 2014. Дата обращения: 4 мая 2016. Архивировано 28 ноября 2015 года.
  40. Electricity bill threatens survival of OpenBSD | ZDNet. Дата обращения: 20 января 2014. Архивировано 19 января 2014 года.
  41. Илья Сименко. Проект OpenBSD под угрозой закрытия: нет денег на оплату счетов за электричество. Хабрахабр (17 января 2014). Дата обращения: 2 января 2017. Архивировано 7 августа 2016 года.
  42. #bitcoin-assets log (недоступная ссылка). Дата обращения: 20 января 2014. Архивировано 23 января 2014 года.
  43. #bitcoin-assets log (недоступная ссылка). Дата обращения: 20 января 2014. Архивировано 23 января 2014 года.
  44. Анатолий Ализар. Румынский биткоин-миллионер оплатил долги OpenBSD. Хабрахабр (20 января 2014). Дата обращения: 2 января 2017. Архивировано 7 августа 2016 года.

Ссылки

Дополнительная информация