Текст книги "Вопросы истории: UNIX, Linux, BSD и другие"
Автор книги: Алексей Федорчук
Жанры:
ОС и Сети
,сообщить о нарушении
Текущая страница: 5 (всего у книги 28 страниц)
Итак, толчком для написания Линусом собственного ядра послужила MINIX – «студенческая» операционка Энди Танненбаума, с помощью патчей приспособленная для выполнения практической работы.
Однако сам Линус не занимался «доведением MINIX до ума». Не использовал он также и код какой-либо из реализаций UNIX или BSD. Он воссоздал функциональность ядра UNIX с нуля – руководствуясь описаниями системных вызовов, данными в соответствующем стандарте POSIX. И потому Linux не является ни клоном System V, ни клоном BSD – хотя в ней и использована схема инициализации в стиле первой, да и идейное влияние второй, безусловно, имело место быть. Как было сказано в предыдущей главе, Линус Торвальдс, создавая свою ОС по мотивам MINIX, опирался почти исключительно на стандарты POSIX.
Linux создавался на машине с процессором i386 для архитектуры Intel и первоначально – только для неё. Более того, долгое время Линус вообще сомневался, что его система когда-либо сможет быть портирована на любую иную аппаратную платформу. И потому соответствие стандартам в данном случае преследовало целью не переносимость Linux самого по себе, а в первую очередь возможность компиляции в этой ОС всего ранее созданного программного ассортимента для UNIX и POSIX-совместимых систем вообще.
Лично Линусу принадлежит честь разработки ядра Linux и файловой системы ext (то есть Extended – расширение для файловой системы Minix). В качестве среды для работы он выбрал bash – командную оболочку, разрабатываемую в рамках проекта GNU. Для сборки своего кода был использован компилятор gcc (GNU C Compiler), а главной общесистемной библиотекой функций языка Си выступала GNU-реализация ее, glibc. Все прочее системное окружение ядра – комплекс пакетов, который можно назвать Base Linux – также в основном происходит из проекта GNU. Да и при выборе политики распространения Линус в конце концов остановился на лицензии GPL – детище Ричарда Столлмана и его Фонда свободного программного обеспечения (FSF).
На основании сказанного выше часто полагают, что ОС Linux должна на самом деле именоваться GNU/Linux. Правильно ли это?
По моему скромному мнению, нет. Конечно, роль программного обеспечения, разработанного в рамках проекта GNU, для развития Linux как пользовательской платформы переоценить трудно. Однако не проект GNU ухватился за столь недостающее ему ядро. Напротив, это Линус для обеспечения работы своего ядра использовал отдельные компоненты из GNU-арсенала. В полном, к слову сказать, соответствии с духом и буквой GPL и движения FSF. Впрочем, те, кто считает нужным подчеркнуть роль компонентов GNU в составе Linux, вполне могут это делать – и делают.
Добавлю ещё, что неотъемлемой чертой Base Linux является альтернативность его комплектации. И потому ОС Linux – не только (а может быть, и не столько) ядро и набор базовых программ, но в первую очередь алгоритм для построения такого набора. И создание такого алгоритма – второе, после написания кода ядра, великое достижение Линуса.
Наконец, Линус оказался создателем уникального метода разработки масштабных проектов Open Source, того самого, который Эрик Реймонд позднее назовёт методом большого базара. Впрочем, справедливости ради следует отметить, что в данном случае и он изобрёл велосипед – аналогичный способ привлечения дармовой рабочей силы использовал Том Сойер в своих «Приключениях». Однако, если инструментами Тома были сердцевина от яблока и крыса с привязанной к хвосту верёвкой, чтобы удобнее размахивать ей над головой, то орудием Линуса оказался Интернет.
Рождение Linux дало толчок к окончательному оформлению движения Open Source, несколько обособившемуся от сообщества Free Software – хотя и по сей день это существенно пересекающиеся множества. Но, если апологеты FSF, во главе с Ричардом Столлманом, декларируют, что всё программное обеспечение должно быть свободным, исходя из моральных и идеологических соображений, то для сторонников Open Source характерен более прагматический подход. Их принцип – открытое программное обеспечение следует использовать не потому, что оно открытое, свободное или бесплатное. А потому, что оно просто лучше проприетарного. В том числе – и в следствие публичной экспертизы, реализуемой именно благодаря внедрённому Линусом методу Тома Сойера.
Глава пятая. Берклиада, тур второй
NetBSD и OpenBSD: первый форк в благородном семействеУделив на предыдущих страницах столько внимания FreeBSD, я невольно оставил в тени её родную сестру – NetBSD. А между тем она была первой в ряду свободных ОС BSD-клана.
Кроме того, существует мнение, не лишённое оснований, что именно NetBSD воплощает в себе дух первозданного UNIX par exellence. По крайней мере, это верно в отношении максимально полной независимости от аппаратной части: в отличие от FreeBSD, первоначально ориентированной только на «демократическую» платформу i386, NetBSD исходно разрабатывалась как кросплатформенная: с первого для своего существования она поддерживала рабочие станции HP 9000 и Sun, компьютеры Amiga и Macintosh, полузабытые машины PC532 (на процессорах серии NS32000), а также, конечно, обычные персоналки с i386 и выше.
Наконец, история NetBSD также не лишена драматизма. И если драматизм в развитии FreeBSD носил, как мы видели, детективно-юридический характер, то здесь можно говорить скорее о драме идей, завершившейся... скоро мы увидим, чем она завершилась.
Ранее, в главе второй, я уже упоминал, что будущая NetBSD отделилась от проекта 386BSD в начале 1993 года, в тот момент, когда он оказался заброшенным своим создателем, Биллом Джолитцем, а «заплаточная группа» – будущие разработчики FreeBSD, ещё не развернули свою деятельность.
Ядро новой группы составили Крис Деметрио (Chris Demetriou), Тео де Раадт (Theo de Raadt), Адам Гласс (Adam Glass) и Чарльз Ханнам (Charles Hannum). Разрабатываемая ими система получила имя NetBSD, предложенное Тео – как раз в это время Интернет начал широко распространяться в узких пока кругах, особо приближённых к разработке.
Первым релизом новой системы считается версия 0.8, вышедшая в апреле 1993 года. Однако истинную мультиплатформенность она обрела в версии 1.0 – правда, та последовала не очень скоро, осенью 1994 года.
А вскоре, в декабре того же года, внутри группы перворазработчиков разгорелся конфликт: Тео разошёлся во мнениях относительно дальнейшего развития системы с остальными членами группы. И дело закончилось тем, что весной 1995 года ему был закрыт доступ к дереву исходных текстов NetBSD.
Это расхождение, как идейное, так и чисто личное (переписка по данному вопросу была опубликована де Раадтом в сети), и послужило причиной первого форка в BSD-клане. Поскольку исходники NetBSD были полностью свободны, Тео взял их за основу, модифицировал согласно своим представлениям о том, «как надо», и основал проект, получивший имя OpenBSD.
Во главу угла новой системы были положены два аспекта: свобода от любых компонентов, могущих ограничить её распространение, и безопасность. Последняя неразрывно была связана с криптографией. И, дабы избавиться от оков, налагаемых законами США на распространение «сильных» криптографических технологий, Тео покидает Калифорнию и перебирается в Канаду, куда некогда эмигрировала из ЮАР его семья, дабы откосить сыновей от службы в армии антинародного режима апартеида. Там, в почти родном городе Калгари, университет которого Тео закончил до работы над NetBSD, и обосновывается штаб-квартира нового проекта.
В результате, после нескольких внутренних тестировочных версий, в октябре 1996 года, рождается новая ОС – выходит первый официальный релиз OpenBSD 2.0. С тех пор полугодовой релиз-цикл выдерживается неукоснительно – очередные версии появляются каждую весну и осень.
Однако завершим историю NetBSD. В последующие годы она была портирована на всё «железо», которое может запускаться, и немножко – на то, которое запускаться не способно. Чтобы убедиться в этом, достаточно посмотреть «лист совместимости» на сайте проекта – в них обнаружатся и VAX, и Sun Sparc, и RISC-системы от Hewlett-Packadr, и DEC Alpha, и PowerPC, и Amiga, вкупе с мало кому ведомыми Acorn, Atari, Sharp, и так далее, и так далее, и так далее… Список столь обширен, что PC-платформа как-то просто теряется в середине его.
В качестве системы пакетного менеджмента в NetBSD в 1997 году была принята pkgsrc
, разработанная по образу и подобию портов FreeBSD, но почти сразу также приобретшая кросс-платформенный характер. Кроме родной ОС, она официально поддерживается для многих UNIX-подобных операционок: Solaris, Linux, Darwin (Mac OS X), FreeBSD, OpenBSD, IRIX, AIX, DragonFlyBSD, HP-UX, QNX. Правда, это не значит, что в них она широко используется: во всех этих ОС есть собственные развитые средства управления пакетами. В частности, в OpenBSD, ответвившейся до возникновения pkgsrc
, была просто заимствована система портов из FreeBSD. Относительно Linux мне известно несколько попыток прикрутить pkgsrc
к Slackware. Лишь в DragonFlyBSD pkgsrc
долгое время была принята в качестве штатной, но об этом мы поговорим в следующей главе. А в этой – вернёмся к FreeBSD и очередному перелому в её истории.
Мы оборвали историю FreeBSD 22-го ноября 1994 года – дне, когда было объявлено о выходе FreeBSD версии 2.0, после чего оценили, во что же этой ОС обошлась её свобода. На нынешней же странице посмотрим, как события развивались дальше.
Начиная с выхода первой «настоящей» версии FreeBSD (то есть 2.0), сложилась модель разработки этой операционной системы, реализуемая и по сей день. Впрочем, она была в значительной мере унаследована от стиля работы CSRG и свойственна всем системам берклианской линии.
С первого дня существования проекта все его компоненты (исходные тексты ядра, системного и пользовательского окружения, документация, багрепорты, архивы рассылок) существуют в открытом виде, и доступ к ним может получить любой желающий через web-сайт или ftp-сервер проекта и их зеркала по всему миру.
Все участники разработки FreeBSD объединяются в три кольца. Первое, как бы внешнее, кольцо включает в себя многочисленных добровольцев со всего мира, работающих над отдельными компонентами системы – начиная от ядра и до сопровождения портов, а также занимающихся составлением и переводом документации. Разработчики (как, впрочем, и всё остальное прогрессивное человечество) имеют свободный доступ к дереву исходных текстов системы, но вносить в него изменения непосредственно не могут: свои наработки они должны передавать «по команде» для утверждения.
Утверждением занимаются члены второго кольца – так называемые коммитеры (commiters). Кроме контроля над деятельностью разработчиков, они и сами занимаются разработкой какой-либо из подсистем FreeBSD и могут вносить изменения (как свои, так и курируемых ими разработчиков) в соответствующие ветви дерева исходных текстов.
Однако полномочий на изменение дерева исходников в целом не имеют и коммитеры – это привилегия ядра команды (core team), в функции которых, кроме разработки собственных узлов системы, входит также отслеживание изменений, вносимых коммитерами, и разрешение противоречий между ними, буде таковые возникают. Иными словами, на них возложен учёт модификаций системы и контроль над её целостностью.
Раз сложившись, модель разработки функционировала и функционирует по сей день. И сохраняющееся единство системы на протяжении почти полутора десятков лет доказало её действенность. Конечно, кое-какие коллизии возникали – но их мы рассмотрим, когда подойдёт время.
А пока вернёмся немного назад, к началу истории собственно FreeBSD, и посмотрим, что же послужило причиной её почти мгновенной популярности.
Первой составляющей успеха новой операционки стала утилита sysinstall
– программа установки и сквозного конфигурирования системы, почти не изменившаяся по сей день за исключением мелких, но приятных усовершенствований. Ныне она кажется архаичной и часто подвергается критике со стороны пользователей Linux, привыкших в последние годы к красивым графическим инсталляторам и конфигураторам. Однако не будем забывать, что она появилась до первых аналогов в Linux – в нём в те годы ничего подобного не было ни в одном дистрибутиве.
Более того, под влиянием sysinstall
возникла не только программа установки практически одновозрастной Slackware – влияние её сказывалось ещё и в начале нынешнего тысячелетия, непосредственно – в инсталляторах таких дистрибутивов, как CRUX и Archlinux, косвенно – в установочной программе Zenwalk’а. Что же до сквозных графических конфигураторов, то первого из них, Drackconf из Mandrake, Linux’у пришлось ждать около пяти лет (первые варианты YAST, упомянутого на странице про Suse, функционировали в текстовом режиме).
Ничуть не менее важной составляющей 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: переломный годОднако закулисно на протяжении трех лет шла незаметная, но большая работа по коренному изменению FreeBSD, завершившаяся появлением в январе 2003 года первой версии новой, 5-й ветки. В нарушение описанной выше закономерности, она очень долго (вплоть до версии 5.3), не получала статуса STABLE, а позиционировалась как «ново-технологический релиз». В сущности, стабильной она так и не стала, выступая скорее как прототип грядущей ветки 6.
Тем не менее, выход в свет 5-й ветки FreeBSD был, пожалуй, самым революционным событием со времен ее появления как самостоятельной операционной системы. Почему год её выхода я и назвал годом переломным – конечно, не столь драматичного, как события 1991-1993 годов, но тоже сопровождавшегося не только приобретениями, но и потерями.
Именно в 5-й ветке FreeBSD, начиная с самой первой пред-релизной версии, предназначенной для разработчиков (июнь 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.4, появившаяся в ноябре 2008 года) пользовалась статусом промышленного, хотя и «староватого» (legacy) релиза, и поддержка её осуществлялась довольно долго.
Новым рубежом в развитии FreeBSD стала ветка 7 (февраль 2008 года), в которой, начиная с первых пре-релизных версий (с осени 2007 года), поддерживается файловая система ZFS – одно из самых перспективных явлений в этой сфере, разработанное фирмой Sun для своей операционки Solaris в 2004 году. И хотя поддержка ZFS во FreeBSD долгое время имела статус экспериментальной, и эта файловая система не рекомендовалась к промышленному применению, было ясно, что её стабилизация в рамках этой ОС – не более, чем вопрос времени.
И это время наступило: в середине сентября 2009 года, в канун выхода релиза 8-й версии, Павел Давидек (Pawel Dawidek) объявил о готовности ZFS во FreeBSD к промышленной эксплуатации. Однако до повсеместного её внедрения было ещё далеко: ZFS не поддерживалась на стадии установки программой sysinstall – и соответственно, на ней нельзя было расположить корень файловой иерархии. Фактически о её окончательном утверждении во FreeBSD можно говорить, начиная с 10-й ветки – финальный её релиз вышел за несколько дней до окончания редактирования этой книги.