LXF147:Зарождение Linux
|
|
|
Содержание |
Зарождение Linux: Причины и предпосылки
- Алексей Федорчук продолжает серию статей об истории наиболее успешного OpenSource-проекта.
Пока, как было сказано в предыдущей статье, в Беркли и его окрестностях поневоле занимались юридическим крючкотворством, на другом конце света, в Финляндии, некий студент по имени Линус Торвальдс [Linus Torvalds] размышлял, что же ему делать с только что приобретенным IBM PC. И, как ни странно, результаты его размышлений оказали не меньшее влияние на нашу историю, нежели многолетний труд исследователей, финансируемых правительством мировой державы.
Впрочем, рождественскую сказку о том, как бедный студент копил деньги на 32-битный компьютер, а потом сочинял программу терминального доступа к удаленной университетской машине, которая затем превратилась в полноценную ОС, не описывал только ленивый. Известна она и в версии от создателя этой ОС – самого Линуса Торвальдса. Так что пересказывать ее в очередной раз я не буду. А попробую, в меру своего понимания, выявить причины и предпосылки появления Linux. Правда, к вопросу о бедном студенте нам придется еще вернуться.
Причины
Главная причина появления Linux – «железная». С начала 80-х годов по всему миру шло триумфальное шествие Советской власти... то есть, пардон, Intel-совместимых PC. Первый широко распространившийся персональный компьютер, собственно IBM PC, базируясь на внутренне 16-разрядном процессоре Intel 8088, работать под изначально 32-битной UNIX не мог. Как не способна была на это и персоналка следующего поколения, IBM PC/AT на процессоре Intel 80286.
Однако появление в 1985 году первого 32-разрядного процессора от Intel, 80386, дало возможность использовать UNIX на дешевых и общедоступных персоналках. А появление в 1989 году процессора Intel 80486 вплотную приблизило их производительность к вычислительной мощности рабочих станций на RISC-процессорах. Росли объемы оперативной памяти, емкость жестких дисков, совершенствовалась видеосистема, появлялась первая мультимедийная периферия. А самое главное – PC становились все многочисленней, стандартизованней и дешевле; против этого триединства факторов все иные архитектуры массовых платформ общего назначения оказались бессильны.
Но под чем же работало все это аппаратное богачество? Да в подавляющем большинстве – под MS DOS, 16-разрядной операционной системой, созданной еще для первых IBM PC и несущей в себе массу неустранимых ограничений: принципиальную однозадачность, отсутствие многопользовательского доступа, возможность использовать «по прямому назначению» лишь 640 Кбайт оперативной памяти, примитивную организацию файловой системы, не менее примитивные средства работы в текстовом режиме – единственно возможном силами «черного» DOS.
Конечно, предпринимались многочисленные попытки заретушировать «родимые пятна» DOS. Разрабатывались надстройки над ней, способные использовать весь физический объем оперативной памяти и многозадачность – такие как QuaterDesq и Geoworks, которые включали также и системы работы в графическом режиме. Некоторые пользовательские DOS-приложения (табличные процессоры Lotus 1-2-3 и QuattroPro, текстовый редактор WordPerfect) обзаводились собственными средствами управления памятью и графическими интерфейсами.
Вся эта многочисленная DOS-косметика была либо неудачной, либо не получила распространения. Конечно, существовала и альтернатива ей – разрабатывавшаяся в IBM операционка OS/2, первая 32-разрядная ОС, специально написанная для PC. Однако и она, несмотря на весьма прогрессивный базис, не приобрела широкой популярности.
Сложилась парадоксальная ситуация: «народная», то есть общедоступная, платформа не имела адекватной «народной» же операционки, способной использовать ее возможности. В конце предыдущей статьи мы, казалось бы, обозначили претендента на роль народной ОС для современных, на тот исторический момент (начало 90-х годов прошлого века), компьютеров – FreeBSD.
Однако судьба распорядилась иначе. И «свято место» массовой операционки для настольных персоналок оставалось пусто вплоть до 1995 года – появления Windows 95. Началась эра гегемонии платформы Wintel (то есть машин на Intel-совместимых процессорах под управлением ОС Windows).
Гегемония эта практически не поколеблена и по сей день. Однако уже на протяжении многих лет она имеет альтернативу. Вследствие описанного в прошлой статье «технологического» детектива ею стала не FreeBSD, а совсем другая система.
Прежде чем переходить к предпосылкам ее возникновения, сделаю маленькое отступление. Параллельно с развитием платформы Wintel существовали и другие варианты, на иной аппаратной базе – процессоре Motorola 680x0, Macintosh и Amiga, с их System # и AmigaOS, соответственно. Однако обе они занимали нишевое положение – не в последнюю очередь, вследствие цены конечных решений. О чем мы сейчас и поговорим.
Предпосылка первая: цены
Как ни печально русским интеллигентам это признавать, но первой предпосылкой для возникновения Linux была именно цена. Потому что именно в начале 90-х годов машины с 32-битными процессорами от Intel (а затем от AMD и Cyrix) стали доступны народу.
Причины этого явления уходят еще в 80-е годы. Когда IBM выпустила свой первый PC, еще 16-битный, руководство фирмы не относилось к этой затее особенно серьезно и не расчитывало «нарубить капусты» на этом рынке. В результате все спецфикации архитектуры были открыты, и не имелось ни технических, ни юридических препятствий к клонированию этих машин.
Чем немедленно воспользовались многие производители, сначала американские, а затем европейские и восточноазиатские. И очень скоро число клонов (так называемых IBM-совместимых машин) превысило число оригиналов – IBM PC-XT и PC-AT. А потом была выпущена (в 1986 году) и первая машина на 32-битном процессоре от Intel (80386). И выпустила ее вовсе не IBM, а фирма Compaq – она получила имя Compaq DeskPro 386.
Тут в IBM спохватились, что рынок, созданный их стараниями, от них уходит – и разработали новую архитектуру – PS/2, также на процессоре x86, но с закрытыми спецификациями, исключающими клонирование. Однако было поздно: рынок был заполонен стандартными PC. К рубежу 80-х и 90-х годов их не производил только ленивый – начиная от компьютерных гигантов типа Hewlett-Packard и заканчивая дядюшкой Мяо с Малой Арнаутской улицы острова Тайваня. К которому вскоре присоединился его родич – дядюшка Ляо с ее продолжения на континентальном Китае. И ныне эти два дядюшки обеспечивают мир львиной долей комплектующих для компьютеров – и даже готовыми системами, под какими бы торговыми марками последние не продавались.
Результатом был лавинообразный обвал цен. Первый IBM PC-XT стоил более трех тысяч долларов, а для полноценной работы требовал еще и доукомплектования на треть этой суммы. Ко второй половине 80-х годов относятся слова Линуса Торвальдса: «Раньше было такое правило, что все компьютеры начального уровня стоили две тысячи». В первые же 90-е годы порог вхождения в мир IT снизился до тысячи баксов. То есть компьютеры не скатились еще до цены ширпотреба, как ныне. Но все, кому такие машины нужны были «по делу», были в силах приобрести их, причем не только «у них», но и «у нас».
Предпосылка вторая: ОС
В числе тех, кому такие машины были действительно нужны, и кто мог, тем или иным путем, ими обзавестись, оказались и студенты, обучавшиеся по специальностям, связанным с IT-сферой. Но вот с операционной системой для 32-битных компьютеров у студентов оказалось хуже: FreeBSD еще не начала свое свободное плавание, а коммерческие UNIX’ы стоили несколько дороже, чем необходимое для их работы «железо». Да и не густо было с ними: на архитектуре i386 были способны работать только SCO UNIX и Xenix – кастрированный UNIX от Microsoft.
И тут в канву нашего сюжета вписывается «игрушечная» ОС MINIX. Ее явил миру в январе 1987 года Эндрю Таненбаум [Andrew Stuart Tanenbaum], профессор Университета Врейе, Амстердам, Нидерланды. И преподавал он в этом университете не что иное, как Computer Science, хотя и был по образованию физиком [стоит отметить, что название университета – Vrije – по-голландски означает «свободный», – прим. ред.].
Университетское образование в области компьютерных наук в 80-е годы прошлого века базировалось преимущественно, если не исключительно, на UNIX. Что, как явствует из сказанного ранее, создавало для студентов известные трудности.
Так вот, Таненбаум вел в вышеозначенном университете курс UNIX, к которому написал собственный учебник – “Operating Systems: Design and Implementation”. Но изучать UNIX без системы – все равно, что обучаться музыке без инструмента. А с инструментом-то как раз и была напряженка. И ему не осталось ничего другого, как такой инструмент изготовить. Им-то и стала ОС MINIX (в дальнейшем получившая имя MINIX 1), вышедшая в свет в 1987 году.
Это была маленькая и компактная операционка, работавшая на машинах с архитектурой i386. Доступность MINIX увеличивалась еще и тем, что ее можно было скомпилировать даже в 16-битном варианте, и в этом качестве она становилась пригодной к использованию не только на PC-AT (80286), но даже, как говорят, на XT’шках, то есть на машинах с процессором 8086/8088.
Распространялась она исключительно как сопроводительный материал к упомянутому выше учебнику. Весь комплект, по свидетельству Линуса Торвальдса, стоил 169 долларов при заказе по почте. Что на самом деле не так дорого: в те годы на Западе, только-только переставшем загнивать, ни одно специализированное книжное издание не стоило дешевле 100 баксов. Так что фактически основная, если не вся, затратная часть для пользователя приходилась на книжку, да и дискеты были не так дешевы. Сама же ОС как таковая могла рассматриваться в качестве бесплатного приложения к книге и носителям. И, во всяком случае, это было несоизмеримо дешевле тех тысяч долларов, в которые обходилась лицензия на любой из существовавших тогда проприетарных UNIX’ов. Требовавших, к тому же, сущей безделицы в виде соответствующей рабочей станции за несколько десятков тысяч.
Разумеется, ОС MINIX распространялась в сопровождении исходных текстов, предназначенных для изучения и потрошения – необходимость в котором возникла очень скоро.
Дело в том, что ОС MINIX, предназначенная исключительно для учебных целей, в принципе не была приспособлена для выполнения каких-либо реальных задач. Однако шаловливые студенческие (и не только) ручки так и чесались прикрутить ее к чему-либо пригодному для практического использования. В результате система очень быстро обросла всякого рода заплатками, из которых главным был патч от австралийца Брюса Эванса. После наложения этих заплат система становилась способной выступать как платформа разработчика. Именно на такой заплатанной системе Линус Торвальдс спустя несколько лет начнет создавать свою операционную систему.
Однако сама по себе MINIX по-прежнему распространялась исключительно в первозданном виде – как чисто учебная система, и лишь в сопровождении книги (или, напротив, сопровождая книгу). То есть, будучи открытой, она не была свободной. Ибо права на MINIX принадлежали издательству Prentice Hall, выпустившему учебник Таненбаума. В сущности, правовой статус MINIX был точно таким же, как и обычной книги. Что, однако, не мешало тому, что на протяжении десяти, а то и более, лет по ней учились поколения студентов – как до Торвальдса, так и после него.
Надо заметить, что Таненбаума нельзя рассматривать только как предтечу Линуса, а его систему – как трамплин для его разработки. Кроме упомянутой выше “Operating Systems: Design and Implementation” (в переводе: «Операционные системы: разработка и реализация»), его перу принадлежат:
- “Computer Networks” («Компьютерные сети»);
- “Modern Operating Systems” («Современные операционные системы»);
- “Structured Computer Organization” («Архитектура компьютера»);
- “Distributed Systems: Principles and Paradigms” («Распределенные системы. Принципы и парадигмы»).
Все они по праву принадлежат к классике жанра IT-литературы, выдержали по несколько изданий (Computer Networks и Structured Computer Organization – аж по пять) и переведены на многие языки. В том числе и на русский: они выпущены издательством «Питер» в серии «Классика Computer Science».
Главной разработке Таненбаума, MINIX, судьба также уготовила вторую жизнь. Долгое время она продолжала эволюционное развитие в качестве учебной системы – были выпущены версии MINIX 1.5 (1992 год) и MINIX 2 (1997 год), представлявшие собой «песочницы» для начинающих юниксоидов. Однако кардинал лелеял коварные замыслы: превратить MINIX в полноценную операционную систему, реализующие его представления о том, какой должна быть современная ОС. А заодно – сделать ее свободной в полном понимании этого слова: ведь «несвобода» предыдущих версий объяснялась не жадностью профессора, а спецификой издания и распространения.
Результатом явился анонс новой операционки, MINIX 3, который состоялся 24 октября 2005 года. Это была не просто следующая по номеру версия, а именно новая операционная система, почему цифру «3» здесь следует рассматривать как часть ее имени собственного. Обособленность от предшественников подчеркивалась и тем, что отныне MINIX 3 будет распространяться не как довесок к книге, а совершенно самостоятельно, под лицензией BSD.
C трудами Эндрью Таненбаума, которые не ограничиваются перечисленными выше (достаточно вспомнить проекты Amoeba и Globe) можно ознакомиться на его личной странице: http://www.cs.vu.nl/~ast/.
Главный герой выходит на сцену
Итак, толчком для написания Линусом собственного ядра послужила MINIX – «студенческая» операционка Энди Танненбаума, с помощью заплат приспособленная для выполнения практической работы.
Однако сам Линус не занимался «доведением MINIX до ума». Не использовал он также и код какой-либо из реализаций UNIX или BSD. Он воссоздал функциональность ядра UNIX с нуля – руководствуясь описаниями системных вызовов, данными в соответствующем стандарте POSIX. И потому Linux не является ни клоном System V, ни клоном BSD – хотя в ней и использована схема инициализации в стиле первой, да и идейное влияние второй, безусловно, имело место быть.
Здесь надо сделать отступление и рассказать об истории стандарта POSIX. Для чего придется вернуться назад, ко временам, когда UNIX, выйдя за пределы породившей его AT&T, начала интенсивно делиться на ветки – как проприетарные, так и те, которые со временем станут свободными. В основе этих веток лежали разные базовые системы – SVR3, SVR4, 4BSD, и каждый разработчик считал своим долгом внести те или иные усовершенствования. А поскольку все существовавшие тогда системы, кроме BSD, были закрытыми, усовершенствования эти плохо согласовывались между собой.
Это ставило под угрозу один из краеугольных камней UNIX-идеологии – портируемость приложений. И начался процесс, который, вслед за товарищем Мао, можно назвать «борьбой за упорядочивание трех стилей работы». Однако председателю КПК было попроще – в данном случае речь шла не о трех, а едва ли не о тридцати трех стилях.
Тем не менее, процесс упорядочивания пошел, реализуясь в виде ряда стандартов, наибольшее признание из которых получил POSIX – Portable Operation System Interface based on UNIX, разработанный международной организацией IEEE (Institute of Electrical and Electronics Engineers, Inc.). И любая операционная система, претендующая на звание UNIX-совместимой, должна этому стандарту соответствовать.
Крестным отцом термина POSIX стал Ричард Столлмен. Слово Portable в его названии первоначально означало, что соответствующая POSIX-спецификациям система может быть перенесена на любое компьютерное «железо». Однако со временем не менее важным оказался несколько другой аспект этого термина: любая прикладная программа, написанная в соответствии со стандартами POSIX, может быть перенесена/портирована на любую совместимую с ним ОС.
Стандарты POSIX были приняты в 1988 году и зафиксированы в виде серии регулярно обновляемых документов (общим числом под два десятка), в которых описываются спецификации отдельных компонентов системы.
Именно на эти документы в первую очередь и опирался Линус Торвальдс, создавая свою ОС по мотивам MINIX.
Linux создавался на машине с процессором i386 для архитектуры Intel, и первоначально – только для нее. Более того, долгое время Линус вообще сомневался, что его система когда-либо сможет быть портирована на любую иную аппаратную платформу. И потому соответствие стандартам в данном случае преследовало целью не переносимость Linux самого по себе, а в первую очередь возможность компиляции в этой ОС всего ранее созданного программного ассортимента для UNIX и POSIX-совместимых систем вообще.
Лично Линусу принадлежит честь разработки ядра Linux и файловой системы ext (то есть Extended – расширение для файловой системы Minix), как и сменившей ее впоследствии ext2. В качестве среды для работы он выбрал bash – командную оболочку, разрабатываемую в рамках проекта GNU. А для сборки своего кода использовал тот самый GCC, о котором говорилось в предыдущей статье; главной же общесистемной библиотекой функций языка Си выступала ее GNU-реализация, glibc. Все прочее системное окружение ядра – комплекс пакетов, который можно назвать Base Linux – также в основном происходит из проекта GNU. Да и при выборе политики распространения Линус в конце концов остановился на лицензии GPL – детище Ричарда Столлмена и его Фонда свободного программного обеспечения (FSF).
GNU ли Linux?
На основании сказанного выше часто полагают, что ОС Linux должна на самом деле именоваться GNU/Linux. Правильно ли это?
По моему скромному мнению – нет. Конечно, роль программного обеспечения, разработанного в рамках проекта GNU, для развития Linux как пользовательской платформы переоценить трудно. Однако не проект GNU ухватился за столь недостающее ему ядро. Напротив, это Линус для обеспечения работы своего ядра использовал отдельные компоненты из GNU-арсенала. В полном, к слову сказать, соответствии с духом и буквой GPL и движения FSF. Впрочем, те, кто считает нужным подчеркнуть роль компонентов GNU в составе Linux, вполне могут это делать – и делают.
Добавлю еще, что неотъемлемой чертой Base Linux является альтернативность его комплектации. И потому ОС Linux – не только (а может быть, и не столько) ядро и набор базовых программ, но в первую очередь алгоритм для построения такого набора. И создание такого алгоритма – второе, после написания кода ядра, великое достижение Линуса.
Наконец, Линус оказался создателем уникального метода разработки масштабных проектов Open Source, того самого, который Эрик Реймонд позднее назовет методом большого базара. Впрочем, справедливости ради следует отметить, что в данном случае и он изобрел велосипед – аналогичный способ привлечения дармовой рабочей силы использовал Том Сойер в своих «Приключениях». Однако, если инструментами Тома были сердцевина от яблока и крыса с привязанной к хвосту веревкой, чтобы удобнее размахивать ей над головой, то орудием Линуса оказался Интернет.
Заключение
А теперь я опять вернусь к теме предыдущей статьи. Существует мнение, что если бы BSD (еще не разделившаяся на Net- и FreeBSD) не погрязла бы в тяжбе с AT&T и получила бы свободу в конце 80-х – начале 90-х годов, то в разработке Linux не было бы никакой необходимости. Несмотря на свою пылкую любовь к BSD-системам во всех их проявлениях, не могу с этим согласиться: если бы Linux’а не было – его следовало бы изобрести. Потому что без него жить было бы скучно...
Самое же главное, что камерный, во многом академический, стиль разработки BSD-систем, при всех его достоинствах с точки зрения качества, не способствовал вовлечению в этот процесс широких народных масс. И, как следствие, не мог был бы обеспечить открытому и свободному софту той популярности, которую он приобрел благодаря Linux.
Собственно, рождение Linux дало толчок к окончательному оформлению движения Open Source, несколько обособившемуся от сообщества Free Software – хотя и по сей день это существенно пересекающиеся множества. Но если апологеты FSF, во главе с Ричардом Столлменом, декларируют, что все программное обеспечение должно быть свободным, исходя из моральных и идеологических соображений, то для сторонников Open Source характерен более прагматический подход. Их принцип – открытое программное обеспечение следует использовать не потому, что оно открытое, свободное или бесплатное. А потому, что оно просто лучше проприетарного. В том числе – и вследствие публичной экспертизы, реализуемой именно благодаря внедренному Линусом методу Тома Сойера.