Сага о FreeBSD. Берклиада, или история одной системы

Алексей Федорчук

Материал отправлен в Подвал, как отслуживший срок эпохи. Заменён двумя главами из Саги о FreeBSD:

Определившись в предыдущей главе со спецификой FreeBSD, давайте посмотрим, как эта система дошла до жизни такой. Для чего обратимся к её истории.. В своей протоисторической части она во многом перекликается с материалами по истории Linux.

Древнее золото редко блестит, Древний клинок — ярый. Выйдет на битву король-следопыт: Зрелый — не значит старый. Дж.Р.Р.Толкиен, Властелин Колец (перевод А.Кистяковского)

Содержание

FreeBSD и апология истории

История FreeBSD не получила столь широкой известности, как история Линуса Торвальдса и его Linux’а. Не написано о ней и книг, подобных Just for Fun: ключевые разработчики этой системы ограничились краткими очерками, содержащими порой несколько противоречивую трактовку событий. Однако история FreeBSD заслуживает самого подробного рассмотрения. Если история создания Linux напоминает добрую рождественскую сказку о бедном студенте, ставшем знаменитым и богатым, то эпопею FreeBSD можно уподобить скорее истории возвращения в мир Кольца Всевластья — в ней столько же неслучайных совпадений и закономерных случайностей, приведших после множества перипетий к благоприятному исходу. Многое в этой главе, возможно, покажется непонятным совсем начинающему пользователю FreeBSD, особенно если раньше он вообще не сталкивался с Unix-подобными системами. Однако я надеюсь, что все неясные моменты получат своё объяснение в последующих главах. И тогда, возможно, он вернётся к этому очерку и посмотрит на историю FreeBSD ещё раз. Для чего я привожу столь подробную ретроспекцию по истории FreeBSD в книге, рассчитанной на начинающего (в том числе и совсем начинающего) пользователя? Того самого, которому, вероятно, не терпится, получив некий необходимый минимум сведений, броситься на установку системы, как на амбразуру ДЗОТа. Да потому, что, по моему скромному мнению, невозможно понять и, тем более, полюбить эту систему, не ознакомившись с её историей. В подтверждение своей точки зрения сошлюсь на слова Мэтта Диллона, в прошлом одного из ключевых разработчиков FreeBSD, а ныне создателя её форка — операционной системы DragonFlyBSD:

Самой большой ошибкой, которую может допустить программист, является игнорирование истории, и это именно та ошибка, которую сделали разработчики многих других современных операционных систем… Я плохо переношу тех, кого история не учит.

Наконец, кроме своей поучительности, история FreeBSD просто чрезвычайно увлекательна и полна драматизма, как хороший приключенческий роман. Надеюсь, в своём очерке мне удалось хоть в какой-то мере передать те чувства, которые испытывал сам, когда с нею знакомился.

С чего начинается история?

В ночь с 19 на 23 декабря текущего, 2008 года прогрессивное человечество имеет возможность торжественно отметить 15-летний юбилей FreeBSD: именно в промежуток между этими датами ложится время создания первых файлов версии 1.0 этой операционной системы (их можно найти в ftp-архиве проекта. Какую из них принять за дату рождения новой системы? Действительно, с днём рождения UNIX всё ясно: это 1 января 1970 года, 0 часов по Гринвичу (или, как нынче принято говорить, по UTC — Universal Coordinated Time, хотя это и не совсем одно и то же). Не то чтобы именно тогда она вышла из головы своего создателя, Кена Томпсона, подобно Афине Палладе из головы Зевса: просто с этого момента отсчитывают время (в секундах) системные часы всех Unix-машин мира. А вот уже в определении даты рождения ОС Linux начинаются расхождения. Считать ли таковой 25 августа 1991 года, когда Линус Торвальдс впервые объявил в одном из списков рассылки о своём намерении создать новую операционную систему? Или отнести её на 17 сентября того же года, когда в каталог pub/OS/Linux на ftp-сервере Технического университета Хельсинки легли исходники версии 0.01? Правда, в любом случае диапазон дат не превышает одного месяца. С определением дня рождения FreeBSD дело обстоит гораздо сложнее — может быть, именно поэтому он никогда не праздновался (по крайней мере, я об этом не слышал). Конечно, в качестве такового можно принять любую из приведённых выше дат. Или дату состоявшегося примерно в те дни анонса FreeBSD 1.0 — правда, мне не точно удалось выяснить, когда именно: источники указывают просто на конец декабря. А может быть, отсчитывать существование FreeBSD с наречения ей имени, придуманного Дэвидом Гринменом (David Greenman) в середине 1993 года? — правда, тут точную дату вообще вряд ли установить. Или отнести её рождение на ещё более раннее время, когда на руинах проекта 386/BSD собралась группа его бывших пользователей, для которой имя FreeBSD и было придумано. А возможно, зарождение FreeBSD относится вообще к седой древности — 1978 году, когда впервые началось распространение лет Berkeley Software Distributions, или к году 1974, когда система UNIX попала в стены Калифорнийского университета в Беркли. Чтобы ответить на вопрос, откуда пошла есть FreeBSD, нам придётся спуститься в недра истории ещё глубже, в область преданий старины глубокой. И здесь уместно сказать несколько слов об источниках, которые донесли эти предания до наших дней. Как я уже говорил, про историю FreeBSD не создано книги вроде той, что написали Линус Торвальдс и Дэвид Даймонд. И поэтому эту историю приходится реконструировать по серии разрозненных материалов, написанных очевидцами и участниками событий, каждый из которых освещал их под своим углом зрения. Наиболее полных и последовательных источников — два:

  1. A Brief History of FreeBSD Джордана Хаббарда (Jordan Hubbard), существующий также и в русском переводе;
  2. исторический очерк Керка МакКузика (Marshall Kirk McKusick) Twenty Years of Berkeley Unix, с некоторыми вариациями вошедший в ряд его (написанных с соавторами) книг; в частности, на русском языке с ним можно ознакомиться в книге: МакКузик М.К., Невилл-Нил Д.В. FreeBSD: архитектура и реализация. М: КУДИЦ-ОБРАЗ, 2006.

Дополнительные сведения по истории FreeBSD можно получить в англоязычном и русскоязычном вариантах Википедии поиском по ключевым словам: BSD, FreeBSD, CSRG; в соответствующих статьях содержатся и ссылки на их источники. Хронологическая канва истории UNIX, BSD и Linux вплоть до 2002 года дана в статье Джорна Баргера Timeline of GNU/Linux and Unix. Еще более полные сведения по истории UNIX и Unix-подобных систем, представленные в графическом виде, находятся на странице Эрика Льюинеза Unix History. Там же есть немало ссылок на источники информации по теме, в том числе — и по вопросам юридических казусов, связанным с UNIX. Важным источником сведений об истории различных вариантов BSD вообще и FreeBSD, в частности, являются сами эти системы. Ранние версии BSD-систем, такие как 386BSD и 4.4BSD-lite, можно найти на ряде ftp-серверов, например, здесь и здесь; вот, пожалуй, наиболее полная подборка. А по архиву старых версий FreeBSD можно проследить эволюцию этой системы, начиная с первой её версии и до наших дней. Вообще поиск в BSD-секторе Google дал массу разрозненных сведений исторического характера, которые оставалось только собрать воедино. Результаты обобщения всех перечисленных источников и предлагаются ниже.

Праистория: Computer Science, ARPANET и UNIX

Праистория FreeBSD, охватившая отрезок времени от начала 60-х до середины 70-х годов прошлого века, слагалась из взаимодействия трёх источников и трёх составных частей:

  • академической и университетской Computer Science;
  • работ по созданию систем отказоустойчивой правительственной связи;
  • корпоративных разработок системы UNIX.

FreeBSD вышла из университетской среды, и потому самые глубинные корни её следует искать в академической «науке о компьютерах» (Computer Science). Она зародилась в начале 60-х годов, после появления первых компьютеров, способных к интерактивной работе. Это были ещё далеко не персональные компьютеры, но, в отличие от ранее существовавших «больших» машин, которые работали исключительно в режиме пакетных заданий, они были способны реагировать на действия пользователя в так называемом режиме разделения времени, что делало их пригодными к использованию в «мирных целях» — в том числе и к разработке операционных систем для них же. Место зарождения Computer Science — крупнейшие американские университеты, такие как Массачусетский Технологический Институт (MIT), Йель, Стэнфорд, Университет Карнеги-Меллона, Калифорнийский университет Беркли. Исторически сложилось так, что центром «компьютерной науки» на протяжении долгого времени была лаборатория искусственного интеллекта MIT (MIT AI — Artificial Intelligence), пока переходящее знамя передовиков производства Computer Science не перешло в другие руки. В недрах MIT AI родился, судя по всем свидетельствам, и термин «хакер» — так называли друг друга те, кто способен был «врубиться» в компьютерные науки, хотя существуют и другие версии происхождения этого термина. В любом случае, однако, он не имеет ничего общего с обывательским представлением о компьютерных злоумышленниках — интересы истинных хакеров всегда лежали и лежат в иных сферах, в том числе и в сфере компьютерной безопасности. Работы по созданию отказоустойчивой правительственной связи США, как нетрудно догадаться, начались по инициативе Министерства обороны этой страны, ибо имели целью создание надёжной системы передачи информации на случай советского ядерного удара. Финансирование осуществлялась через ARPA — Агентство передовых исследовательских проектов (Advanced Research Projects Agency), которое позднее, без лишнего лицемерия, было переименовано в DARPA, с добавлением слова Defense (в данном контексте — Оборонных проектов). Запомним последнюю аббревиатуру — позднее эта организация сыграет немалую роль в судьбе будущей FreeBSD. Однако непосредственная реализация системы связи была возложена на ряд американских университетов — Калифорнийский, Университет штата Юта, Стэнфорд. Как оказалось, кроме университетских хакеров из сферы Computer Science, разрабатывать и поддерживать её было попросту некому. А эти ребята, за ту же зарплату, не только выковали электронный щит своей Родины в виде сети ARPANET (по имени организации-кормильца), но, будучи истинными учёными, воспользовались случаем в интересах науки. А именно — наладили бесперебойные каналы обмена информацией между своими Alma mater, создав таким образом сообщество ARPANET — прообраз грядущего Интернет-сообщества. Сеть ARPANET очень быстро охватила не только университеты, участвовавшие в её разработке, но и многие другие учебные и научные заведения Америки, а потом и сопредельных стран, начиная с Норвегии, став таким образом международной коммуникационной магистралью для обмена научной информацией. Правда, скоро майку лидера у неё отвоевала сеть Национального научного фонда США (NSF — National Science Foundation), создавшего свою сеть, NSFNet, обеспечивавшую большую пропускную способность. Именно на её базе и был создан современный Интернет. Впрочем, это уже другая история, связанная с нашей лишь косвенно. Наконец, третий исток и, одновременно, составная часть будущей FreeBSD — это операционная система UNIX. Зарождение её, как и сообщества Computer Science, также связано с появлением компьютеров, пригодных к использованию в интерактивном режиме, что создало предпосылки к разработке тех самых систем разделения времени, допускающих как бы одновременное исполнение нескольких задач (time sharing), которые пришли на смену машинам, работавшим исключительно в пакетном режиме. Одной из первых таких систем была CTSS (Compatible Time Sharing System). Без академической составляющей не обошлось и здесь. В развитие CTSS в 1965 году фирмами AT&T и General Electric вместе с MIT был начат проект по созданию истинно многозадачной и многопользовательской системы, которая получила имя Multics. По замыслу она была столь прогрессивной, что в те времена оказалась нереализуемой, и в 1969 году проект был закрыт, оставив среди его участников тоску по интерактивной работе и идею системы разделения времени, вскоре воплотившуюся в UNIX. Правда, сама ОС UNIX вышла из корпоративных недр компании AT&T, сотрудниками которой являлись его создатели — бывшие участники проекта Multics. Однако это ни в коей мере не была корпоративная разработка — Кен Томпсон и Деннис Ричи разрабатывали ее для собственных потребностей — это был первый в истории IT пример создания «системы для себя». В противоположность, например, системе VAX/VMS от фирмы DEC, которая претендовала на звание «системы для всех». Правда, понятие «все» в случае c VAX/VMS охватывало весьма узкий круг, даже не столько лиц, сколько организаций. Но остается фактом, что система VAX/VMS разрабатывалась не для личного использования — это наложило отпечаток не только на неё, но и предопределило судьбу ее прямого потомка — Windows NT/2000/XP. UNIX же, говоря иными словами, разрабатывался на голом энтузиазме, без особой поддержки дорогих руководителей, причём на аппаратном обеспечении, подлежащем списанию в утиль. На дальнейшую судьбу UNIX огромное влияние оказали юридические коллизии тогдашнего текущего момента. Незадолго до создания этой системы корпорация AT&T подверглась антимонопольному преследованию (подобно Microsoft в более позднее время), в результате чего претерпела поражение в правах — на деятельность ее был наложен ряд ограничений. В частности, она не имела права торговать программными продуктами, в число коих попадала и новорожденная UNIX. Разумеется, материнская корпорация постаралась пристроить к делу создание своих сотрудников — в частности, Unix с его инструментарием использовался в AT&T для подготовки технической и патентной документации. Что, кстати, представляет собой типичную пользовательскую задачу — и скажите мне теперь, что UNIX не пригоден для применения конечными пользователями. Однако, как уже было сказано, в силу юридических ограничений AT&T не могла сделать из UNIX коммерческий продукт. И потому исходники этой системы, начиная с 1974 года, стали распространяться в университетах — в образовательных, как это тогда задумчиво называлось, целях. На условиях по тем временам достаточно либеральных, в том числе, и просто явочным порядком, лично Брайаном — люди с психологией сталинских наркомов, могущие сказать «под мою ответственность», встречались не только в Советском Союзе… Передача UNIX в университетские структуры не была свободным распространением в том смысле, который вкладывается ныне в понятие FOSS. Хотя система, точнее, тогда еще не более, чем ее прототип, и передавалась в исходных текстах с правом их изучения, модификации, доработки и прочего потрошения. Однако, во-первых, все эти действия требовали обладания лицензией на исходный код UNIX, которая передавалась AT&T вместе с ней самой и её исходниками, но — за деньги, хотя и не очень большие по американским масштабам середины 70-х годов прошлого века. А во-вторых, и это главное, условия лицензии не допускали дальнейшего свободного распространения ни системы целиком, ни отдельных ее компонентов, содержащих исходный код UNIX. Что, собственно, и создало сюжет. Точнее, заложило основу дальнейшей детективно-технологической интриги. Однако до развёртывания сюжета грядущего технологического детектива было ещё далеко. А пока университеты с радостью приобщались к новой операционной системе, в которой были реализованы все передовые идеи того времени. И к тому же в принципе способной функционировать практически на всем спектре тогдашнего оборудования. Напомню, что речь идет о середине 70-х годов прошлого века: Стив Джобс еще не помышлял о продаже калькулятора и использовал родительский гараж по прямому назначению, а Билл Гейтс не освободил мир своим MS DOS’ом от засилья CP/M. Выйдя за стены Bell Labs, Unix зажил самостоятельной жизнью, крепко окопавшись в той же университетско-академической среде Computer Science. Одним из её центров в данном случае оказался Калифорнийский университет Беркли — учреждение, известное всем, интересовавшимся историей как точных наук, так и их влиянием на нашу жизнь посредством ядерной и водородной бомб и сопряжённых с ними материй. Получив, благодаря профессору Бобу Фабри (Bob Fabry), в 1974 году ОС UNIX вместе с её исходниками и лицензией на их использование, университет Беркли поддержал и развил традицию «систем для себя», свойственную первозданному UNIX. Однако на этом праистория FreeBSD заканчивается, и начинается её

Начало предыстории: проект BSD и CSRG

В Беркли UNIX попал в условия открытого общения специалистов в области Computer Science самого разного ранга, от профессоров, начиная с Фабри, до аспирантов — именно такой статус имели во второй половине 70-начале 80-х годов прошлого века Билл Джой (Bill Joy, в последующем один из основателей компании Sun), Маршалл Керк МакКузик (Marshall Kirk McKusick), Озалп Бабаоглу (Özalp Babaoğlu). Их усилиями, вкупе с другими сотрудниками университета, система UNIX медленно, но верно превращалась именно в то, чем она стала ныне. Достаточно сказать, что на счету «ранних берклианцев» разработка системы управления виртуальной памятью, концепции сокетов для взаимодействия между процессами, текстовый редактор vi, ставший в лице своих клонов elvis и Vim неотъемлемой частью всех Unix-подобных систем, и командная оболочка C-shell (csh), положившая начало интерактивным методам работы в командной строке. Нам, избалованным мощными и красивыми текстовыми редакторами для графического режима (или, по вкусу, изощрёнными возможностями нынешнего Vim’а), современными командными оболочками типа bash и zsh, трудно сейчас оценить, какую роль в дальнешем развитии Unix-подобных систем сыграли vi и csh, выглядящие сегодня столь невзрачными. Однако представьте, что в вашем распоряжении до сих пор была альтернатива из строчного редактора ed без всяких интерактивных возможностей, а также громоздкого и во многом непонятного GNU Emacs (разработка которого, кстати, началась лишь на несколько лет раньше создания vi). И вдруг в одночасье вы получаете в свое распоряжение легкий, универсальный (то есть работающий на всех терминалах, и работающий абсолютно одинаково), простой (да-да, vi в базовой своей части чрезвычайно прост — если воспринимать его именно таким, каким он является) интерактивный редактор. Да к тому же гарантированно имеющийся на любой Unix-машине. А чтобы осознать, что привнёс с собой csh в командную строку, просто попробуйте поработать сколько-нибудь продолжительное время в /bin/sh, являющейся оболочкой по умолчанию для обычного пользователя во FreeBSD. Выполняя при этом действия хоть на гран сложнее, чем ls и cd. А ведь /bin/sh — это POSIX-шелл, основанный на шелле Корна, до интерактивных возможностей которого первичному для UNIX шеллу Борна, по свидетельству очевидцев, — что до Пекина раком… Впору ли не воздать должное создателю обеих этих программ Биллу Джою? Сотрудники Беркли оказались первыми и в организации распространения результатов своих работ. Этой цели служила Berkely Software Distribution или, сокращённо, BSD — система распространения разработанного в университете софта на магнитных лентах, от которой в конечном итоге происходит всё многообразие форм BSD- и Linux-дистрибуции. Первые выпуски BSD (1BSD и 2BSD), вышедшие в 1978 году, ещё не представляли собой цельных систем, а содержали лишь набор утилит и приложений собственной разработки. О какой-либо системной целостности можно говорить, начиная с 3BSD (1979 год) — правда, целостность эта в значительной мере была обусловлена включением компонентов собственно UNIX. Однако именно выпуск 3BSD послужил причиной тому, что команда UNIX-разработчиков Беркли получает в 1980 году грант упоминавшегося выше DARPA (то есть, в конечном счёте, Министерства обороны США) с целью разработки протокола передачи данных для сети ARPANET, который ныне известен как протокол TCP/IP. Практически одновременно с получением гранта DARPA Бобом Фабри формируется команда CSRG (Computer System Research Group), которая объединила всех трудящихся университета Беркли (и не только его), связанных с развитием берклианской ветви UNIX. Начиная с октября 1980 года, на протяжении двух с небольшим лет эта группа последовательно выпускает 4BSD, а затем 4.1BSD в нескольких версиях: собственно 4.1BSD — июнь 1981 года, 4.1a, 4.1b и 4.1c (1982—начало 1983 года). Модель распространения BSD выглядит весьма запутанной для нас, незнакомых с американским юридическим крючкотворством. Все собственно Берклианские разработки распространялись хотя и не бесплатно, но за минимальные деньги (лента 1BSD, например, стоила 50 долларов), причём дальнейшее их использование было практически свободным, в духе позднейшей BSD-лицензии. Однако те же разработки в составе цельной работоспособной системы, содержащей UNIX-код, требовали лицензирования последнего, что приводило к удорожанию на порядки. Дело доходило до ситуаций, которые кажутся нам смешными: организации покупали лицензию на использование UNIX у Bell Labs, но заказывали и использовали более функциональную систему из Беркли. Несколько напоминает ситуацию с Windows, когда приобретается не программа как товар, а некое мифическое право на её использование, не правда ли? Такое положение вещей, противоречащее здравому смыслу, не могло продолжаться вечно — и скоро мы узнаем, каким образом оно разрешилось. Пока же вернёмся к развитию BSD-линиии. Наконец, в августе 1983 года, была выпущена система 4.2BSD — та самая, на разработку которой собственно и был получен грант DARPA. К этому времени Билл Джой, сыгравший большую роль в разработке предыдущих версий, покинул Университет Беркли и стал соучредителем новой компании Sun Microsystems. На первые же роли в проекте BSD вышли Майк Карелс (Mike Karels) и Керк МакКузик. Система 4.2BSD аккумулировала в себе как все ранние достижения берклианской мысли, так и разработки, выполненные уже в рамках CSRG и как бы «порционно» появлявшиеся в последовательности версий 4.1BSD. Из которых главнейшими были протокол TCP/IP и новая файловая система FFS (Fast File System). Это и обусловило новизну и своеобразие системы, предопределившей развитие линии BSD на многие годы вперёд. О значении TCP/IP много говорить не приходится: если вы читаете эти строки, значит, тем или иным образом имеете доступ в Интернет. Так вот, без TCP/IP ничего этого не было бы: ни Интернета, ни доступа к нему, ни, тем более, этой главы, материал для которой по крупицам собирался именно в Сетевых источниках. А чтобы понять значение FFS, достаточно вспомнить особенности исконной для UNIX файловой системы — s5fs с её ограничением на длину имени файла (14 символов) и количеством файлов на разделе (не более 65 тысяч), отсутствием понятий группировки блоков и, напротив, внутренней их фрагментации, — короче говоря, всего того, что пользователю, например, Linux’а представляется присущим файловой системе от века. Так вот, до появления FFS всего этого не было. И все файловые системы современных Unix’ов, как свободных, так и проприетарных, берут свое начало не от s5fs, а от FFS из Беркли, если не прямо, то опосредованно, через развитие заложенных в ней принципов. Система 4.2BSD не только предопределила направление развития всех последующих представителей BSD-семейства, но и оказала большое влияние на UNIX «чистой линии». Ведь UNIX от AT∓T, за которым со временем закрепилось название System V, развивался и в своей Alma Mater, и во многих других компаниях, лицензировавших его, давая немало клонов, оказавших то или иное влияние на систему в целом. Однако они отмирали, сливались, перекрещивались, и имена их ныне помнят только очевидцы событий и особо интересующиеся вопросом. И постепенно реальностью стало существование двух линий развития Unix: System V в её многочисленных реализациях и BSD. Причём, в силу открытости берклианских разработок, достижения 4BSD (протокол TCP/IP, вариации на тему FFS) быстро инкорпорировались и в System V. Так что, начиная с System V Realese 4 (SVR4), говорить от первозданном Unix уже не приходится. Именно SVR4 легла в основу большинства современных (то есть ныне здравствующих и развивающихся) коммерческих UNIX-систем, таких, как HP-UX фирмы Hewlett-Packard, AIX от IBM, Sun Solaris, SGI IRIX, SCO Unixware (если последнюю еще можно считать живой), не считая некогда передовых, но прекративших свое развитие систем вроде True64 от в Бозе почившей фирмы DEC. В последующем SVR4 оказала влияние и на развитие Linux, хотя, вопреки утверждениям SCO, между ними нет никакого «кровного родства» в виде общего кода. Линия BSD тоже давала боковые отростки, в том числе и коммерческие. В их числе SunOS — ранняя операционная система для машин одноименной фирмы на процессорах Sparc, позднее заменённая на Solaris от линии SVR4; или A/UX для Macintosh на процессорах Motorolla 68xxx — да, уже встарь были попытки приобщения Mac’ов к миру Unix, нашедшие в конце концов свое воплощение в современной MacOS X, которая также имеет непосредственное отношение к миру BSD-систем. Отдельным побегом линии BSD стали микроядерные операционки, в первую очередь Mach, разрабатывавшаяся в Университете Карнеги-Меллона, а затем — в университете штата Юта. Некогда она рассматривалась как прообраз операционных систем будущего, однако на практике возлагавшихся на него надежд не оправдала. Сам по себе проект Mach давно прекратил своё развитие, как и все его прямые отпрыски, Yamit и xMach. Но он, в свою очередь, успел дать несколько потомков косвенных. Во-первых, на микроядре Mach долгое время базировался перманентный долгострой проекта GNU — Hurd, призванный заменить все прочие операционки FOSS. И хотя ныне Mach в нём заменяется на иное микроядро, L4, завершение этого проекта теряется в той же туманной дали, что и светлое коммунистическое будущее всего человечества. Во-вторых, микроядро Mach использовалось в легендарной системе NEXTStep, сначала на её собственной аппаратной платформе, затем — на платформе x86. Эта система, опередив свое время, также приказала нам всем жить долго, однако оказала очень большое влияние на последующее развитие всей индустрии персональных компьютеров. И во многом послужила прообразом для позднейшей MacOSX, также основанной на Mach и системных сервисах BSD. Правда, назвать MacOSX микроядерной можно только с очень большой натяжкой… Наконец, принципы, заложенные в микроядре Mach, оказали влияние на форк FreeBSD — DragonFlyBSD, хотя последняя и не является микроядерной в прямом смысле слова. Впрочем, на эту тему я надеюсь еще поговорить позднее. Пора опять возвращаться к магистральной линии развития BSD. Каковая после выхода 4.2BSD, оказавшейся переломной в развитии этой системы, приобрела плавно поступательный характер. Новые релизы появляются относительно редко: выход 4.3BSD датируется июнем 1986 года, а её последовательных инкарнаций — 4.3BSD-Tahoe и 4.3BSD-Reno — июнем 1988 и началом 1990 года соответственно. Выход следующего релиза, 4.4BSD, который готовился как квинтэссенция всей предшествующей Берклиады, был запланирован на 1993 год. И действительно произошел почти в установленные сроки. Однако ему суждено было стать и последним в ряду всех систем линии 4.xBSD: потому что в интервале 1990-1993 года произошло несколько событий, которые в своей совокупности изменили весь ход истории BSD-систем. Да пожалуй, что и всей истории операционных систем вообще. А весь этот период можно охарактеризовать как

Межвременье

До сих пор канва нашего сюжета, несмотря на все её ветвления и пересечения, аппроксимировалась более или менее по линейной модели. Начиная с 1990 года, сюжет распадается на несколько линий, протягивающихся параллельно, как бы независимо друг от друга — но в тесном взаимовлиянии. Повествователь лишен средств передать это литературными средствами. Остаётся только вспомнить слова, которые часто встречаются в исландских сагах:

События описаны здесь так, как будто они случились друг за другом, хотя некоторые из них случились одновременно.

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

Некоторое время после этого ничего не происходило.

Саги — не только литературные произведения, но и исторические источники, хотя и весьма своеобразные. И большая часть того, что в них описывается, происходило на самом деле. Так что иногда по косвенным данным (например, по сопоставлению с собственно историческими источниками из сопредельных стран, содержащих датировки в общепринятом для нас ныне формате) удаётся определить абсолютную продолжительность того «некоторого времени», когда не происходило ничего, заслуживающего быть помещённым в контекст сюжета саги. И оказывается, что такие периоды могли длиться годами, а то и десятилетиями. Для авторов и читателей саг они выпадают из течения времени, находятся вне его. А может быть, для них время, пардон за тавтологию, в это время просто не существует… Но потом события начинают разворачиваться, как отпущенная пружина, — и время появляется вновь: в короткий по абсолютному (то есть внешнему) исчислению его отрезок событий впрессовывается столько, что их хватает на целую сагу. Время, измеренное по внутренней, событийной шкале, оказывается чрезвычайно длинным. Именно такой, очень длинный по внутренней хронологии отрезок времени и выпадает в истории FreeBSD на 1990-1993 годы по времени внешнему, астрономическому. Ибо в этот интервал впрессовалось множество событий, которые изменили лицо всей IT-индустрии (хотя увидели и, тем более, осознали мы это не сразу). В конечном счете, они привели и к возникновению FreeBSD в её современном виде. В отличие от исландцев XIII века, когда сочинялись саги (или записывались — на этот счёт существуют различные мнения), для нас отсутствие событий является нормой. То есть какие-то события происходят всё время — и ныне ежедневно их случается, наверное, больше, чем было за весь «Век саг» (период с 930 по 1030 годы, к которому относится действие большей части так называемых «саг об исландцах»). Но именно обилие событий приводит к тому, что мы их как бы не замечаем, если они происходят не с нами и нашими близкими. И потому «вневременье» исладнских саг для нас воспринимается как его естественное течение, а периоды концентрации событий, напротив, — как выпадающие из него. То есть как своего рода «межвременье». Так какие же события оказались впрессованными в тот период межвременья, который имеет отношение к нашей истории? Во-первых, широкое распространение первой общедоступной и, притом, достаточно мощной аппаратной платформы, за которой позднее закрепились имема i386 или x86. Во-вторых, превращение проекта BSD в по-настоящему свободный, обусловленное внутренней логикой его развития, но ускоренное рядом внешних факторов. В-третьих, связанный с этим превращением судебный процесс по поводу использованного в проекте BSD проприетарного кода UNIX и обусловленные им последствия — создание свободной системы FreeBSD в том виде, в каком она без принципиальных изменений просуществовала почти десять лет. Все эти события заслуживают отдельного рассмотрения, которому будут посвящены ближайшие три раздела. Нужно только учесть, что хотя, как в исландских сагах, описанные в них события и могут выглядеть как последовательные, но часто они происходили в одно и то же время и во взаимовлиянии. И кстати — для описываемых ниже событий в источниках встречаются расхождения в датах, правда, обычно не превышающие первых месяцев. Не имея документальных материалов типа записей актов гражданского состояния, я не мог их проверить. И потому в таких случаях выбирал те, которые, как мне кажется, лучше укладывались в общую канву происходящего.

Компьютинг для народа

Внимательный читатель наверняка заметил, что, говоря о развитии систем BSD, я ни словом не обмолвился об аппаратных платформах, на которых эти системы работали. Пора ликвидировать этот пробел. Тем более, что развитие эволюция платформ, на которых работали ранние UNIX и BSD, являются такой же предысторией «общенародного PC», как сам проект BSD выступает по отношению к героине нашего романа. Материалы, касающиеся истории вычислительной техники, принято вести с тех времён, «когда компьютеры были большими». Нашу же историю мы, напротив, начнём с того момента, когда компьютеры начали становиться маленькими, за что и получили имя миникомпьютеров. Впрочем, самым главным был не габарит новых машин (размером с 1-2 бытовых холодильника), а то, что они допускали интерактивное взаимодействие с пользователем — ввод задач посредством клавиатуры и вывод результатов на тот же телетайп (а потом и на экран монитора). На одном из таких миникомпьютеров, PDP-7 производства фирмы DEC, и был разработан первозданный UNIX. Который, впрочем, быстро утратил связь с родительской платформой: после того, как основная системы часть была переписана на языке Си (специально созданном для разработки этой ОС), возникли условия для относительно легкого ее портирования на любое «железо». И долгое время миникомпьютеры различных типов (в основном PDP-11 и пришедшие им на смену во второй половине 70-х машины серии VAX), как наиболее демократические платформы того времени, оставались основной средой для разработки и использования Unix. Попавший в Беркли UNIX также первоначально был инсталлирован и работал на 16-битных миникомпьютерах PDP-11, и программные наборы 1BSD и 2BSD (собственно системами, как говорилось ранее, их назвать было еще нельзя) разрабатывались на них и для них. Однако в 1977 году на свет вышли первые миникомпьютеры VAX, уже 32-битные. Разумеется, первознанный UNIX, ставший к тому времени вполне кросс-платформенным, обзавелся для них соответствующей версией, носившей имя UNIX/32V. Однако и берклианская ветвь не осталась в стороне от прогресса: 3BSD — первая целостная система из Беркли уже в 1979 году была портирована на VAX, причём с эффективным использованием всех его аппаратных возможностей, в частности, виртуальной памяти. Именно тогда и сложилась та самая парадоксальная ситуация, о которой я говорил выше: пользователи VAX-машин вынуждены были получать (то есть покупать) лицензию на использование 32V, однако устанавливали и применяли на практике 3BSD, а затем и 4BSD. Начиная с середины 80-х годов, на смену миникомпьютерам пришли серверы и рабочие станции на фантастически мощных по тем временам RISC-процессорах. Они уже имели вид, подобный обычным персоналкам — с системным блоком, монитором и клавиатурой, а затем и мышью, да и находились в индивидуальном использовании. Объединение RISC-машин в клиент-серверные сети дало новый толчок развитию Unix: именно под такие распределенные компьютерные системы создавались корпоративные варианты этой ОС, каждый из которых был способен работать только на собственной аппаратной платформе с несовместимыми друг с другом RISC-процессорами. И именно в Беркли предприняли первые шаги для ликвидации этой несовместимости: грядущую 4.4BSD планировалось портировать на машины с RISC-процессорами Sparc и MIPS. Однако магистраль приближения к общенародному компьютеру проходила не в направлении RISC-машин, и даже не через сферу компьютеров с процессорами серии Motorolla 68xxx, которые, в лице Macintosh и Amiga, приобрели черты настоящих персональных компьютеров. Настоящими персоналками стали IBM PC-совместимые компьютеры. До поры до времени, базируясь на внутренне 16-битных процессорах Intel 8088/8086 и 80286, они и близко не могли тягаться ни с ветеранами-VAX, ни с новообразованными RISC-машинами. Однако в 1985 году внутри них поселяются первые 32-разрядные процессоры от Intel — 80386. А появление в 1989 году процессора Intel 80486 вплотную приблизило их производительность к вычислительной мощности рабочих станций на RISC-процессорах. Одновременно росли объемы оперативной памяти, емкость жестких дисков, совершенствовалась видеосистема, появлялась первая мультимедийная периферия. А самое главное, PC становились все многочисленнее, стандартизованней и дешевле: триединство факторов, против которого все иные архитектуры, в качестве массовых платформ общего назначения, оказались бессильны. По всему миру шло триумфальное шествие Советской власти (то есть, пардон, Intel-совместимых PC). И главным фактором этого триумфа, конечно же, было удешевление железа. Интересно, что примерно в это время (около 1992 года) в PC/Magazine появляется статья (имя автора, к сожалению, вылетело у меня из памяти — но это был один из регулярных колумнистов журнала) под зловещим названием «Через 10 лет все платформы, кроме IBM PC, уйдут в небытие». Тогда это казалось страшной сказкой — однако прогноз начал сбываться опережающими темпами, завершившись окончательно в 2005 году, когда последняя альтернативная x86 платформа, PowerPC, с переходом Macintosh на процессоры Intel прекратила свое существование. Однако, а под чем же работало все это аппаратное богачество? Да в подавляющем большинстве — под MS DOS, 16-разрядной операционной системой, созданной еще для первых IBM PC и несущей в себе массу неустранимых ограничений: принципиальную однозадачность, отсутствие многопользовательского доступа, использование «по прямому назначению» лишь 640 Кбайт оперативной памяти, примитивную организацию файловой системы, не менее примитивные средства работы в текстовом режиме — единственно возможном силами «черного» DOS. Конечно, предпринимались многочисленные попытки заретушировать «родимые пятна» DOS. Однако они не меняли общей картины: «народная», то есть общедоступная, и при этом уже весьма мощная платформа не имела адекватной «народной» же операционки, способной использовать ее возможности. «Свято место» не могло быть пустым слишком долго. Тем более что на него было немало претендентов: и косметические DOS-надстройки — от QEMM386 с графическим интерфейсом DeskView до чисто графических Geoworks и Windows, адаптированные под PC версии UNIX (SCO Unix и XENIX) и OS/2, первая 32-разрядная ОС, специально написанная для IBM-совместимых персоналок. Позднее на место в этих рядах стал претендовать Linux. Собственно, и проект FreeBSD — как мы увидим в следующем разделе, зародился в недрах CSRG в попытке заполнить «святое место».

BSD: начало освобождения

В истории BSD и CSRG мы остановились на моменте выхода 4.3BSD и двух её последовательных инкарнаций — 4.3BSD-Tahoe и 4.3BSD-Reno. Как мы теперь знаем, базовой платформой для всех них был VAX. Однако 4.3BSD-Tahoe была примечательна тем, что в ней были обособлены машинно-зависимые и машинно-независимые части кода, что создавало предпосылки для грядущего портирования на иные архитектуры, планировавшиеся в версии 4.4. А 4.3BSD-Reno и была прототипом этой грядущей ветки, предназначенным для обкатки намечавшихся новшеств. Параллельно с основными выпусками 4.3BSD было подготовлено еще два как бы дополнительных — 4.3BSD Net1 (март 1989 года) и 4.3BSD Net2 (июнь 1991 года). Основываясь на 4.3BSD-Tahoe и 4.3BSD-Reno соответственно, они содержали исключительно компоненты, разработанные в Беркли и полностью освобождённые от какого-либо кода первозданного UNIX. И потому могли распространяться свободно как в бинарном виде, так и в виде исходных кодов. Название выпусков 4.3BSD Net# (или Networking Release#) связано с тем, что они замышлялись, в первую очередь, как подборки инструментария для работы с сетями — главным образом, по протоколу TCP/IP. Таково было пожелание пользователей, нуждавшихся в этих средствах, но по тем или иным причинам не испытывавших потребности в лицензировании собственно UNIX-кода. Однако, как мы увидим далее, значение этих выпусков скоро переросло поставленные первоначально скромные цели. И 4.3BSD Net1 стал первой системой из Беркли, которая распространялась под лицензией BSD (ещё в первом её варианте, включавшем требование упоминать Регентский совет Калифорнийского университета при дальнейшем распространении). А оно не замедлило воспоследовать: номинальная цена за ленту 4.3BSD Net1 была установлена в 1000 долларов. Однако, поскольку лицензия это не запрещала, далее копии ленты могли распространяться совершенно свободно, копироваться, устанавливаться на любое количество машин, передаваться и даже выкладываться на анонимные ftp-сервера. Что, разумеется, и происходило — однако, по свидетельству очевидцев этой истории, немало организаций не сочли для себя накладным заплатить указанную сумму. Причём не столько ради получения самого кода — его, как уже сказано, можно было получить и бесплатно, сколько для финансовой поддержки проекта. Подобная практика распространения продолжалась и позднее — после выхода 4.3BSD Net2. И опять с тем же результатом — несмотря на возможность откровенной и вполне законной халявы, нашлось несколько сотен контор и даже частных лиц, которые выложили 1000 баксов за обладание дистрибутивной лентой. Среди таковых оказался и Грег Лией — в последующем один из ключевых разработчиков FreeBSD. Факт столь массового спроса на 4.3BSD NetX тем более примечателен, что ни первый, ни второй её выпуск не содержал самодостаточной, загружаемой ОС, а включал только системное обрамление и комплекс утилит, в первую очередь, для работы с TCP/IP. И пользователи, кем бы они ни были, организациями или частными лицами, покупали её на свой страх и риск, так как превращением её в законченную операционку они должны были озаботиться сами. В ходе подготовки выпусков 4.3BSD Net1 и Net2 обнаружилось, что проприетарного (то есть патентованного) кода первозданного UNIX, права на который к тому времени перешли к USL (UNIX Systems Laboratory — дочерняя компания AT&T, созданная специально для продвижения этой системы) в составе берклианских Unix’ов осталось не так уж и много. И родилась идея создания полностью открытой, свободно распространяемой операционной системы BSD. Правда, даже в наиболее полном выпуске 4.3BSD Net2 недоставало нескольких ключевых фрагментов, которые превратили бы его в полноценную операционную систему, полностью свободную от наследия UNIX. Их и следовало воспроизвести в первую очередь. Как можно судить по косвенным данным (прямых указаний на это в источниках я не обнаружил), примерно в это же время прекращается или резко сокращается финансирование проекта BSD со стороны DARPA. Есть подозрение, что причиной тому послужил распад мировой системы социализма — все в жизни имеет свою оборотную сторону, даже крах коммунистической идеологии. И хотя CSRG просуществовала еще несколько лет (как структурное подразделение, она была расформирована в 1995 году), ряд её сотрудников начал подыскивать себе другие занятия. В числе их оказались Билл Джолитц (Bill Jolitz) и Линна Джолитц (Lynne Jolitz). Они поставили своей целью, во-первых, воспроизвести те самые недостающие звенья между 4.3BSD Net2 и полноценной ОС (в источниках речь идёт о шести файлах), а во-вторых, портировать новообразованную систему на ту самую демократическую платформу, о которой шла речь — на i386. Обе задачи были успешно решены в течении полугода после выпуска 4.3BSD Net2. И в результате в январе 1992 года свет увидела работоспособная система под названием 386BSD, первая из всех берклианских систем, полностью свободная от проприетарного кода, и первая же, адаптированная для машин с процессором i386, что и было вынесено в её титулатуру (хотя она была известна также под именем JOLIX). Распространялась система 386BSD исключительно по сети, как в откомпилированном виде, так и в исходниках, и сразу, несмотря на содержащиеся в ней ошибки, приобрела популярность среди широких народных масс. Следствием этого стало появление большого количества исправлений, дополнений и улучшений исходной системы, которые составили корректирующий комплект, получивший неофициальное название patchkit (набор заплаток), делающий 386BSD пригодной к практическому использованию. Некоторое время «заплаточный» проект развивался усилиями энтузиастов при координации Билла Джолитца. Однако довольно скоро выяснилось, что он не может уделять ему столько времени, сколько требовала обработка многочисленных поступающих патчей. И на некоторое время «заплаточный проект» оказался заброшенным. Правда, практически сразу, в начале 1993 года, на базе 386BSD была образована группа NetBSD, однако её разработки пошли по иной линии, нежели та, которая была намечена в системе-предшественнице, а именно: в направлении поддержки максимального числа платформ из существовавших в то время. В дальнейшем эта деятельность привела к созданию операционной системы NetBSD, знаменитой широтой охвата поддерживаемых процессоров: список их занимает не одну экранную страницу, и i386, как и x86_64, занимает в нём отнюдь не привилегированное место. Да и как система, хоть в малейшей мере ориентированная на десктопное использование, она своими разработчиками не позиционировалась никогда. И хотя NetBSD по сей день остаётся в тесном взаимодействии с другими BSD-системами, дальше речи о ней почти не будет.

Рождение FreeBSD

А сама по себе 386BSD вместе с её корректирующим набором, находилась в полном пренебрежении со стороны её разработчика. И тогда из среды энтузиастов системы, не примкнувших к группе NetBSD, выдвинулась группа координаторов «заплаточного» проекта, получившего условное название 386BSD 0.5 или 386BSD Interim. В их числе были Джордан Хаббард (Jordan Hubbard, ныне работающий в фирме Apple директором по технологиям UNIX), Нейт Вильямс (Nate Williams) и Род Граймс (Rod Grimes), оказавшиеся самыми последовательными приверженцами patchlit’ов. Они разработали промежуточный снапшот системы, очищенный от «заплаточных» излишеств, которых накопилось достаточно, и управлять которыми становилось всё труднее. Однако планы «тройки по борьбе с басмачами» (пардон, заплатками) были нарушены, когда Джолитц окончательно прекратил поддержку своего проекта, не оставив ясных указаний насчёт того, что уже сделано, и что надлежит сделать для его дальнейшего развития. Но это уже не смогло остановить развитие проекта. А примкнувший к нему Дэвид Гринмен (David Greenman) придумал для него и имя — FreeBSD, право на которое было приобретено в качестве собственности проекта. Вахта же Хаббарда выразилась в том, что он наладил контакт с компанией Walnut Creek CDROM, образовавшейся незадолго до этого (в 1991 году) для распространения всякого рода Free- и Shareware (а также и собственно Free Software) на компакт-дисках. Если вспомнить, что до превращения CD-приводов в стандартный атрибут настольных персоналок оставалось ещё несколько лет, можно оценить степень новаторства этой фирмы. Что нашло свое выражение и применительно к FreeBSD. Общепринятым способом распространения сколько-нибудь объёмного программного обеспечения (за исключением коммерческого «коробочного») в те годы были публичные ftp-сервера. Однако доступ к Интернету, по крайней мере, для частных лиц, был тогда ещё большей экзотикой, нежели CD-привод в индивидуальном десктопе. И Хаббард предложил совершенно новую по тем временам идею — распространение дистрибутива операционной системы на компакт-дисках. Как пишет Хаббард,

Компания Walnut Creek CDROM не только поддержала идею распространения FreeBSD на CD, но ещё и предоставила проекту компьютер для работы и быстрый доступ к Интернету.

Это если и не предопределило успех проекта, то немало ему способствовало. По его же свидетельству,

Без почти беспрецедентной веры Walnut Creek CDROM в этот проект, в то время полностью неизвестный, вряд ли FreeBSD зашла бы так далеко и так быстро…

В результате этого сотрудничества в декабре 1993 г. совместные усилия проекта FreeBSD и фирмы Walnut Creek обрели зримое воплощение в виде FreeBSD 1.0, распространявшейся не только с ftp-серверов, но и на компакт-дисках. Таким образом, FreeBSD стала пионером в этом, ныне столь привычном для нас, способе распространения дистрибутивов — наряду со Slackware Linux Патрика Фолькердинга, которую Walnut Creek начала распространять тем же образом примерно в то же время. FreeBSD 1.0 включала в себя компоненты из BSD4.3 Net 2, 386BSD и её «заплаточного» проекта, а также ряд утилит, разработанных в рамках проекта GNU. Он имела большой успех, который был закреплён и развит выпуском в мае 1994 года версии FreeBSD 1.1. Представление о том, что содержалось в первой версии FreeBSD, можно получить из просмотра ftp-архива старых версий этой операционной системы. Однако здесь в наше повествование врезается детективная линия, которая могла бы составить сюжет романа Гарднера про Перри Мэйсона, к рассмотрению которой мы и переходим.

Технологический детектив

Система 386BSD и наследовавшие её NetBSD и FreeBSD были не единственными попытками создания BSD, свободной от проприетарного кода. Еще один вариант её был реализован специально для этого созданной в 1991 году фирмой BSDI (Berkeley Software Design Incorporated) — но уже преследуя коммерческие цели (это еще одно косвенное свидетельство прекращения финанасирования DARPA разработки собственно BSD-проекта). Фирма BSDI занялась разработкой собственной BSD-системы, взяв за основу всё ту же ленту 4.3BSD Net2 и начав, как и Джолитцы, с написания шести недостающих файлов. Возникшая в результате система получила имя BSD/386 (в дальнейшем она была известна как BSDi и BSD/OS) и стала распространяться в бинарном виде вместе с исходниками по цене 995 долларов под первым вариантом лицензии BSD, — ведь, как мы помним из предыдущей главы, все лицензии BSD-стиля не запрещают любое коммерческое использование подпадающего под них программного обеспечения. Упоминание Калифорнийского университета и Регентского совета как создателей и владельцев распространяемой системы, присутствовавшее в первом варианте BSD-лицензии, делало фирму как бы сопричастной последнему — тем более, что она была образована в основном бывшими сотрудниками CSRG. Среди них был и Ричард Стивенс (Richard Stevens), главный разработчик BSD/OS, известный также как автор книг по UNIX и протоколу TCP/IP (он скончался в 1999 году в возрасте 48 лет). Не менее важным, чем причастность BSDI к Калифорнийскому университету, обстоятельством для дальнейших событий оказалось то, что её система позиционировалась, как UNIX, и заказ её можно было осуществить, обратившись по номеру телефона, содержащему слово UNIX (1-800-ITS-UNIX). А оно, как мы уже неоднократно отмечали, стало к тому времени торговой маркой, которой владела USL, дочерняя фирма AT&T. Которая как раз в это время получила, наконец, право коммерческого использования UNIX… Обе ветви Unix, System V и BSD Unix, сосуществовали мирно, подобно капиталистической и социалистической общественным системам. Однако лишь до поры, до времени — пока не появилась юридическая возможность коммерческого распространения Unix, само это слово (в форме UNIX) не стало торговой маркой, соответствие которой должно было сертифицироваться, — короче говоря, пока не запахло «баблом». И вот тут-то формальные правообладатели UNIX начали предъявление претензий к разработчикам BSD-систем. Первые претензии со стороны USL, однако, касались только компании BSDI и затрагивала лишь рекламную сторону дела: использование последней торговой марки UNIX без соответствующего лицензирования и «вводящего в заблуждение» телефонного номера. Обе они были не лишены резона и немедленно удовлетворены: номер был снят, а соответствующие службы компании BSDI переформулировали свои рекламные материалы, популярно объясняя потенциальным покупателям, что BSD/386 UNIX’ом не является. Однако вслед за этим в USL вспомнили, что в составе BSD-систем имелось некоторое количество кода, являющегося их «интеллектуальной собственностью», и вчинили уже настоящий судебный иск. Сущность его сводилась к тому, что BSDI, кроме проприетарного кода UNIX, распространяет фирменные секреты USL, чем наносит оной непоправимый финансовый урон, и к требованию прекратить продажи BSD/386. В ответ BSDI отвергла претензии по поводу чистоты кода пресловутых шести файлов, а по поводу всего остального (то есть того, что составляло содержимое выпуска 4.3BSD Net2) перевела стрелки на Калифорнийский университет, указав, что распространяла их код в полном соответствии с BSD-лицензией. Поскольку добиться успешного решения суда в «деле о шести файлах» показалось USL проблематичным, она переформулировала иск, включив в число ответчиков, кроме BSDI, также и Калифорнийский университет, а содержание его распространив на всю BSD-систему в виде 4.3BSD Net2, требуя теперь запрета на распространение и этой последней, Насколько я понимаю американскую судебную систему, в таких случаях сначала проводится предварительное слушание, определяющее, может ли иск составить предмет рассмотрения в суде, которое и происходит при положительном ответе на этот вопрос. Подготовка к предварительному слушанию заняла несколько недель, в течении которых обе стороны развили бурную деятельность. Как пишет Керк МакКузик,

Штат CSRG перешёл от написания кода к написанию нескольких сотен страниц материалов, которые были использованы в юридических сводках.

Наконец, в декабре 1992 года состоялось предварительное слушание, которое проводил судья Федерального суда в Нью-Джерси (штат, в котором располагалась штаб-квартира USL), Диккинсон Р. Девебуа — по причинам, которые станут ясны через несколько строк, имя его должно быть упомянуто в ряду создателей и разработчиков BSD и FreeBSD. Он не принял немедленного решения по иску (что было, как говорят знающие люди, обычной практикой), а решил подробнее рассмотреть материалы. Это заняло у него шесть недель, по прошествии которых было вынесено решение: большинство обвинений USL отклонялось, за исключением двух пунктов, касавшихся авторских прав и возможности утраты фирменных секретов. И, кроме того, было предложено рассматривать дело в суде штата, а не в федеральном суде. Это судьбоносное решение было вынесено в пятницу вечером. А уже в понедельник утром Калифорнийский университет вчинил компании USL встречный иск, касавшийся нарушения USL лицензии BSD, под которую подпадал заимствованный ими из BSD-систем код. То есть при распространении UNIX в сопроводительной документации не упоминался Калифорнийский университет как разработчик и собственник заимствованного кода (а как уже говорилось, бесспорных заимствований из BSD в SVR4 было немало). Вот тут и сыграла свою роль та самая «оговорка о рекламе» в первоначальной версии лицензии BSD, за которую она подвергалась нападкам со стороны пуристов Free Software, начиная с Ричарда Столлмена. Встречный иск в суде Калифорнии предопределил бы место для всех судебных разборок, если таковые последовали бы на уровне штата: по американским законам все дела по соответствующему уровню должны проходить в одном штате, дабы сторона, располагающая большими финансовыми ресурсами, не могла пооткрывать дела против менее состоятельной стороны во всех штатах сразу, ведь проезд даже и в Америке кое-чего стоит… Однако скоро накал страстей спал. В 1993 года USL вместе со всеми её торговыми марками и правами, реальными и мнимыми, была куплена у AT&T фирмой Novell. Рэй Нурда (Ray Noorda), бывший тогда её CEO, выразился в таком смысле, что предпочитает конкурировать на рынке, а не сквалыжничать в суде, И постарался оказать максимально возможное воздействие на руководство USL, дабы решить вопрос полюбовно. К слову замечу, что Рэй Нурда, обеспечив славу Novell, как ведущей компании в области сетевых технологий («ну кто же не помнит старика Нетваря»?), через пару лет покинул её и основал фирму Caldera, на протяжении ряда лет выпускавшую весьма прогрессивный дистрибутив Linux — Caldera OpenLinux. Он отошёл от дел на рубеже тысячелетий и скончался в 2006 году, в возрасте 82 лет. Судя по всему, ему не суждено было увидеть того юридического шоу, которое устроила по поводу собственности на код UNIX SCO — компания, в которую преобразовалась основанная им Caldera. Иска, почти зеркально повторившего дело USL vs Berkeley, но ещё менее обоснованного и завершившегося с существенно более печальными последствиями для истца. Воистину, история мстит забывшим её тем, что имеет обыкновение повторяться. Но это было еще далеко в будущем. А пока, несмотря на всю запутанность дела, в конце концов, соглашение было достигнуто. По его условиям из 4.3BSD Net2 были удалены фрагменты кода, признанные частной собственностью USL (по некоторым данным — три файла из примерно восемнадцати тысяч), в некоторых файлах были сделаны изменения, в иных же — добавлено уведомление об авторских правах USL. И в таком виде система BSD получила право на свободное распространение. Право это было реализовано в виде двух вариантов вышедшей в июне 1994 года системы 4.4BSD — последнего создания CSRG перед её расформированием в 1995 году. Первый носил имя 4.4BSD-Encumbered, что отражало его «загроможденность» унаследованным UNIX-кодом, и для его использования требовалась лицензия USL на исходный код. Второй же вариант получил название 4.4BSD-Lite и распространялся свободно, по лицензии BSD. Всем командам, занимавшимся созданием и распространением BSD-систем, и коммерческих, как BSDI, и свободных, подобных NetBSD и FreeBSD, было предписано основывать свои дальнейшие разработки именно на 4.4BSD-Lite.

FreeBSD: цена свободы

Казалось бы, детективная история разрешилась вполне благополучно, не так ли? Однако на этот счёт существуют неоднозначные мнения. Согласно Керку МакКузику (а он был тогда связан именно с разработкой 4.4BSD в рамках CSRG), воссоединение всех берклианских побегов в лоне едином вызвало лишь кратковременную задержку в их разработке, которая в итоге оказалась

… благом, поскольку она заставила различные группы повторно синхронизировать наработки, сделанные за три года с момента первого выпуска CSRG Networking Release2.

Джордан Хаббард, который тогда занимался разработкой непосредственно FreeBSD, смотрит на ситуацию тех дней не столь оптимистично, полагая, что система 4.4BSD-Lite

… была в прямом смысле light, в частности, потому, что группа CSRG удалила большие куски кода, необходимого для создания реально загружающейся системы (по причине различных лицензионных требований), и фактически, порт 4.4BSD для платформы Intel был очень неполным.

Как можно заключить из слов Хаббарда, в тот момент катастрофа проекта казалась неизбежной — легким движением руки цельная и работоспособная система превратилась в симпатичнейшего уродца. Но, как сказал один из героев Профессора, «приключения никогда не кончаются». И участники проекта FreeBSD приступили

… к сложнейшей задаче буквально пересоздания системы с нуля на основе абсолютно новой и довольно неполной системы 4.4BSD-Lite.

Реинкарнация недостающих фрагментов заняла около года. И в итоге 22 ноября 1994 года было объявлено о выходе первой версии возрождённой FreeBSD — 2.0, которая, несмотря «на множество недотёсаных углов», снискала значительный успех. А главное — к лицензионной её чистоте не смог бы придраться ни один сутяга. Именно она положила начало традиции, не прерывающейся и поныне. Тем не менее, момент, благоприятный для «народной системы для народной платформы», был упущен: ниша эта оказалась плотно занята, во-первых, главной системой для простого народа в лице Windows 3.1/3.11, а чуть позже и Windows 95. А на роль системы альтернативной, для народа не совсем простого, выдвинулся Linux в лице первых своих дистрибутивов: Slackware, Debian, Red Hat, чуть позже Suse. Существует мнение, что если бы BSD (еще не разделившаяся на Net- и FreeBSD) не погрязла бы в тяжбе с AT&T и получила бы свободу в конце 80-х — начале 90-х годов, то в разработке Linux не было бы никакой необходимости. Несмотря на свою пылкую любовь к BSD-системам во всех их проявлениях, не могу с этим согласиться: если бы Linux’а не было — его следовало бы изобрести. Потому что без него (и внедренного Линусом в IT-индустрию метода разработки софта, известного под названием метода Тома Сойера) жить было бы скучно… Тем не менее, хотя FreeBSD и задумывалась как система для пользователей, пусть и весьма специфических — но с сегодняшней колокольни превращения компьютера в бытовой прибор все пользователи того времени выглядят специфическими, — стать таковой в те дни ей было не суждено. Однако она стала достаточно популярной среди Интернет-провайдеров, что и предопределило её репутацию как серверной системы на многие годы вперед. Стереотип этот начинает ломаться лишь в последние годы, что мы и увидим при рассмотрении дальнейшей истории этой системы. И хотя главная интрига нашего исторического сюжета позади, в будущем FreeBSD будет еще один драматический поворот…

Десятилетие спокойствия

Начиная с выхода первой «настоящей» версии FreeBSD (то есть 2.0), сложилась модель разработки этой операционной системы, реализуемая и по сей день. Впрочем, она была в значительной мере унаследована от стиля работы CSRG и свойственна всем системам берклианской линии. С первого дня существования проекта все его компоненты (исходные тексты ядра, системного и пользовательского окружения, документация, багрепорты, архивы рассылок) существуют в открытом виде, и доступ к ним может получить любой желающий через web-сайт или ftp-сервер проекта и их зеркала по всему миру. Все участники разработки FreeBSD объединяются в три кольца. Первое, как бы внешнее, кольцо включает в себя многочисленных добровольцев со всего мира, работающих над отдельными компонентами системы — начиная от ядра и до сопровождения портов, а также занимающихся составлением и переводом документации. Разработчики (как, впрочем, и всё остальное прогрессивное человечество) имеют свободный доступ к дереву исходных текстов системы, но вносить в него изменения непосредственно не могут: свои наработки они должны передавать «по команде» для утверждения. Утверждением занимаются члены второго кольца — так называемые коммитеры (commiters). Кроме контроля над деятельностью разработчиков, они и сами занимаются разработкой какой-либо из подсистем FreeBSD и могут вносить изменения (как свои, так и курируемых ими разработчиков) в соответствующие ветви дерева исходных текстов. Однако полномочий на изменение дерева исходников в целом не имеют и коммитеры — это привилегия ядра команды (core team), в функции которых, кроме разработки собственных узлов системы, входит также отслеживание изменений, вносимых коммитерами, и разрешение противоречий между ними, буде таковые возникают. Иными словами, на них возложен учёт модификаций системы и контроль над её целостностью. Раз сложившись, модель разработки функционировала и функционирует по сей день. И сохраняющееся единство системы на протяжении почти полутора десятков лет доказало её действенность. Конечно, кое-какие коллизии возникали — но их мы рассмотрим, когда подойдёт время. А пока вернемся немного назад, к началу истории собственно FreeBSD, и посмотрим, что же послужило причиной её почти мгновенной популярности. Первой составляющей успеха новой операционки стала утилита sysinstall — программа установки и сквозного конфигурирования системы, почти не изменившаяся по сей день за исключением мелких, но приятных усовершенствований. Ныне она кажется архаичной и часто подвергается критике со стороны пользователей Linux, привыкших в последние годы к красивым графическим инсталляторам и конфигураторам. Однако в те годы ничего подобного не было ни в одном дистрибутиве. Более того, под влиянием sysinstall возникла не только программа установки практически одновозрастной Slackware — влияние её сказывалось еще и в начале нынешнего тысячелетия, непосредственно — в инсталляторах таких дистрибутивов, как CRUX и Archlinux, косвенно — в установочной программе Zenwalk’а. Что же до сквозных конфигураторов, то первого из них, Drackconf из Mandrake, Linux’у пришлось ждать около пяти лет. Ничуть не менее важной составляющей FreeBSD была система портов и пакетов. Ибо это была первая в истории FOSS цельная система сборки и установки программ с автоматическим разрешением их зависимостей. Вспомним, что одновозрастная Slackware таковых не имела вообще (и, штатно, не имеет и по сей день), а rpm и dpkg на большее, чем сообщение о нарушении зависимостей, способны не были. Как, впрочем, не способны и по сей день — до появления изощрённых механизмов apt и его последователей было ещё очень и очень далеко. Таким образом, основные особенности, определившие потенциал FreeBSD, в том числе, и как пользовательской платформы, были заложены уже в её первой «настоящей» версии. Почему же она не реализовалась в этом качестве, уступив пальму первенства Linux’у? Тайна сия велика есть, хотя некоторые предположения на этот счёт сделать можно. Вспомним, кем были первые пользователи первых FOSS-систем. Это были, с одной стороны, разработчики их же самих, с другой — сетевые администраторы и Интернет-провайдеры. А для первых более свободная и динамичная модель разработки Linux’а, видимо, казалась более привлекательной, нежели более иерархизованная и «камерная» модель FreeBSD. С другой стороны, обеспечиваемые последней стабильность и предсказуемость оказались более востребованными именно администраторами, для которых надёжность была важнее фронтирности. А потом уже работал просто стереотип мышления: за FreeBSD закрепилась репутация серверной платформы, тогда как от Linux’а ждали «поворота лицом к конечному пользователю». И, надо сказать, стереотип этот работает и по сей день. Однако я опять отклонился от генеральной линии. Успех первой версии FreeBSD был закреплён выходом версии следующей, получившей номер 2.05 и ликвидировавшей те самые «недотёсанные углы», о которых упоминал Хаббард. Дальше время опять замедляет свой ход. Впереди были долгие годы плавной эволюции. Примерно два-три раза в год выпускается новая версия системы (2.1.x, затем — 2.2.x), она обрастает приложениями и утилитами (значительная часть которых происходит из проекта GNU и Фонда свободного программного обеспечения), совершенствуется ядро, улучшается (как это ни странно для, казалось бы, чисто американской по происхождению системы) интернациональная поддержка. В ноябре 1996 г. происходит событие, определившее структуру развития FreeBSD на долгие годы (с некоторыми оговорками — до сего дня): ветка 2.x.x была выведена из активной разработки, получив имя STABLE. Отныне, вплоть до последнего релиза (2.2.8 в ноябре 1998 года), в ней лишь исправляются ошибки и вносятся мелкие безопасные изменения. А все долговременные и принципиально новые разработки концентрируются в версии 3.0-CURRENT. Каковая претворяется в STABLE в октябре 1998 г. Начиная с ветки 3 (версия 3.4, судя по архивам), начинаются первые попытки портирования FreeBSD на архитектуры, отличные от i386. Первым претендентом на портирование стали машины с процессорами DEC Alpha, доживавшие тогда свои последние дни. Тем не менее, поддержка этой платформы осуществлялась долгое время, пока не была прекращена с выходом 7-й ветки. С этого времени и вплоть до ответвления единовременно развивается две ветки FreeBSD — STABLE, предназначенная для широкого применения, и CURRENT, ориентированная главным образом на разработчиков и энтузиастов. Так, в январе 1999 г. обособляется ветка 4.0-CURRENT, обретшая статус стабильной в марте 2000 г. Ветке 4.X суждено было стать самой «долгоиграющей» во всём дереве развития FreeBSD. Правда, на протяжении только 2000 года вышло ещё три её релиза — 4.1, 4.1.1 и 4.2, выступавшие в роли своего рода обкаточных для всех новшеств этой ветки. Которая в дальнейшем стабилизировалась, и последующие её версии, вплоть до последней, 4.11, вышедшей в январе 2005 года, содержали в основном исправления и косметические изменения. И кстати, версия 4.11 поддерживалась более двух лет после её выхода, а практически, насколько я знаю, используется чуть ли не по сей день.

Год великого перелома и его последствия

Однако закулисно на протяжении трех лет шла незаметная, но большая работа по коренному изменению FreeBSD, завершившаяся появлением в январе 2003 года первой версии новой, 5-й ветки. В нарушение описанной выше закономерности, она очень долго (вплоть до версии 5.3), не получала статуса STABLE, а позиционировалась как «ново-технологический релиз». В сущности, стабильной она так и не стала, выступая скорее как прототип грядущей ветки 6. Тем не менее, выход в свет 5-й ветки FreeBSD был, пожалуй, самым революционным событием со времен ее появления как самостоятельной операционной системы. Почему год её выхода я и назвал годом великого перелома — конечно, не столь драматичного, как события 1991-1993 годов, но тоже сопровождавшиеся не только приобретениями, но и потерями. Которые, впрочем, в будущем могут также обернуться приобретениями — но об этом мы поговорим чуть позже. Именно в ней, начиная с самой первой пререлизной версии, предназначенной для разработчиков (июнь 2002 года), был заложен тот потенциал, который обусловил её применимость в качестве современной настольной операционки для конечного пользователя. Это и последовательно модульный подход, позволяющий обходиться без пересборки ядра для поддержки важных для пользователя особенностей, и файловая система устройств, облегчающая работу с устройствами «горячего подключения» (такими, как USB-накопители, сканеры, цифровые камеры), и эффективная работа с ATA RAID (а в дальнейшем и с винчестерами Serial ATA), и многое другое. В 5-й ветке был продолжен и курс на кросс-платформенность: с первого же релиза (5.0) в ней появляется поддержка AMD64, Sparc64 и IA64 (Merced, он же Itanium), несколько позднее, в версии 5.5 (май 2006 года) — PowerPC, то есть практически всех 64-битных платформ. Если вспомнить, что объект первого портирования FreeBSD, процессор Alpha, также был 64-битным, то это можно рассматривать как подготовку к эпохе 64-разрядных вычислений. Иначе довольно трудно было бы объяснить усилия, затрачиваемые на поддержку архитектур или мёртвых, как Alpha, или отмирающих, как PowerPC (обратим внимание, что выход порта для него произошёл через год после перехода Apple на «камни» от Intel), или, наконец, поставляемых обычно с собственными операционными системами, как Sparc64 и Itanium, и вряд ли предоставляющих широкое поле для инсталляций FreeBSD. Шестая ветка FreeBSD, появившаяся в ноябре 2005 года, не была столь богата инновациями, а скорее являла собой логическое продолжение тенденций, заложенных в ветке 5.X. Хотя многие из её новых особенностей оказались очень важны для конечного пользователя. Среди них — поддержка высоких разрешений в так называемой графической консоли, обратно портированная из DragonFlyBSD (о которой речь пойдет чуть ниже), возможность работы с популярными файловыми системами Linux — ReiserFS и XFS (правда, в режиме «только для чтения»). Наконец, версии 6-й ветки демонстрировали значительное повышение быстродействия, особенно — операций с файлами. До этого за новшества, привнесённые в 5-ю ветку, приходилось расплачиваться снижением скорости работы по сравнению с 4-й, в ряде случаев — весьма существенным. Интересно, что FreeBSD 6-й ветки в варианте для архитектуры AMD64 демонстрировала некоторый прирост быстродействия относительно своей 32-битной сестры — не очень значительный, но всё-таки видимый невооружённым тестами взглядом. В отличие от Linux, дистрибутивы которого в своих тогдашних (да, впрочем, и сегодняшних) 64-битных инкарнациях были как минимум не быстрей 32-битных, а то и медленней на некоторых операциях, в первую очередь файловых. Вполне возможно, что в этом и сказалась «тренировка» на неактуальных, казалось бы, чисто 64-битных платформах… Тем не менее, и 6-я ветка не производила впечатления долгожителя, хотя последняя её версия (6.3, появившаяся в январе этого года) и поныне пользуется статусом промышленного, хотя и «староватого» (legacy) релиза, и поддержка её предполагается и далее. Новым рубежом в развитии FreeBSD стала ветка 7 (январь 2008 года), в которой, начиная с первых пре-релизных версий (с осени 2007 года), поддерживается файловая система ZFS — одно из самых перспективных явлений в этой сфере, разработанное фирмой Sun для своей операционки Solaris в 2004 году. И хотя поддержка ZFS во FreeBSD и сейчас, в канун выхода версии 7.1, имеет статус экспериментальной, и эта файловая система рекомендуется к промышленному применению исключительно на свой страх и риск, ясно, что её стабилизация в рамках нашей ОС — не более, чем вопрос времени.

Оглядываясь вокруг

А теперь мы опять вынуждены отступить от хронологической последовательности и хотя бы беглым взглядом окинуть события, происходившие одновременно с великим переломом в развитии FreeBSD и дальнейшим развитием этой ОС. В отличие от Linux, FreeBSD изначально не сегментировалась на множество дистрибутивов, хотя время от времени она давала боковые побеги, например, PicoBSD — вариант 3-й ветки на одной дискете. Далее, существовало (и частично существует по сей день) несколько проектов создания LiveCD на основе FreeBSD: FreeBSD LiveCD на базе одной из версий 4-й ветки, FreeSBIE — на основе 5-й и еще пара-тройка. Все они по разным причинам прекратили свое развитие. Активно поддерживается ныне лишь Frenzy — специализированный LiveCD для системных администраторов, разрабатываемый на Украине Сергеем Можайским aka techni[X]. Так что проекты пользовательских LiveCD отражают всё ту же общую тенденцию — доминирование в развитии FreeBSD серверного направления. Хотя и здесь она теснима мало-помалу, с одной стороны, соплеменным Linux’ом, с другой — классово чуждым Windows, но сохраняет твёрдые позиции. А вот о настольных применениях этого до сих пор сказать нельзя. Если Linux понемногу пробивает дорогу на пользовательские десктопы, то FreeBSD, похоже, к этому и не стремилась — по крайней мере, до недавнего времени. Статистика заходов на сайты, тематически связанные с Unix и Open Sources, показывает, что доля FreeBSD среди клиентских машин составляет ничтожно малую долю. Однако несколько более удачных попыток изменить сложившееся положение было предпринято. Первой можно считать выход весной 2005 года PC-BSD — как легко догадаться из названия, варианта BSD для персонального использования. Представляя собой дальнейшее развитие упомянутой выше FreeSBIE, она базируется на текущих версиях FreeBSD (в частности, последняя её версия, 7.0 — на соответствующей ветке прародительской системы). Она снабжена красивым (и удобным) графическим инсталлятором с внутренними средствами автоматического конфигурирования применительно к наличествующему оборудованию, что позволяет в считанные минуты развернуть полноценную рабочую станцию с KDE и его приложениями, в том числе графическими и мультимедийными. Особенностью PC-BSD является собственный формат пакетов, резко рвущий с традициями UNIX в отношении зависимостей — необходимые библиотечные функции встраиваются непосредственно в бинарный пакет, а не вызываются из внешних слинкованных библиотек. Однако она наследует и традиционные для FreeBSD методы обновления системы в целом, а также систему портов для установки приложений. Проект PC-BSD не остался одиноким на ниве пользовательских десктопов, производных от FreeBSD: считанные месяцы спустя (лето 2005 г.) аналогичный по сути, но несколько иначе реализованный проект был объявлен под именем DesktopBSD. Следует подчеркнуть, что ни PC-BSD, ни DesktopBSD не являются отдельными дистрибутивами в том понимании, в каком этот термин применяется к вариациям на тему Linux’а. И тем более это — не самостоятельные системы, поскольку и та, и другая после установки превращаются в самую обычную (и полноценную) FreeBSD. Точнее, это — именно дистрибутивы в буквальном смысле слова, то есть способы распространения операционной системы FreeBSD, адаптированные для конечного «десктопного» пользователя. Главное, чем и PC-BSD, и DesktopBSD отличаются от своей материнской системы — это их программы инсталляции. Если для FreeBSD в этом качестве на протяжении многих лет применяется текстовая (псевдографическая) программа sysinstall, то в основу установщиков ее «юзерофильных» разновидностей лег BSD Installer. Это — совершенно самостоятельный проект, цель которого, как нетрудно понять из названия, — разработка универсального установщика для любых BSD-систем. Отличительная его особенность — в том, что собственно низкоуровневая его часть может быть надстроена различными текстовыми или графическими интерфейсами. Последние и использованы в PC-BSD и DesktopBSD. Текстовый же вариант инсталлятора использован в DragonFlyBSD (см. ниже). Существовала также попытка Эндрю Тернера (Andrew Turner) прикрутить его (в рамках программы Google’s Summer of Code 2005) и к собственно FreeBSD — взамен sysinstall. Впрочем, развития она не получила — последнюю версию сборки FreeBSD с этим инсталлятором, датируемую маем 2006 года, можно скачать отсюда. Наконец, в рамках все той же программы Google’s Summer of Code (теперь уже — 2007) Иваном Ворасом (Ivan Voras) была предпринята еще одна попытка одеть инсталлятор FreeBSD во фрак — посредством программы finstall. В отличие от всех предыдущих вариантов, она основывается не на движке BSD Installer, а на собственном back-end’е, и имеет построенный на библиотеке Gtk front-end, запускаемый с LiveCD из среды XFce. Сама же устанавливаемая им система — обычная FreeBSD текущей (current) версии для архитектуры i386. Правда, судя по дате последнего обновления на указанном выше сайте, проект ныне заброшен полностью, а ссылка на него продолжение не несёт никакого контента — не то что нового, но даже и старого. Интересный побег на дереве FreeBSD — гибридные системы FreeBSD/Linux, то есть попытки использования её ядра в обрамлении иной инфраструктуры, заимствованной из различных дистрибутивов Linux. Таких проектов мне известно два: Debian GNU/FreeBSD и Gentoo/FreeBSD. Проект Debian GNU/FreeBSD первоначально существовал в двух вариантах:libc5-based Debian GNU/FreeBSD и gnu-libc-based Debian GNU/FreeBSD. Оба они использовали ядро FreeBSD и пользовательское окружение проекта Debian, в частности, его репозитории и систему управления пакетами по механизму apt. Первый проект, как нетрудно догадаться, в качестве главной системной библиотеки для портируемых приложений использовал BSD Libc — родную для FreeBSD и других BSD-систем. Насколько можно судить, проект столкнулся с трудно разрешимыми проблемами и ныне прекратил своё существование. Во всяком случае, последнее обновление на сайте проекта датируется апрелем 2002 года. Второй же из упомянутых проектов, известный под названием Debian GNU/kFreeBSD, участь сия (пока?) миновала. В отличие от предыдущего, он в качестве основы для пользовательских приложений использует стандартную для Linux библиотеку glibc (GNU C library). На сервере проекта доступны образы установочного диска, последний датируется февралём 2008 года, и репозиторий с многочисленными deb-пакетами. Хотя с портированием инфраструктуры Debian и существуют проблемы, сама система, по утверждению её разработчиков, является вполне работоспособной (проверить это на практике мне пока не представилось случая). Проект портирования на ядро FreeBSD инраструктуры Gentoo примечателен тем, что сам по себе дистрибутив Gentoo Linux был создан под сильным влиянием FreeBSD: в частности, портежи Gentoo представляли собой первоначально адаптацию портов FreeBSD к ядру и окружению Linux’а. И первая попытка обратного портирования системы портежей на FreeBSD была предпринята Грантом Гудьером (Grant Goodyear) через год после обретения Gentoo стабильного статуса, в сентябре 2003 года (страничку того проекта можно видеть и поныне). В последующем на базе этого развился самостоятельный проект Gentoo/FreeBSD, который то умирал, то гальванизировался вновь. В январе 2007 года он был заморожен, а все его исходники удалены с зеркал проекта Gentoo. Причиной была несовместимость лицензий на отдельные компоненты BSD-системы с лицензией GPL, под которой распространяется Gentoo. И хотя принципиальная сторона этой проблемы была благополучно разрешена, ясных указаний о дальнейшей судьбе проекта я не обнаружил. Тем не менее, FreeBSD легла в основу и совершенно самостоятельной операционной системы, корни которой уходят в тот самый год великого перелома. Где-то в середине июня 2003 г. Мэтт Диллон (Matt Dillon), известный, помимо всего прочего, и существенным вкладом в разработку системы виртуальной памяти FreeBSD, вместе с группой товарищей объявил о начале работы над новой ОС BSD-семейства — DragonFlyBSD. Она была ответвлением от FreeBSD 4-й ветки, имевшей статус стабильной, хотя в то время уже вовсю развивалась ветка 5-я, вбирающая в себя все инновации BSD-мира. Собственно, несогласиме Мэтта с тем, в каком направлении движется развитие FreeBSD, и было причиной создания самостоятельного форка. Может возникнуть (и многократно возникает) вопрос: для чего нужна еще одна BSD-система? Разве не вдоволь насмотрелись мы на изобилие Linux-дистрибутивов, чтобы и FreeBSD желать той же участи? Вопрос этот, конечно, носит сугубо риторический характер. Ведь если новые операционки создаются — значит, это кому-нибудь нужно. И каждая такая система (если она, конечно, действительно нова и оригинальна) привносит в наш мир что-то свое, увеличивая, тем самым, сложность его и разнообразие. Тем более, что уж в чём-чём, а в оригинальности DragonFlyBSD отказать невозможно. Ибо при практически полном поначалу внешнем сходстве с прототипом (FreeBSD 4.X) «внутре» у нее изначально всё было иным: управление памятью и процессами, представление о драйверах устройств и виртуальной файловой системе и многое другое. Однако DragonFlyBSD — это тема совсем иной истории, о которой говорится в другом месте. А нам пора подвести

Итоги…

Всем печально известна судьба якобинцев: Им теперь уж ни выпить, ни сытно поесть. Коль хотите вы в жизни чего-то добиться, То уроки истории надо учесть Студенты-историки УГУполный текст

… рассмотрения длинной и насыщенной истории операционной системы FreeBSD . Посмотрим, какие уроки мы можем извлечь из нее, дабы не уподобиться якобинцам из старой песенки студентов-историков Удмуртского государственного университета, фрагмент из которой приведён эпиграфом этого раздела. Первый вывод — технологического плана. Хотя FreeBSD по анкетным, так сказать, данным и моложе Linux’а, за спиной у нее — долгая история совместного с UNIX развития. То есть она — система с прошлым. Что имеет и свои минусы, и свои плюсы. Не могу отказать себе в удовольствии процитировать Мэтта Диллона (Matthew Dillon): «Хотя некоторые считают BSD ‘старой’ операционной системой, те из нас, кто работает над ней, видят ее скорее системой со ‘зрелым’ кодом». Итак, первый вывод из истории FreeBSD — что это система сложившаяся, устоявшаяся, где-то даже консервативная. Но при этом — постоянно развивающаяся и совершенствующаяся. Кроме того, FreeBSD (и ее предтечи) возникла и развивалась в университетской среде, не просто высококлассными программистами, но людьми с неслабой теоретической подготовкой. Следствием чего явилась исходная продуманность ее архитектуры. И опять помяну Диллона: «В мире программирования алгоритмы становятся более важными, чем код, и именно из-за академических корней в BSD изначально большое внимание уделялось проработке алгоритмов». И это — второй вывод из рассмотренной истории, который также можно отнести к технологии. Третий же вывод, также следующий из академического происхождения FreeBSD, носит, условно говоря, гносеологический характер. Ученые (по крайней мере, те, кто заслуживает неругательного значения этого слова) — люди, основным стимулом деятельности которых является удовлетворение собственного любопытства. И FreeBSD, как творение академических исследователей, — это система, идеально для такого удовлетворения подходящая. Как сама по себе, так и как инструмент исследования в иных научных областях, в том числе — и далеких от Computer Science… Последний же вывод из истории имеет отношение к тому, что называют затертым словосочетанием «общечеловеческие ценности»: мужество разработчиков, создавших FreeBSD, несмотря на все препоны юридического и организационного характера, заслуживает более чем уважения.

FreeBSD на Руси

Осталось сказать несколько слов об истории FreeBSD (и её предшественниц) на Руси. Несколько слов — не потому что история эта коротка. Отнюдь — существуют косвенные данные, что первые BSD-системы появились ещё в Советском Союзе, и еще до официального выхода самой FreeBSD. Достоверных сведений о тех временах далеких, теперь почти былинных, очень немного. Однако то, что примерно к 1995-1996 году сервера большинства крупных Интернет-провайдеров России работали под управлением этой операционной системы, можно считать более-менее установленным. Тогда же, вероятно, появились и первые зеркала проекта. Да и дистрибутивы FreeBSD на дисках в исполнении Walnut Creek стали доступны, по крайней мере, в Москве, также не позднее 1998-1997 года. Характерно, что один из самых старых и по сей день самых обширных сайтов по Unix-тематике — Opennet.ru изначально не замыкался на Linux, а уделял изрядное внимание BSD-системам вообще и FreeBSD, в частности. Ныне BSD-минимпортал этого сайта — один из самых полных источников информации по рассматриваемой тематике. Из остальных Интернет-ресурсов того времени хотелось бы отметить фундаментальные работы на сайте Ивана Паскаля, заметки по FreeBSD Андрея Лаврентьева, материалы Игоря Сысоева, не потерявшие своего значения и по сей день. Ну и немалую роль сыграло первое систематическое руководство по FreeBSD на русском языке, написанное Андреем Федоровым. Правда, о настольном использовании FreeBSD в те годы никто и не помышлял. Не была она избалованна и вниманием прессы. Хотя первые публикации о BSD-системах в компьютерных журналах не намного отстали во времени от статей про Linux — вспоминаем статью Вадима Колонцова «ОС BSD жила, живет и будет жить» (Открытые системы, №3, 1997, до сих пор доступна и версия on-line). Однако долгое время они выглядели редкой вкрапленностью даже на фоне не частых тогда материалов о Linux. Хотя были среди этих вкраплений и очень яркие сочинения. Например, статья того же Вадима Колонцова под характерным заглавием — «Я живу во FreeBSD». Сайт, на котором она была размещена, давно прекратил своё существование, однако при желании можно обнаружить её в переразмещенном виде. В частности, на этих страницах. Ряд статей о BSD-системах вообще и FreeBSD, в частности, появлялся в короткий период существования Unix-раздела в журнале Byte/Russia (1999-2000 годы); к сожалению, ни одна из них ныне в Сети недоступна… Переломным с точки зрения популяризации FreeBSD в широких массах стал 2002 год. Во-первых, тогда был начат (и к настоящему времени практически завершен) проект тотального перевода официальной документации по этой ОС, размещавшийся первоначально на freebsd.org.ua, а ныне доступный на главном сайте проекта. Во-вторых, начиная с 2002 года, статьи о FreeBSD заняли прочное место на страницах общекомпьютерных журналов. И, наконец, в-третьих, в конце 2002 — начале 2003 года подряд вышли первые русскоязычные книжки по FreeBSD, две переводные (очень похожие, так как принадлежат перу одних и тех же авторов — Майкла Эбена и Брайана Таймэна) и одна отечественная (вашего покорного слуги). На протяжении 2003-2004 годов к ним прибавилось еще несколько изданий — Родерика Смита, Майкла Лукаса, а затем, в 2006 году, фундаментальная книга Керка МакКузика и Джорджа Невилл-Нила «FreeBSD: архитектура и реализация». Конечно, среди изобилия книг о Linux, вышедших в последние годы, эти достижения книгоиздателей кажутся скромными. Однако следует учитывать, что FreeBSD — не Linux, и не распадается на такое множество дистрибутивов, каждый из которых требует отдельного описания. Росло тем временем и количество русскоязычных Интернет-ресурсов, посвященных BSD-системам вообще и FreeBSD, в частности. Конечно, их число не поражает воображение, как количество Linux-сайтов. Однако к упомянутым ранее ресурсам присоединился специализированный bsdportal.ru, немало материалов по BSD-системам регулярно публикуется и на страницах Citkit‘а, изрядное количество статей и заметок по FreeBSD вклинивается на традиционные Linux-ресурсы… К настоящему времени можно констатировать, что FreeBSD заняла в настольном секторе прочное, хотя и не очень заметное положение. Будет ли FreeBSD и дальше развиваться в направлении «пользовательского десктопа» — судить трудно, это зависит от многих факторов: и от усилий разработчиков — как самой системы, так и ее «юзерофильных» вариантов, вроде PC-BSD, и от общего положения внутри POSIX-сообщества. Зависит это и от нас, «настольных» пользователей FreeBSD. Ибо кто же еще сможет продемонстрировать пригодность ее как настольной платформы начинающим собратьям?

11 комментариев к “Сага о FreeBSD. Берклиада, или история одной системы

  1. Алексей, спасибо за изложение всей истории в одной статье :)
    У меня только пара замечаний.
    Во-первых, прогоните статью через спеллчекер (включая английский) — местами есть опечатки.
    Во-вторых, развитие Frenzy на данный момент заморожено. TechniX официально перестал заниматься проектом после релиза 1.1, а новых мейнтейнеров пока не видно.

    Ну и по истории FreeBSD на Руси, я могу попробовать подергать знакомых, которые строили первый интернет-провайдер Ульяновска. Это времена, когда появился irc.mv.ru, патч Бармина и т.д. :) Тогда была выбрана именно FreeBSD, что повлекло за собой создание в Ульяновске своеобразного «гнезда» FreeBSD-шников :)

    Jay

  2. 2 Vital
    > а что же OpenBSD? как она появилась?

    Это вахта её юзеров — написать про историю своей системы.

  3. 2 Jay
    Про Frenzy знаю — увы…
    Про спеллчекер — теперь я не один, так что со временем справимся.

    > Ну и по истории FreeBSD на Руси, я могу попробовать подергать знакомых

    Был бы очень признателен за информацию.
    А ещё лучше — если бы очевидцы событий описали их сами, это ведь самое ценное.
    Где разместить — найдём :)

  4. нет… ну про NetBSD же упомянули, так хотелось бы узнать откуда OpenBSD пошла

  5. 2 Vital
    А OpenBSD уже от NetBSD отпочковалась. Из-за внутренней склоки. Я не очень хорошо знаю эту историю. Где-то в сети по сей день валяется список рассылки, в котором Тео де Раадт ругается с остальными разработчиками NetBSD, но читать его мне не очень хочется. Всякой ругани мне и так читать хватает. По долгу, так сказать, службы.

  6. 2alv
    > А OpenBSD уже от NetBSD отпочковалась. Из-за внутренней склоки.

    http://www.onlamp.com/pub/a/bsd/2006/09/14/netbsd_future.html — свидетельство очевидца. Видимо, де Раадт действительно очень сложный человек. Но талантливый — и как инженер, и как управленец. Не даром столько нововведений в NetBSD было «ported from OpenBSD».

    Последний факт вовсе не радует: по всей видимости, у команды NetBSD было туго с ресурсом. Но сейчас вроде все налаживается…

  7. И еще замечание (опять про NetBSD).

    > …список их занимает не одну экранную страницу, и i386, как и x86_64, занимает в нём отнюдь не привилегированное место.
    Это было так еще несколько лет назад. Теперь есть один немаловажный фактор: лаптопы (нетбуки его, пожалуй, еще больше «усугубили»). А лаптопы — это почти поголовно i386/x86_64. А в лаптопах сейчас заинтересованы многие: от разработчиков Linux до OpenSolaris. Иэн Мердок даже заметил, что успех OpenSolaris во многом будет зависеть от того, насколько он (OpenSolaris) будет «дружить» с modern developers workstations, то есть с лаптопами. А поскольку NetBSD team позиционируют свою ОС как универсальную (а не только для специального применения — см. The NetBSD guide), то становится несколько неловко от того, что система с мотто «Of course it runs NetBSD!» не может быть использована на некоторых моделях EeePC из-за проблем с сетевым контроллером. Так что…

  8. 2 go2bed
    Насколько я слышал, NetBSD сейчас активно внедряется (или пытается внедриться?) в нишу смартфонов/коммуникаторов.
    Что же до нетбуковоподобных устройств — опять же проскакивала информация, что кроме Atom’а с его Intel’ом, на этот рынок нацелись и с ARM’ами. И тут у NetBSD был бы хороший шанс — если бы нетбуки начали делать не как уменьшенные и ухудшенные ноуты, а действительно как самостоятельный класс устройств.

  9. Ага. Вот, например, свежая (хотя уже не) новость, от которой в «наших энторнетах» многие встали на уши:
    http://www.feyrer.de/NetBSD/blog.html/nb_20090201_0608.html

    Майкрософт ищет квалифицированных NetBSD-девелоперов, NetBSD is about to replace WinCE, публика в экстазе, завистники скережещут зубами. В общем интересно, что из этого выйдет.

  10. 2 go2bed
    > новость, от которой в “наших энторнетах” многие встали на уши
    ___
    Обратил внимание. Обсуждений не читал, но предположить направленность могу — классовый враг переманивает «наших». Все линукс-девелоперы срочно перекрашиваются в нетбиэсдишников и толпой валят на службу Микрософту. Ну и так далее.

Обсуждение закрыто.

Перейти к верхней панели