Книга: Вопросы истории: UNIX, Linux, BSD и другие
Глава четвёртая. Рождение Linux
Пока, как было сказано в предыдущих главах, в Беркли и его окрестностях поневоле занимались юридическим крючкотворством,а в мире проприетарных UNIX'ов пытались выполнить заветы Великого Мао по упорядочиванию стилей, на другом конце света, в Финляндии, некий студент по имени Линус Торвальдс размышлял, что же ему делать с только что приобретённым IBM PC/386. И, как ни странно, результаты его размышлений оказали не меньшее влияние на нашу историю, нежели многолетний труд исследователей, финансируемых правительством мировой державы, и инженеров на окладе крупнейших компьютерных фирм.
Впрочем, редкий линуксописатель не описывал рождественскую сказку о том, как бедный студент копил деньги на 32-битный компьютер, а потом сочинял программу терминального доступа к удалённой университетской машине, которая затем превратилась в полноценную ОС. Известна она и в версии от создателя этой ОС – самого Линуса Торвальдса. Так что пересказывать её в очередной раз я не буду. А попробую, в меру своего понимания, выявить предпосылки появления Linux. Правда, и к вопросу о бедном студенте мне придётся ещё вернуться.
Предпосылка первая, «железная»
О первопричине появления Linux я уже говорил – она «железная», и вызвана триумфальным шествием Советской власти (то есть, пардон, Intel-совместимых PC). И главную роль здесь сыграло появление в 1985 году первого 32-разрядного процессора от Intel – 80386. Что дало возможность использовать UNIX на дешёвых и общедоступных персоналках. А начавшееся вслед за тем производство процессоров Intel 80486 вплотную приблизило по производительности эти самые «писюки» к рабочим станциям на RISC-процессорах.
Надо сказать, что параллельно с платформой на процессорах Intel и их клонах, таких, как AMD, Cyrix, UMC, существовали и другие варианты персоналок, на иной аппаратной базе – процессоре Motorola 680x0. Ими были Macintosh и Amiga, с их System # и AmigaOS, соответственно. И обе эти платформы были не прочь претендовать на высокое звание «народного» компьютера. Особенно первая – в силу ряда причин, как технических, так и маркетинговых, у неё, казалось, были на то все основания.
Однако обе эти платформы в кнечном счёте оказались в... нет, не там, где вы подумали в меру своей испорченности, а в нише. Точнее, каждая в своей: Macintosh снискал любовь той прослойки, которую в советское время обзывали творческой интеллигенцией, а Amiga получила широкое распространение в узких кругах артистической, в первую очередь музыкальной, богемы.
Не в последнюю роль в расползании по нишам и Mac'а, и Amiga сыграла цена конечных решений. Что плавно подвело нас ко второй предпосылке.
Предпосылка вторая, «денежная»
Как это ни печально признать русским интеллигентам, но второй (по счёту, но не по значению) предпосылкой для возникновения 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 спохватились, что рынок, созданный их стараниями, от них уходит – и разработали новую архитектуру, также на процессоре x86, но с закрытыми спецификациями, исключающими клонирование – PS/2. Однако было поздно: рынок был заполнен стандартными PC. К рубежу 80-х и 90-х годов их не производил только ленивый – начиная от компьютерных гигантов типа Hewlett-Packard и заканчивая дядюшкой Мяо с Малой Арнаутской улицы острова Тайваня. К которому вскоре присоединился его родич – дядюшка Ляо с её продолжения на континентальном Китае. И с тех пор эти два дядюшки (особенно второй) обеспечивают мир большей частью комплектующих для компьютеров и даже готовыми системами – под какими бы торговыми марками последние не продавались.
Результатом был лавинообразный обвал цен. Первый IBM PC-XT стоил более трёх тысяч долларов, а для полноценной работы требовал ещё и доукомплектования на треть этой суммы. Ко второй половине 80-х годов относятся слова Линуса Торвальдса:
Раньше было такое правили, что все компьютеры начального уровня стоили две тысячи.
В первые же 90-е годы порог вхождения в новый дивный мир компьютеров снизился до тысячи баксов. То есть компьютеры не скатились ещё до цены ширпотреба, как ныне. Но все, кому такие машины нужны были «по делу», были в силах приобрести их, причём не только «у них», но и «у нас».
Предпосылка третья: «студенческая операционка»
В числе тех, кому такие машины были действительно нужны, и кто мог, тем или иным путём, ими обзавестись, оказались и студенты, обучавшиеся по специальностям, связанным с Computer Science. Но вот с операционной системой для 32-битных компьютеров у студентов оказалось хуже: FreeBSD ещё не начала своё свободное плавание, а коммерческие UNIX'ы стоили несколько дороже, чем необходимое для их работы «железо». Да и не густо было с ними: на архитектуре i386 были способны работать только SCO UNIX и Xenix – кастрированный UNIX от Microsoft.
И тут в канву нашего сюжета вписывается «игрушечная» ОС MINIX. Она была явлена миру в январе 1987 года Эндрю Таненбаумом (Andrew Stuart Tanenbaum), профессором Университета Врийе, Амстердам, Нидерланды. Где преподавал он ни что иное, как Computer Science, хотя и был по специальности физиком.
Университетское образование в области компьютерных наук в 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 и перечисленными выше книгами. Тут уместно вспомнить проекты Amoeba – разработанную «с нуля» открытую микроядерную распределённую операционную систему, и Globe – распределённую объектную систему, предназначенную для поддержки миллиардов пользователей «в мировом масштабе».
главной разработке Таненбаума, MINIX, судьба также уготовила вторую жизнь. Долгое время она продолжала эволюционное развитие в качестве учебной системы – были выпущены версии MINIX 1.5 (1992 год) и MINIX 2 (1997 год), представлявшие собой «?песочницы» для начинающих юниксоидов. Однако кардинал лелеял коварные замыслы: превратить MINIX в полноценную операционную систему, реализующие его представления о том, какой должна быть современная ОС. А заодно – сделать ее свободной в полном понимании этого слова: ведь «?несвобода» предыдущих версий объяснялась не жадностью профессора, а спецификой издания и распространения.
Результатом явился анонс новой операционки, MINIX 3, который состоялся 24 октября 2005 года. И о которой я расскажу подробнее в главе восьмой.
Герой выходит на сцену
Итак, толчком для написания Линусом собственного ядра послужила 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 характерен более прагматический подход. Их принцип – открытое программное обеспечение следует использовать не потому, что оно открытое, свободное или бесплатное. А потому, что оно просто лучше проприетарного. В том числе – и в следствие публичной экспертизы, реализуемой именно благодаря внедрённому Линусом методу Тома Сойера.
- InterBase Classic Server под Linux
- Каталог BIN в InterBase Classic Server для Linux
- Chapter 16. Commercial products based on Linux, iptables and netfilter
- 1 Введение в Linux
- 4 Файловая система Linux
- 1.2. Что такое Linux?
- 1.5.1. Red Hat Linux
- 1.5.3. SuSE Linux
- 3.6.1. Адресация в Linux
- Фильтрация в Linux
- Реализация семафоров в Linux
- 13.5. Резервирование в Linux