OpenBSD

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

OpenBSD
Изображение логотипа
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​ (англ.)
Логотип Викисклада Медиафайлы на Викискладе
Разработчики 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. OpenBSD 7.0 RELEASED
  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 (недоступная ссылка). Дата обращения: 20 января 2014. Архивировано 23 января 2014 года.
  61. #bitcoin-assets log (недоступная ссылка). Дата обращения: 20 января 2014. Архивировано 23 января 2014 года.
  62. Анатолий Ализар. Румынский биткоин-миллионер оплатил долги OpenBSD. Хабрахабр (20 января 2014). Дата обращения: 2 января 2017.

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

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