История возникновения ОС FreeBSD BSD означает ''Berkeley Software Distribution''. Так называлось программное обеспечение, распространявшееся в исходных кодах Калифорнийским Университетом в Беркли, которое сначала представляло из себя дополнения к операционной системе UNIX компании AT&T. На основе версии 4.4BSD-Lite были созданы несколько операционных систем с открытыми исходными кодами. В их состав включены разработки других проектов, среди которых особо следует выделить Проект GNU. Вот что такое собственно операционная система BSD: - Ядро BSD, отвечающее за планировку процессов, управление памятью, симметричную многопроцессорность (SMP), работу с устройствами и так далее.
- В отличие от Linux, существует несколько ядер BSD, отличающихся возможностями.
- Библиотека C, основной системный интерфейс программирования.
- Библиотека C в BSD основывается на коде из Беркли, а не из Проекта GNU.
- Библиотека C в BSD основывается на коде из Беркли, а не из Проекта GNU.
- Оболочки, файловые утилиты, компиляторы, редакторы связей и другие утилиты пользователя. Некоторые из них базируются на коде GNU, а некоторые -- нет.
- Система X Window, отвечающая за графический интерфейс. Она используется в большинстве версий BSD, разрабатывается проектом XFree86. Это тот же самый код, что и в Linux. BSD, как правило, не делает упор на какую-то специфическую ''оболочку'', например GNOME или KDE, хотя они конечно доступны.
- Множество разных других прикладных и системных программ.
Операционные системы BSD не являются клонами друг друга. Они лишь потомки общего предка, ОС UNIX от AT&T Research, которая также дала начало современной ОС UNIX System V. Это факт может удивить, если вспомнить, что AT&T никогда не открывала исходные коды своих разработок. Действительно, UNIX никогда не был программным обеспечением с открытыми исходниками, и в законном смысле BSD определённо НЕ UNIX. Но с другой стороны, в AT&T активно использовали чужие разработки, например программное обеспечение, разрабатываемое Группой по Исследованиям в области Информатики (CSRG) Калифорнийского Университета в Беркли. С 1976 CSRG выпускала свой код на магнитных лентах под названием Berkely Software Distribution, сокращённо BSD. Изначально дистрибутивы BSD представляли собой наборы пользовательских программ, и так было до тех пор, пока CSRG не заключила контракт с Агентством по Перспективным Проектам при Министерстве Обороны США (DARPA). Целью контракта было обновление коммуникационных протоколов, на которых держалась компьютерная сеть агентства -- ARPANET. Новое семейство протоколов получило имя Internet Protocols или TCP/IP, по названиям двух основных протоколов. Их первая широко известная реализация была выпущена в составе 4.2BSD в 1982 году. В течение восьмидесятых годов образовалось несколько компаний по производству рабочих станций. Многие из них предпочли купить лицензию на UNIX, нежели разрабатывать своё ПО с нуля. Следует отметить компанию Sun, которая поступила именно таким образом и на основе 4.2BSD выпустила свою операционную систему SunOS. Когда AT&T тоже решила заняться коммерческой продажей своей ОС UNIX, появилась на свет несколько аскетичная реализация под названием System III, за которой в скором времени последовала System V. Интересно, что эти версии не содержали в себе собственной поддержки работы в сети и использовали код BSD, в том числе реализацию TCP/IP и набор утилит, среди которых следует выделить оболочку csh и текстовый редактор vi. Все эти ''добавки'' совместно получили название Berkely Extensions. Дистрибутив BSD содержал код, принадлежавший AT&T, и, следовательно, требовал лицензии. К 1990 году финансирование CSRG прекратилось, и группа была распущена. Кое-кто из бывших членов группы решил опубликовать код BSD отдельно от закрытого кода AT&T. В концов концов это удалось, и так появилась на свет версия Networking Tape 2 или Net/2. Net/2 не была законченной, цельной операционной системой: около 20% кода ядра отсутствовало. Один из членов CSRG, William F. Jolitz, дописал недостающий код и опубликовал результат в начале 1992 года под именем 386BSD. В то же самое время другая группа бывших членов CSRG организовала коммерческую компанию Berkeley Software Design Inc. и выпустила бета-версию операционной системы BSD/386, которая базировалась на том же самом коде. Потом это название было изменено на BSD/OS. 386BSD так никогда и не стала полноценной операционной системой. Зато в 1993 году из неё выделились два проекта: NetBSD и FreeBSD. Изначально разработчики разделились на два лагеря из-за расхождений во мнениях относительно того, сколько же ещё можно ждать улучшений в 386BSD. В начале года образовалась NetBSD, а первая версия FreeBSD была готова только к его концу. Время шло, и технические различия возрастали. В добавок, проекты поставили перед собой разные цели. В 1996 году от NetBSD отмежевался ещё один проект -- OpenBSD. Разработка FreeBSD началась в 1993 году, в качестве отправной точки были взяты исходные тексты 386BSD. Однако, из соображений законности использования исходных кодов 386BSD, команда разработчиков FreeBSD переработала большую часть системы ко времени выпуска FreeBSD 2.0 в январе 1995 г., используя 4.4BSD-Lite. По состоянию на 9 мая 2006 года текущей версией FreeBSD является FreeBSD 6.1. Раньше (до версии 6) существовало 2 ветви FreeBSD — STABLE (стабильная или производственная) (от 5.3) и CURRENT (нестабильная, тестовая) (5.0—5.2) Шестая же версия сразу стала STABLE без CURRENT. Существует также и четвёртая STABLE-версия (последняя — 4.11). На данный момент чаще всего используется пятая STABLE-версия. FreeBSD 5 включает несколько новых функций, в том числе относящихся к безопасности. С целью повысить безопасность FreeBSD был сформирован проект TrustedBSD, в рамках которого были разработаны, в том числе: расширяемая система принудительного контроля доступа MAC, списки доступа ACL для файловых систем и новая файловая система UFS2. Некоторые функции TrustedBSD были интегрированы также в операционные системы NetBSD и OpenBSD. FreeBSD 5 также поддерживает шифрование файловых систем посредством системы GDBE, которую написал Пол-Хеннинг Камп (Paul-Henning Kamp), один из ведущих разработчиков. Другие важные возможности FreeBSD 5 относятся к внутриядерным блокировкам для улучшения производительности на многопроцессорных SMP-системах и многопоточности, реализованной системой KSE, которая является поточной библиотекой по умолчанию начиная с версии 5.3. FreeBSD может быть установлена с различными способами: - С диска DVD-ROM;
- С диска CD-ROM;
- С дискета;
- С магнитная лента;
- С FAT-раздел жёсткого диска;
- С удалённый сервер (по протоколу FTP или NFS).
Отличительной чертой FreeBSD являеться система «портов». Она обеспечивает механизм установки сторонних программ, распространяемых в исходных кодах (обычный способ в мире UNIX). Порт включает в себя файлы, необходимые для правильной компиляции и работы приложения под FreeBSD. В настоящее время в коллекции портов около 15000 приложений самого разного назначения. Самая свежая информация о портах находится на сайте freshports.org. Большинство приложений, входящих в систему портов, распространяется также в заранее скомпилированном виде (т. н. пакеты). Пакеты разделены на три группы: одна для использования в ветви 4.x (4.10-RELEASE, 4.11-RELEASE, и т. д.), вторая для использования в ветви 5.x (5.4-RELEASE, 5.5-RELEASE) и третья для использования в ветви 6.x (6.0-RELEASE, 6.1-RELEASE). Почти всегда версия пакета для 4-ой ветви может быть установлена и использована в 5-ой ветви без особых проблем. NetBSD NetBSD — это первая свободная версия UNIX-подобной операционной системы университета Беркли (BSD). Её первая официальная версия 0.8 была выпущена в мае 1993 года. NetBSD и FreeBSD происходят из систем 4.3BSD и 386BSD. OpenBSD ответвилась от NetBSD в конце 1995 г. Текущая версия — NetBSD 3.0, выпущена в конце декабря 2005 года. NetBSD портирована на огромное количество компьютерных архитектур; лозунг NetBSD — «Конечно, NetBSD может работать и на этом» (англ. «Of course it runs NetBSD»). Двоичные пакеты для почти 60 аппаратных платформ (составляющих в общей сложности 17 различных процессорных архитектур) компилируются из одного дерева исходных кодов, поэтому новые функции в машинно-независимых частях появляются сразу для всех платформ без необходимости адаптации. Разработка драйверов также машинно-независима, поэтому один драйвер для карты, работающей, например, на шине PCI, будет работать на платформах i386, Alpha, PowerPC, SPARC и других, поддерживающих шину PCI. Такая платформонезависимость позволяет разрабатывать встраиваемые системы с помощью целого набора инструментов: компиляторов, отладчиков и других инструментов, поддерживающих кросс-компиляцию. NetBSD содержит собственную систему пакетов — pkgsrc. На данный момент она состоит из 6000 пакетов. Установка любой программы, будь то KDE, GNOME, Apache или Perl, сводится к тому, что надо войти в соответствующий каталог и набрать команду make install. После этого исходные коды будут загружены, распакованы, скомпилированы и установлены. Альтернативой самостоятельной сборки служат прекомпилированные (двоичные) пакеты. В любом случае все необходимые зависимости пакетов будут соблюдены автоматически. Согласно своему лозунгу о портируемости, коллекция пакетов NetBSD портирована не только на все доступные аппаратные платформы, но и — с помощью системы autoconf — на многие другие операционные системы, например, GNU/Linux, FreeBSD, OpenBSD, Solaris, Darwin/Mac OS X, IRIX и другие. OpenBSD OpenBSD — свободная, многоплатформенная UNIX-подобная операционная система, основанная на 4.4BSD. Основным отличием OpenBSD от других свободных операционных систем, базирующихся на 4.4BSD (таких, как FreeBSD, NetBSD) является изначальная ориентированность проекта на создание наиболее безопасной, свободной и лицензионно чистой из существующих операционных систем. Проект OpenBSD отпочковался от проекта NetBSD в 1995 году, в результате раскола в команде разработчиков. Тео де Раадт (Theo de Raadt; один из четырех основателей NetBSD) был вынужден покинуть проект, после конфронтации по поводу дальнейшего развития NetBSD (по мнению Тео, команда уделяла недостаточно внимания безопасности системы). Он создал свой собственный проект — OpenBSD, в который, вслед за ним, перешли и некоторые другие разработчики NetBSD. Проект OpenBSD выпускает два релиза в год: ориентировочно 1 мая и 1 ноября. В настоящий момент поддерживаются 16 различных платформ и архитектур, включая популярные i386-совместимые компьютеры, MacPPC «New World», Mac68k, Sun SPARC и ULTRASparc, DEC Alpha, AMD AMD64, VAX, Sharp Zaurus. Наиболее популярным (хотя далеко не единственным) применением OpenBSD являются системы защиты сетей (межсетевые экраны). В немалой степени этому способствуют дочерние проекты, разрабатываемые параллельно: Packet Filter (PF) — мощный файрвол/шейпер, заменивший в OpenBSD популярный IP Filter Даррена Рида (Darren Reed), после многолетних разногласий по поводу лицензии. PF был высоко оценен и взят на вооружение разработчиками параллельных проектов NetBSD и FreeBSD. OpenSSH — самая распространённая на данный момент открытая реализация протокола SSH. OpenNTPD — демон для синхронизации времени по протоколу NTP; может работать и как сервер. OpenOSPFD — реализация протокола динамической маршрутизации OSPF (локальная маршрутизация) OpenBGPD — реализация протокола динамической маршрутизации BGP (глобальная маршрутизация). OpenNTPD — сервер синхронизации времени по протоколу NTP. OpenCVS — (в разработке и отладке; на данный момент используется только часть — OpenRCS) — более гибкая, безопасная и свободная реализация CVS, чем разрабатываемая в рамках GNU. OpenBSD отличается от других свободных BSD-систем своей системой разработки. Никакой код не может попасть в систему извне случайно; любые изменения просматриваются ответственными за соответствующую часть системы лицами. Любая ошибка, найденная в одном месте, вызывает пересмотр всего аналогичного кода. Разработчики уделяют огромное внимание качеству документации. Любая ошибка в man-странице считается серьёзной и немедленно исправляется. Также большое внимание уделяется простоте и ясности кода — поскольку разработчики небезосновательно полагают, что чем проще код, тем меньше вероятность не заметить ошибку. Разработчики OpenBSD категорически не приемлют использование любого несвободного кода в системе. Неоднократно части операционной системы исключались из репозитория из-за проблем с лицензированием: IP Filter — оригинальная лицензия Даррена Рида имела ряд серьезных ограничений, например, не допускала модификации кода. А кроме исправления ошибок, сторонние программы в OpenBSD подвергаются тюнингу — изменению умолчаний, запрету небезопасных режимов и т. п. Некоторое время IP Filter имел компромиссную лицензию, но автор вернулся к оригинальной формулировке, и начиная с релиза 3.0, файрволом OpenBSD стал давно вынашиваемый Packet Filter. XFree86 — из-за изменения лицензии был заменён на X.Org. Web-сервер Apache — версия, входящая в OpenBSD, является последней версией (1.3.29) со старой, приемлемой, лицензией, c бэкпортами текущих патчей и специфическими патчами OpenBSD. В OpenBSD (в отличие наиболее распространённых сегодня свободных систем — Linux и FreeBSD, не говоря о «полуоткрытых» системах вроде OpenSolaris) не используются драйвера с «блобами» — скомпилированными объектными модулями с нераскрываемым исходным кодом. Кроме несвободного исполнения, такие драйвера позиционируются как потенциально опасные (в особенности, в системе с монолитным ядром, каковыми являются Юникс-подобные ОС), т. к. не поддаются проверке и необходимой модификации. В дерево портированных программ (портов), за редкими исключениями, не включаются (или удаляются) программы с лицензиями не разрешающими распространение в виде исходных кодов и в бинарном (скомпилированном) виде. Сравнение BSD и Linux В чём заключается главная разница, к примеру, между Debian Linux и FreeBSD? Для среднего пользователя она на удивление мала: оба продукта представляют собой UNIX-подобные операционные системы. Оба продукта разрабатываются на некоммерческой основе (это не относится к некоторым другим дистрибутивам Linux). В этом разделе мы рассмотрим BSD в сравнении с Linux. Всё сказанное в основном будет касаться FreeBSD, которой принадлежит около 80% всех инсталляций BSD в мире, хотя различия с NetBSD и OpenBSD в рамках предмета данной статьи незначительны. Процесс разработки выглядит следующим образом Ядра BSD используют Open Source модель разработки. Каждый проект поддерживает публично доступное дерево исходников с помощью Concurrent Versions System (CVS). Это дерево содержит абсолютно весь исходный код проекта, а также документацию и вспомогательные файлы. CVS позволяет пользователям получить копию дерева любой версии системы. Огромное число людей со всего мира участвуют в совершенствовании BSD. Все они разделены на три группы: Контрибьюторы (contributors) пишут код или документацию. Они не могут добавлять или изменять код непосредственно в дереве исходников проекта. Это привилегия особым образом зарегистрированных разработчиков, или коммиттеров (committers), которые просматривают и тестируют присылаемый им код и включают его в дерево. Коммиттеры -- это группа разработчиков, которые имеют доступ на запись в дерево исходных кодов проекта. Чтобы стать коммиттером, человек должен проявить себя в той области, в которой он хочет работать. Каждый коммиттер по своему собственному усмотрению решает, нужно ли ему подтверждение правильности планируемых изменений от других разработчиков или нет. В общем случае опытный коммиттер может вносить очевидно выгодные изменения ни с кем не советуясь. К примеру, коммиттер проекта документации может исправлять опечатки или грамматические ошибки в документах без предварительного согласования. Напротив, далеко идущие или просто сложные изменения настоятельно рекомендуется представлять к обсуждению перед окончательным внесением в дерево. Бывают крайние случаи, когда член Core Team, выполняющий функцию архитектора проекта, может санкционировать немедленную отмену или откат (backing out) каких-то изменений в дереве. Все коммиттеры обязательно получают уведомление о каждом изменении в дереве по электронной почте, так что их невозможно сохранить в тайне. В проектах FreeBSD и NetBSD существует такое понятие как Core team -- группа людей, занимающихся управлением деятельностью других разработчиков. Их роль, права и обязанности не всегда чётко определены. Необязательно (хотя в порядке вещей) быть коммиттером для того, чтобы входить в состав Core Team. Правила, которым следует Core Team, различаются между проектами, но в общем случае члены Core Team определяют общее направление развития системы в большей степени, чем все остальные разработчики. Такое положение вещей отличается от принятого в Linux: Не существует человека, который бы контролировал содержимое системы. На практике значение этого отличия оказывается переоценённым, так как Главный Архитектор может всегда потребовать откат изменений. Ко всему прочему, в проекте Linux на современном этапе изменения в код вносятся тоже не одним, а несколькими людьми. С другой стороны, существует центральное хранилище (repository), откуда можно получить полный код всей системы, причём как современных, так и предыдущих версий. Проекты BSD являются цельными ''Операционными Системами'', а не просто ядрами. Это различие тоже иногда переоценивают: ни BSD, ни Linux не представляют ценности без приложений, а они порой одни и те же в обеих средах. В результате формализованной процедуры поддержки единого дерева исходников в CVS процесс разработки BSD является полностью открытым, и мы получаем возможность доступа к любой версии системы по номеру или по дате. CVS также очень хорошо подходит для последовательных изменений в коде: к примеру, хранилище кода FreeBSD обновляется около ста раз за день, и большинство этих изменений весьма малы и незначительны в отдельности друг от друга. Каждый проект BSD предоставляет миру три различных варианта системы. Как и в Linux, версиям присваиваются номера, например 1.4.1 или 3.5. В добавок, номер версии имеет суффикс -- обозначение варианта, которое указывает на цели той или иной версии. Версия для разработчиков носит название CURRENT. FreeBSD присваивает ей и номер, например FreeBSD 5.0-CURRENT. NetBSD использует чуть-чуть другую схему наименований и добавляет к номеру однобуквенный суффикс, обозначающий изменения во внутренних интерфейсах. Пример: NetBSD 1.4.3G. OpenBSD не нумерует разрабатываемую версию (''OpenBSD-current''). Все новые разработки производятся именно на этой ''ветке'' (branch) системы. Через определённые интервалы от 3 до 6 месяцев проект выпускает версию RELEASE, которая распространяется на CD-ROM и доступна для скачивания по ftp. Примерами таких версий могут служить OpenBSD 2.6-RELEASE и NetBSD 1.4-RELEASE. Этот вариант предназначен для конечных пользователей. NetBSD также предоставляет так называемые исправленные релизы (patch releases), обозначаемые третьей цифрой в номере, например NetBSD 1.4.2. По мере обнаружения ошибок в версии RELEASE необходимые исправления вносятся в дерево CVS. Получающаяся система в проекте FreeBSD носит название STABLE, а в NetBSD и OpenBSD продолжает называться RELEASE. Некоторые мелкие улучшения тоже иногда вносятся в эту версию после продолжительного периода тестирования в CURRENT. Linux, напротив, поддерживает два различных дерева исходников, которые называются соответственно стабильной версией и версией для разработчиков. Стабильные версии имеют чётный вторичный номер, например 2.0, 2.2 или 2.4. Версии для разработчиков используют нечётные номера, такие как 2.1, 2.3 или 2.5. Во обоих случаях, к двойному номеру версии добавляется ещё одно число, указывающее на конкретный релиз. Стоит также отметить, что каждый поставщик предоставляет свой собственный вариант пользовательских программ (userland), так что имя дистрибутива тоже имеет значение. Естественно, что поставщики нумеруют свои изделия каждый по-своему, и, таким образом, мы получаем что-то вроде ''TurboLinux 6.0 с ядром 2.2.14''. Существует так же различия в лицензии BSD и Общественной Лицензией GNU (GPL)? Linux распространяется на условиях лицензии GNU General Public License (GPL), русский перевод которой тоже существует. Эта лицензия имеет целью уничтожить программное обеспечение с закрытым исходным кодом. В частности, любое ПО, базирующееся на продукте, выпущенном на условиях лицензии GPL, тоже должно поставляться с исходными кодами по первому требованию. Лицензия BSD не накладывает таких жёстких ограничений: разрешается распространение программного обеспечения в двоичном виде (binary-only). Этот факт привлекает разработчиков встроенных (embedded) приложений. То обстоятельство, что приложений для BSD существует меньше, чем для Linux, вынудило разработчиков BSD позаботиться о создании дополнительной совместимости с Linux, которая позволяет запускать программы для Linux на компьютере, работающем под BSD. Программный пакет, обеспечивающий совместимость, включает в себя как ядерную реализацию системных вызовов Linux, так и разнообразные файлы, необходимые программам, скомпилированным для Linux, например библиотеку C. Разница в скорости выполнения Linux-приложений на машине с Linux и на такой же машине с BSD незаметна. Принцип ''вся система от одного поставщика'', используемый в BSD, приводит к упрощению процедур обновления системы по сравнению с многими дистрибутивами Linux. BSD предоставляет специальные модули совместимости с устаревшими версиями системных библиотек, и таким образом делает возможным запуск откомпилированных несколько лет назад программ на обновлённой системе. Так что же всетаки стоит выбрать, BSD или Linux? На этот вопрос до сих пор не получено определенного ответа. Можно только помочь с советами при выборе: - ''Не тронь, пока работает'': если Вы уже успешно используете какую-нибудь Open Source ОС, и она Вас устраивает, то пожалуй не стоит ничего менять.
- Системы BSD, в особенности FreeBSD, могут демонстрировать большую по сравнению с Linux производительность. Но это вовсе не универсальное правило. Во многих случаях эта разница не заметна, если вообще есть. Иногда Linux может работать лучше, чем FreeBSD.
- В общем случае, у систем BSD очень хорошая репутация, когда дело касается надёжности. Это, в основном, связано с более ''зрелой'' базой исходных кодов.
- Лицензия BSD иногда может быть более привлекательной, нежели GPL.
- BSD может выполнять код для Linux, а обратное неверно. В результате мы имеем большее количество прикладного программного обеспечения для BSD, чем для Linux.
|