Linux: начало дистрибуции

Алексей Федорчук
Впервые опубликовано: LinuxFormat, #148 (сентябрь 2011)

Прошлую статью я завершил на обсуждении вопроса, что же такое придумал Линус, и не GNU ли его Linux. В религиозные вопросы по сему поводу вдаваться не будем. А лучше посмотрим, что же именно Линус придумал (не считая метода разработки, который придумал Том Сойер).

Был ли дистрибутивом первозданный Linux?

Общеизвестно, что Линус придумал ядро операционной системы имени… нет, не и минеральных источников, а имени себя. И это правда, чистая правда — но не вся правда. Потому что Линус придумал ещё и файловую систему ext (расширение файловой системы MINIX, которая позднее воплотилась в ext2). Кроме того, им или с его подачи был разработан набор низкоуровневых утилит для работы с ядром, его модулями, файловой системой ext — он получил имя linux-utils. Наконец, в рамках реанимированного Линусом метода Тома Сойера Вернер Альмесбергер разработал загрузчик ядра Linux — Lilo (LInux LOader), который затем, до появления GRUB’а, успешно выступал в качестве мультисистемного.

Именно этот комплекс, (почти) способный к самостоятельному существованию, и можно назвать операционной системой Linux в самом узком смысле слова. Однако он существовал не в безвоздушном пространстве. Ибо, с одной стороны, требовал средств управления — им, в силу некоторых причин, стала командная оболочка bash. А с другой — его требовалось чем-то собирать, и в этом качестве выступил компилятор gcc вместе с набором сопутствующих ему инструментов (binutils, make и так далее). И то, и другое было разработано в рамках проекта GNU — что и служит по сей день основанием для именования нашей ОС как GNU/Linux.

Подобно первозданному UNIX’у, Linux изначально являлся типичной “системой для себя”. Более того, исходно единственным его назначением была разработка самого же себя — никаких других целей Линус перед собой поначалу не ставил. Да и первые пользователи Linux’а устанавливали (точнее, собирали) систему для того, чтобы её изучать и, по возможности, совершенствовать. Так что ни в каких дополнительных компонентах, кроме ядра, утилит обрамления и инструментария для их сборки, необходимости не возникало.

Установка Linux в те «времена старинные, теперь почти былинные» была задачей не вполне тривиальной даже для опытного компьютерщика (а иные его и не пользовали). И в формирующемся тогда же Linux-сообществе возникла идея облегчить им эту процедуру. В результате чего родилось понятие дистрибутив Linux. Это — система комплектации ядра ОС и его обрамления дополнительными программами и способ её распространения. Она предполагает наличие программы-установщика и средств управления пакетами, то есть теми самыми дополнительными программами.

И уже через несколько месяцев после обнародования Линусом исходников первой (0.01) версии своего ядра, в начале 1992 года, появляются первые наборы программ, которые можно считать прототипами позднейших дистрибутивов Linux — MCC Interim Linux и TAMU. Они представляли собой комплекты разработчика, включающие в прекомпилированном виде ядро, командную оболочку, компилятор со средствами сборки, а также основные пользовательские утилиты, что позволяло развернуть работоспособную систему на «чистой» машине, не несущей никакой иной ОС.

Начало начал

В итоге в октябре 1992 года на свет появляется комплект, который можно назвать первым в истории настоящим дистрибутивом Linux. Он носил имя SLS (Softlanding Linux System) и был разработан Питером Мак-Дональдом. Помимо ядра Linux и утилит обрамления, дистрибутив SLS включал в себя оконную систему X и средства работы с сетью, то есть был уже вполне пригоден для конечного пользователя. Правда, не следует забывать, что конечными пользователями Linux в те годы были исключительно его же разработчики.

Дистрибутив SLS просуществовал недолго — последняя его версия вышла в 1994 году. Однако он лёг в основу целой линии дистростроения, протянувшейся в наши дни яркой нитью, и потому о нём стоит сказать подробней.

Дистрибутив SLS распространялся преимущественно на трехдюймовых дискетах, в количестве 20-30 штук. Образы дистрибутивных дискет можно было получить по Сети (у нас — практически только по служебным каналам), а также заказать на CD (хотя CD-приводы в то время на пользовательских машинах были не меньшей экзотикой, чем Интернет на дому).

Одной из знаковых особенностей SLS была схема инициализации в BSD-стиле — хотя в дальнейшем в большинстве дистрибутивов майнстрима возобладал стиль System V, которую Линус заимствовал из первозданного UNIX’а.

Формат бинарных пакетов в SLS был предельно прост — tar-архив, компрессированный с помощью Gzip или compress, возможно — с постинсталляционным сценарием. Для установки и удаления пакетов использовалась утилита sysinstall — предтеча всех последующих систем пакетного менеджмента. Которая не только разворачивала архив и инкорпорировала его компоненты в файловую систему, но и фиксировала его в специальной базе данных — на предмет последующего удаления, если таковое потребуется. Хотя о контроле зависимостей тогда речи ещё и не возникало.

Прекращение разработки SLS связывается с его переходом на формат бинарных файлов ELF вместо общепринятого тогда в Linux и вообще в UNIX формата a.out. Хотя ELF был более “прогрессивен”, нежели a.out, тогда это оказалось шагом преждевременным. Но, возможно, дело было просто в потере интереса разработчика к своему произведению — ситуация, с которой мы ещё не раз столкнёмся при знакомстве с историей Open Source.

О SLS ныне мало кто помнит, однако роль его в дальнейшем дистростроении трудно переоценить: именно он лёг в основу старейшего дистрибутива из числа доживших до наших дней — Slackware.

Slackware: первый шаг к Linux’у для всех

Итак, дистрибутив SLS умер. Но душа его жила. Ещё в период его активного развития Патрик Фолькердинг принял SLS за основу своей Linux-системы, названной Slackware, первая версия которой была обнародована 17 июля 1993 года и с тех пор успешно развивается по сей день.

Именно со Slackware началась и история Linux-дистрибуции в организационном, так сказать, аспекте. Сразу же после своего появления Slackware, помимо обычных сетевых каналов, начала распространяться на CD известной медиа-фирмой Walnut Creek.

Slackware в своём внутреннем устройстве унаследовала первозданную простоту SLS. И не только унаследовала — именно простоту Патрик возвёл в основополагающий принцип построения системы. Реализация его выразилась в сохранении BSD-стиля инициализации, простого формата пакетов, и «идеологически обусловленного» отказа от контроля их зависимостей.

Создававшиеся чуть позже (но в масштабах эпохи — практически одновременно) дистрибутивы Debian и Red Hat пошли по прямо противоположному пути: всё более усложняющаяся со временем схема инициализации в стиле System V, включение максимально большого количества метаинформации в структуру пакетов и все более изощрённые формы контроля их зависимостей.

Новшествами Slackware были:

  • собственная программа инсталляции — меню-ориентированная, работающая в псевдографическом режиме, похожая по виду и родственная по духу создававшейся в то же самое время утилите sysinstall из FreeBSD;
  • выделение категорий пакетов — базовой системы (A), консольных приложений (AP), средств разработки (D), оконной системы X и ее приложений (X и XAP, соответственно), и так далее;
  • набор утилит для управления индивидуальными пакетами, не предусматривающего, однако, никакого контроля зависимостей.

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

Исходный «примитивизм» формата пакетов Slackware не мешает использовать в этом дистрибутиве весьма развитые средства пакетного менеджмента, обеспечивающие учёт и автоматическое разрешение зависимостей. Поскольку внутри самих пакетов никакой метаинформации не содержится, для хранения её можно использовать любую внешнюю базу.

Этой особенностью формата пакетов Slackware активно пользуются все, у кого возникает к тому желание или необходимость, приспосабливая к ней любые системы управления пакетами, от портов FreeBSD до Debian’овского apt-get и pacman, происходящего из Archlinux. Разработан был для Slackware и собственный менеджер пакетов, swaret. Однако в штатный комплект дистрибутива он, вследствие заветов Патрика, так и не вошёл.

Потому что для собственно Slackware в качестве основных средств управления пакетами Патрик по прежнему признает только два: установку официальных бинарников с помощью штатных утилит, при ручном разрешении зависимостей, и компиляцию из исходников — в случае, если нужных пакетов нет в репозитории или их официальная сборка по тем или иным причинам не удовлетворяет пользователя. Всё остальное — от глюкавого. То есть дистрибутив этот должен рассматриваться не столько как законченная система, сколько как каркас для конструирования системы собственной.

И этими возможностями для конструирования начали активно пользоваться, в результате чего Slackware стала плодовитой прародительницей клонов: на сегодняшний день на Distrowatch зарегистрировано около 25 активно развиваемых её производных, а в прошлом их число было куда больше.

Конструкторский характер Slackware способствовал тому, что на ней базировалось изобилие разного рода специализированных систем, которые условно можно объединить под названием «Linux на дискете». Правда, ныне, с широким распространением LiveCD, появлением «Linux на флэшках» и отмиранием 3-дюймовых дисководов, «дискеточные» Linux’ы представляют интерес исторический — как напоминание о временах, когда деревья были большими, а дистрибутивы — маленькими.

Debian: второй шаг к пользователю

Дистрибутиву Slackware не долго пришлось оставаться в гордом (почти) одиночестве на своём тернистом пути к пользователю. Скоро этот путь пришлось делить на троих — сначала с Debian, а затем и с Red Hat.

История дистрибутива Debian особенно интересна по четырём причинам. Первая — ее длительность и насыщенность событиями, давшими большое количество инноваций, аккумулированных мировым дистростроением. Вторая причина — Debian стал основоположником универсалистской тенденции в дистростроении, стремившейся охватить весь океан свободного софта. Третья — Debian стал прародителем максимального количества активно развивающихся клонов. И, наконец, четвертая — некоторые из его потомков сравнились по популярности с родителем, а один (Ubuntu) даже превзошёл его (не это ли мечта всех родителей?).

Debian — или, точнее, Debian GNU/Linux, разработчики настаивают именно на таком его именовании, — был создан в 1993 году Яном Мёрдоком (Ian Murdock), и его название образовано сочетанием имен его жены Деборы (Debora) и самого автора — в то время он был студентом Университета Пэрдью (Purdue). Однако очень быстро вокруг Debian выросло сообщество пользователей и разработчиков, и проект приобрёл общественное значение.

Основной идеей раннего (1993–1995 гг.) Debian были — модуляризация авторских пакетов, сборка этих модулей в качестве дистрибутивных пакетов с детальным описанием их зависимостей, утилита dpkg для управления оными в масштабе одного отдельно взятого пакета. И, под занавес первого акта, dselect — первая система пакетного менеджмента, достойная претендовать на звание именно системы и представляющая собой front-end к dpkg, обеспечивающий автоматическое разрешение зависимостей и установку целевых наборов пакетов. Эти тендеции получили развитие в дальнейшем.

Универсализм Debian проявился на следующем этапе его развития, начиная с 1996 года, когда Яна, ушедшего после окончания университета на службу мировому капиталу (в компанию Progeny), на посту лидера проекта сменил Брюс Перенс — известный адепт Open Source, автор многочисленных публикаций на эту тему и, по совместительству, — тогда еще и немалый чин в компании Pixar. Каковая, к слову сказать, поучаствовала и в поддержке проекта Debian — в том числе, как мы увидим чуть дальше, и идеями.

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

Кроме того, на время лидерства Брюса пришлась разработка документов Принципы Свободного Программного Обеспечения Debian и Общественный контракт Debian, а также создание принципов контроля качества включаемых в дистрибутив пакетов. Наконец, именно он предложил систему кодовых имён версий дистрибутива (Potato, Woody и другие) — это были персонажи из мультфильма Toy Story, выпущенного компанией Pixar (вот оно, идейное воздействие масс-медиа!). При этом имя Sid, которое носил соседский мальчик, портящий игрушки, было навсегда закреплено за разрабатываемой версией — как символ того, что разработчики новой версии программы в процессе своей работы подчас вынуждены временно “подпортить” версию старую.

В период 1996–1999 года Debian, в частности, благодаря политике контроля качества, завоевал признание как серверная платформа и система для технически грамотных пользователей (читай — в первую голову, для разработчиков). При этом он счастливо совмещал в себе качества “системы для себя” и “системы для всех”. Первая сторона вопроса обеспечивалась программой dpkg, вторая же стала возможной благодаря ее надстройке — dselect.

Одновременно продолжали развиваться универсалисткие тенденции дистрибутива — не только вглубь океана Open Source Software, но и вширь — переносясь на архитектуры, отличные от i386. В интервале 1996–1999 года Debian был портирован на платформы 68XXX, Alpha, затем — Sparc и PowerPC, Intel64 (так называемый Merced) и AMD64.

Важнейшей, наверное, вехой в развитии Debian (и не только его) стал выпуск весной 1999 года версии 2.1 Slink (Slinky — это такая собачка из того же мультика). И судьбоносность ее определяется тем, что в нее впервые был включён apt — универсальный инструмент для управления пакетами, который и создал позднее условия для широкого распространения Debian-клонов.

Значение apt переоценить трудно — он не только был портирован в дистрибутивы, использующие формат пакетов rpm, не только послужил прообразом для многих других систем управления пакетами, претендующими на универсальность (yum, urpmi), но и оказался своего рода связующим звеном между пакетными дистрибутивами и системами Source Based, поскольку обеспечивал не только установку бинарных пакетов. но и их построение (вплоть до тотальной пересборки системы, подобно сакраментальному make world из FreeBSD). Впрочем, все это стало ясно много позднее, по крайней мере, широким пользовательским массам.

Не случайно именно к 1999 году относятся первые попытки создания на базе Debian Систем Быстрого Развёртывания, таким, как Storm Linux и Corel Linux. Но это история, до которой мы доберёмся ещё не скоро.

Red Hat: совсем для всех?

Если Slackware продолжил исконно UNIX’овую традицию систем для себя, а Debian являет собой первый пример дистрибутива, развиваемого сообществом и для сообщества, то следующим шагом дистростроения стало создание дистрибутива, претендующего быть системой для всех.

Ибо тем временем обозначилась первая сфера практического применения Linux за пределом круга разработчиков программного обеспечения — сервера сетевых служб, в том числе — web-сервера. Это вызвало к жизни вторую волну дистрибутивов (правда, по времени она практически пересеклась с первой — но в те героические годы счет вёлся на месяцы, если не на дни). И первой ласточкой её стал Red Hat, который м создавался как дистрибутив “для всех” — хотя, конечно, под понятие “все” тут попадали в первую очередь администраторы компьютерных сетей (время Linux’а для конечного пользователя ещё не пришло). Но важно, что Red Hat представлял собой не набор для конструирования собственной системы, как Slackware (да и Debian в те годы, до разработки apt, также скорее предполагал собственное конструирование, нежели готовое решение), а попытку создания системы, работающей “из коробки”.

Было время на Руси, когда

Говоришь Linux — подразумеваешь Red Hat.
Говоришь Red Hat — подразумеваешь Linux.

Дистрибутив Red Hat — третий в ряду ныне живущих патриархов дистростроения, после Slackware и Debian (хотя, повторяю, приоритет тут исчисляется первыми месяцами). Он разрабатывается с 1993 года, в октябре 1994 года появилась первая общедоступная бета-версия, а в мае 1995 года — первый официальный релиз.

В отличие от Slackware, созданного и развивавшегося кустарём-одиночкой с персональным компьютером, и Debian, вокруг которого быстро сложилось сообщество разработчиков, за Red Hat с самого начала его разработки стояла одноимённая коммерческая компания. Основали её Боб Янг (Bob Young) и Марк Юинг (Marc Ewing) в 1993 году, имея целью поставить свободное слово на службу мировому капиталу.

Происхождение названия дистрибутива (красная шляпа) и соответствующего логотипа объясняют тем, что Юинг в студенческие годы рассекал по колледжу в дедушкином шапо соответствующего колёру. Хотя Янг объясняет его тем, что красный цвет в дзэн-буддизме символизирует всякие хорошие качества.

Это была первая попытка монетизации свободного софта: сам дистрибутив распространялся свободно, в соответствие с лицензией GPL, и бесплатно (по цене носителей и доставки), деньги же предполагалось извлекать из технической его поддержки. А поскольку оплачивать таковую обычно готовы не частные лица, а организации, то Red Hat изначально был ориентирован на корпоративную сферу — во-первых, и на дружелюбие к пользователю — во-вторых.

Правда, следует учесть, что хотя шире стал круг пользователей, но связь их с народом не стала особенно ближе: расширился он за счёт сисадминов, до приобщения к Linux’у пользователей “простых” оставалось ещё несколько лет.

Настоящие сисадмины, как известно, люди занятые — с одной стороны, и ленивые — с другой. Возиться с конструированием системы им обычно не с руки. И потому Red Hat с самого начала отличался простотой установки — максимально возможной в те времена.

Значительную роль в упрощении процедуры установки и поддержки сыграл формат пакетов RPM (что тогда расшифровывалось как Red Hat Package Manager) и одноимённая утилита для манипулирования такими пакетами, способная отслеживать зависимости и сообщать об их нарушении (но ещё не разрешать их автоматически). По сравнению с молчаливым пакетным инструментарием из Slackware, способным установить неработоспособную, из-за нарушения зависимостей, программу, это казалось большим прогрессом.

Происхождение системы rpm (будем понимать под этим и набор утилит, и формат пакетов, с которыми они работают) теряется во мраке веков. В первых версиях Red Hat использовалась система RPP, обеспечивающая установку пакетов одной командой, проверку зависимостей и запрос информации о них. Однако сборка пакетов для неё требовала существенной модификации исходников, что было напряжно для разработчиков.

Параллельно раннему Red Hat некоторое время развивался дистрибутив Bogus, ныне мало кому известный. В нём имелась собственная пакетная система — PMS (Package Management System), написанная Рикардом Файтом (Rikard E. Faith). Она обладала слабым механизмом запросов информации о пакетах, а проверка их зависимостей просто отсутствовала. Но зато пакеты для PMS можно было собирать непосредственно из исходников, без всякой их модификации.

В ходе подготовки 2-го релиза Red Hat Рикард Файт вместе с Дугом Хоффманом (Doug Hoffman) по контракту с поименованной компанией написали систему PM, вобравшую в себя лучшие особенности RPP и PMS. Хотя практически она так и не была задействована, но послужила одной из основ для RPM.

Собственно система RPM была создана Марком Юингом и Эриком Троэном (Erik Troan), основываясь на всех достижениях предшественников — RPP, PMS и PM. Вариант её, подготовленный для тестовых версий второго релиза, быстроты ради был написан на Perl’е, что создавало ряд проблем, например, при загрузке с дискеты (а в те времена это было достаточно обычным способом старта Linux’а). И непосредственно к выходу релиза Red Hat 2.0 система была полностью переписана на C, база данных пакетов перепроектирована для пущей надёжности и быстродействия, и создана библиотека rpmlib для использования функциональности RPM сторонними разработчиками. Иными словами, система RPM приобрела практически тот вид, в каком мы знаем её ныне, подвергаясь с тех пор только корректировке ошибок и косметическим доделкам.

Система RPM и одноимённый формат, став штатными и общедоступными в релизе Red Hat 2.0, вышедшей в сентябре 1995 года, сразу завоевали популярность и вне родительской системы. Вскоре они были использованы в Caldera Linux, Suse, Mandrake и многих других — и об этом будет говориться в следующих сериях.

Linux: начало дистрибуции: 2 комментария

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