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

OpenBSD
OpenBSD textual logo.svg
Openbsd61 desktop.png
Разработчик Раадт, Тэо де и OpenBSD Project[d]
Семейство ОС BSD
Основана на NetBSD[2] и BSD[2]
Первый выпуск 18 октября 1995[3]
Последняя версия
Поддерживаемые платформы DEC Alpha[4][5], IA-32[6][4], x86_64[7][4], MIPS[4], PowerPC[4], SPARC[4][8], Zaurus[4][9], PA-RISC[4][10], Loongson[4][11], SPARC64[4][12], ARMv7[d][13][14][15] и ARMv8-A[d][16][17]
Лицензия Лицензия ISC[18]
Репозиторий исходного кода cvsweb.openbsd.org/cgi-b…
Веб-сайт openbsd.org​ (англ.)
Commons-logo.svg Медиафайлы на Викискладе
Разработчики OpenBSD на хакатоне c2k1 в MIT

ИсторияПравить

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

РелизыПравить

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

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

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

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

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

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

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

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

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

  • Packet Filter (PF) — межсетевой экран (фаервол) со встроенной платформой организации очередей ALTQ, заменивший в OpenBSD популярный IPFilter Даррена Рида после многолетних разногласий по поводу лицензии[35][36]. PF был высоко оценён и взят на вооружение разработчиками параллельных проектов NetBSD[37] и FreeBSD[38].
  • OpenSSH — самая распространённая открытая реализация SSH[39].
  • OpenNTPD — демон для синхронизации времени по протоколу NTP; может работать и как сервер[40][41][42].
  • OpenOSPFD — реализация протокола динамической маршрутизации OSPF (локальная маршрутизация).
  • OpenBGPD — реализация протокола динамической маршрутизации BGP (глобальная маршрутизация)[43].
  • OpenCVS — (в разработке и отладке; на данный момент используется только часть — OpenRCS) — более простая и безопасная реализация CVS, чем разрабатываемая в рамках GNU[44].
  • OpenSMTPD — реализация протокола SMTP[45].
  • OpenIKED — реализация протокола IKEv2, являющегося одной из основных составляющих IPSec VPN[46].
  • LibreSSL — форк OpenSSL, обеспечиващий совместимость с родительским проектом, но при этом систематически проходящий аудит как составная часть OpenBSD.
  • sndioзвуковой сервер.
  • OpenRSYNC - форк rsync под BSD лицензией. [47]

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

Собственные APIПравить

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

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

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

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

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

ФинансированиеПравить

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

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

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

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

См. такжеПравить

ПримечанияПравить

  1. http://www.openbsd.org/67.html — 2020.
  2. 1 2 The UNIX system family tree: Research and BSD (англ.)
  3. http://undeadly.org/cgi?action=article&sid=20061019013207
  4. 1 2 3 4 5 6 7 8 9 10 OpenBSD Platforms
  5. OpenBSD/alpha
  6. OpenBSD/i386
  7. OpenBSD/amd64
  8. OpenBSD/sparc
  9. OpenBSD/zaurus
  10. OpenBSD/hppa
  11. OpenBSD/loongson
  12. OpenBSD/sparc64
  13. OpenBSD/armv7
  14. OpenBSD Platforms
  15. ARMv7 now has a bootloaderOpenBSD Journal, 2016.
  16. OpenBSD platforms
  17. OpenBSD/arm64
  18. http://openbsd.su/src/share/misc/license.template
  19. OpenBSD - For Your Eyes Only
  20. DistroWatch Weekly, Issue 381, 22 November 2010
  21. DistroWatch Weekly, Issue 639, 7 December 2015
  22. DistroWatch Weekly, Issue 681, 3 October 2016
  23. OpenBSD Project Goals
  24. Review: OpenBSD 3.4 SPARC64 Edition
  25. Список рассылки netbsd-users: «… Theo de Raadt was asked to resign from the NetBSD Project…»
  26. 1 — Introduction to OpenBSD
  27. OpenBSD Platforms
  28. OpenBSD 3.5: a peek at another free Unix [LWN.net]
  29. DistroWatch Weekly, Issue 534, 18 November 2013
  30. OpenBSD Ports (недоступная ссылка). Дата обращения 12 ноября 2013. Архивировано 19 мая 2014 года.
  31. OpenBSD Release Songs
  32. Official OpenBSD 6.1 CD - There's only One! (англ.). undeadly.org. Дата обращения 24 ноября 2017.
  33. OpenBSD Mirrors
  34. autoinstall — unattended OpenBSD installation and upgrade
  35. PF: The OpenBSD Packet Filter
  36. IP Filter — TCP/IP Firewall/NAT Software
  37. NetBSD Packet Filter information
  38. FreeBSD packet filter (pf)
  39. OpenSSH
  40. OpenNTPD
  41. OpenBSD manual pages: ntpd.conf(5) (недоступная ссылка). Дата обращения 6 июня 2011. Архивировано 26 апреля 2011 года.
  42. OpenBSD manual pages: ntpd(8) (недоступная ссылка). Дата обращения 6 июня 2011. Архивировано 26 апреля 2011 года.
  43. OpenBGPD
  44. OpenCVS
  45. OpenSMTPD
  46. OpenIKED (недоступная ссылка). Дата обращения 20 октября 2013. Архивировано 24 ноября 2013 года.
  47. уведомление на undeadly.org
  48. OpenBSD. GitHub. Дата обращения 24 ноября 2017.
  49. imsg_init(3) - OpenBSD manual pages. man.openbsd.org. Дата обращения 24 ноября 2017.
  50. pledge(2) - OpenBSD manual pages. man.openbsd.org. Дата обращения 24 ноября 2017.
  51. unveil(2) - OpenBSD manual pages. man.openbsd.org. Дата обращения 3 ноября 2018.
  52. OpenBSD Supported Platforms. OpenBSD Foundation. Дата обращения 14 июля 2020.
  53. OpenBSD 6.7: ids of supported devices. BSD Hardware Project. Дата обращения 14 июля 2020.
  54. OpenBSD Hardware Trends. BSD Hardware Project. Дата обращения 14 июля 2020.
  55. LWN: DARPA Cancels OpenBSD Funding
  56. Announcing — The OpenBSD Foundation
  57. Google Summer Of Code 2014
  58. Electricity bill threatens survival of OpenBSD | ZDNet
  59. Илья Сименко. Проект OpenBSD под угрозой закрытия: нет денег на оплату счетов за электричество. Хабрахабр (17 января 2014). Дата обращения 2 января 2017.
  60. #bitcoin-assets log
  61. #bitcoin-assets log
  62. Анатолий Ализар. Румынский биткоин-миллионер оплатил долги OpenBSD. Хабрахабр (20 января 2014). Дата обращения 2 января 2017.

СсылкиПравить

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