Linux: предыстория в тезисах

Данный цикл статей посвящен развитию Linux в целом и российского Linux в частности - от SLS и до наших дней

[Алексей Федорчук (alv@posix.ru)]

Вступление

Linux и, шире свободные POSIX-совместимые операционки вообще — явление общечеловеческой культуры. И не случайно история этого феномена вот уже без малого полтора десятка лет привлекает внимание как читателей, так и, соответственно, писателей околокопьютерной литературы.

Фактографическая сторона истории Linux недавно была почти с исчерпывающей полнотой описана Виктором Костроминым (http://linuxcenter.ru/lib/history/lh-00.phtml), включая многочисленные ссылки на источники. Только что переведенная книга Эрика Реймонда (Искусство программирования для Unix) содержит массу сведений о предыстории Linux и движения Open Source. Наконец, в книге Линуса Торвальдса история созданной им операционной системы дана, что называется, из первых рук.

Некоторое внимание этим вопросам уделял и автор этих строк (наиболее подробно — в книге Введение в POSIX'ивизм, готовится к печати издательством БХВ-Петербург, доступна предварительная онлайновая версия — http://www.linuxcenter.ru/lib/books/posixbook). И, тем не менее, я хотел бы еще раз вернуться к исторической теме, в тезисной форме изложив концептуальную ее сторону.

В истоках Linux лежит четыре тесно переплетающихся, но исторически независимых явления:

  1. академическая и университетская Computer Science;
  2. сеть ARPANET и пришедший ей на смену массовый Интернет;
  3. корпоративный Unix и деятельность организаций по его стандартизации;
  4. движение Open Source Software и его частное проявление — Free Software.

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

Академические корни

История академической Computer Science уходит в начало 60-х, время появления первых компьютеров, способных к интерактивной работе (хотя далеко еще не персоналок). А место ее зарождения — крупнейшие американские университеты — Массачусетский Технологический Институт (MIT), Йель, Университет Карнеги-Меллона, Стэнфорд, Университет Беркли, Калифорния. Историческим центром этого движения долгое время была лаборатория искусственного интеллекта MIT (MIT AI). В недрах ее родился, судя по всем свидетельствам, и термин "хакер" — так называли друг друга те, кто способен был "врубиться" в компьютерные науки (существуют и другие версии происхождения этого термина, но эта мне нравится больше всех).

Сетевые связи

Сеть ARPANET (как и сменившая ее позднее сеть Интернет) в тех же далеких 60-х задумывалась как система отказоустойчивой правительственной связи на случай советского ядерного удара. Однако она оказалась неразрывно связанной с академическими организациями — кроме университетских хакеров, разрабатывать и поддерживать ее было некому. А они не только ковали электронный щит ихней Родины, но и воспользовались случаем для налаживания бесперебойной связи между собой (точнее, между своими Alma mater), создав сообщество ARPANET — прообраз грядущего Интернет-сообщества. Позднее традиция эта была продолжена университетом Беркли, где был разработан протокол TCP/IP, легший в основу современного Интернета.

Корпоративные всходы

Unix вышел из корпоративных недр компании AT&T, сотрудниками которой являлись его создатели. Однако это ни в коей мере не была корпоративная разработка — Кен Томпсон и Деннис Ричи разрабатывали ее для собственных потребностей — это был первый в истории IT пример создания "системы для себя" — в противоположность, например, VAX/VMS от фирмы DEC, которая претендовала на звание "системы для всех" Правда, "все" в данном случае охватывало весьма узкий круг, даже не столько лиц, сколько организаций. Но остается фактом, что VAX/VMS разрабатывался не для личного использования — это наложило отпечаток не только на него, но и предопределило судьбу прямого потомка — Windows NT/2000/XP. С этой антитезой — "для себя" и "для всех", — мы будем сталкиваться в дальнейшем при рассмотрении всей истории Linux-дистрибуции.

Разумеется, материнская корпорация постаралась пристроить к делу создание своих сотрудников (в частности, Unix с его инструментарием использовался в AT&T для подготовки документации), но, в силу юридических коллизий того времени, не могла сделать из него коммерческий продукт. И потому исходники Unix начали распространяться в университетах — как это называлось, в образовательных целях.

Выйдя за стены Bell Labs, Unix зажил самостоятельной жизнью, крепко окопавшись в той же академической среде, центром которой в данном случае оказался Университет Беркли. Именно он поддержал традицию "систем для себя", воплотившуюся позднее в операционках семейства BSD.

Другой опорой Unix стали производители оборудования, такие, как Sun, а вслед за ним IBM, DEC, HP, распространявшие вместе со своими серверами и рабочими станциями собственные его варианты, адаптированные под наличное "железо".

Третий способ распространения изобрели компании Santa Cruz Operations и — кто бы мог подумать? — Microsoft, предложившие первые пробы Unix как общедоступного программного продукта — для демократической платформы i386.

В результате Unix, разрабатывавшийся изначально в качестве универсальной кросс-платформенной системы, разделился на множество вариантов, начавших утрачивать совместимость между собой. Для восстановления status quo заинтересованные организации занялись разработкой стандартов, призванных вернуть Unix утраченное единство. Наибольшее признание из них получил стандарт POSIX (произносится — пазикс с долгим а) — Portable Operation System Interface based on uniX, разработанный международной организацией под названием IEEE (Institute of Electrical and Electronics Engineers, Inc.), крестным отцом которого стал Ричард Столлмен, о котором скоро пойдет речь. То есть было принято, что любая операционная система, претендующая на звание Unix (или Unix-совместимой), должна соответствовать соглашениям, описанным в основополагающих документах стандарта (найти их можно здесь: http://www.opengroup.org/austin/papers/backgrounder.html.

Движение Open Source Software

Движение Open Source зародилось в тех же академических кругах Computer Science. Собственно, первоначально никакого движения не было — а была лишь обычная, принятая в науке, практика свободного обмена результатами своей работы. Благо ARPANET, а затем и Интернет предоставил к тому практически неограниченные возможности.

О каком-то оформлении прототипа движения Open Source можно говорить с тех пор, как Университет Беркли получил исходные тексты Unix и, в учебных целях, занялся их усовершенствованием, распространяя результаты своих работ (BSD — Berkley Software Distributions) открыто (то есть с доступом к исходным текстам) и свободно (то есть без ограничений на дальнейшую модификацию и распространение), под лицензией, которая получила имя лицензии BSD.

Поскольку усовершенствования были очень существенными (достаточно сказать, что файловая система с поддержкой длинных имен и интеграция TCP/IP — заслуга именно берклианцев), результатом этого было расщепление Unix на две ветви — проприетарную Unix от AT&T, за которой со временем закрепилось название System V, и BSD Unix, распространявшуюся свободно.

Ветви эти сосуществовали мирно, подобно капиталистической и социалистической общественным системам. Однако лишь до поры, до времени  — пока не появилась юридическая возможность коммерческого распространения Unix, само это слово (в форме UNIX) не стало торговой маркой, соответствие которой должно сертифицироваться, — короче говоря, пока не запахло "баблом". И вот тут-то формальные правообладатели UNIX вспомнили, что в составе BSD-системы имеется некоторое количество кода, являющегося их "интеллектуальной собственностью", и затеяли судебный процесс против Университета Беркли.

Процесс этот длился достаточно долго, и в начале 90-х годов завершился вполне благополучно: куски проприетарного кода из BSD были заменены оригинальными разработками — к слову сказать, без ущерба для системы. Кроме потери темпа разработки, что оказалось существенным для нашей истории — ведь именно в это время возник и начал распространяться Linux. И в итоге свободные BSD-клоны (NetBSD и FreeBSD) оказались не первыми...

А тем временем (начало 80-х) Ричард М. Столлмен, сотрудник той самой MIT AI (в миру он более известен как RMS), боролся с прикручиванием принтера от HP к своей системе. И боролся безуспешно — поскольку товарищи от Хьюлетта и Паккарда отказались предоставить ему исходники на свое firmware. Что привело Столлмена к убеждению — закрытие исходников суть тормоз прогресса, и все программное обеспечение должно быть свободным.

Сказано — сделано. И к 1984 году RMS создает Фонд свободного программного обеспечения (FSF — Free Software Foundation), начинает проект GNU — воспроизведение функциональности Unix "с чистого листа", но в свободном исполнении, а главное — формулирует принципы Free Software: свобода использования, свобода изучения и модификации, свобода распространения.

Знакомый велосипед, не правда ли? Да, именно на таких условиях распространялись результаты работ сообщества Computer Science (как, впрочем, и любого иного научного сообщества). Новым в принципах RMS, нашедшим свое выражение в разработанной под его руководством (и с участием профессиональных юристов) лицензии GPL (General Public License), было только одно: любая программа, использующая код, защищаемый GPL, должна распространяться на тех же условиях — то есть быть открытой и свободной, ныне, присно и во веки веков...

В рамках проекта GNU (что расшифровывается просто — GNU is not UNIX) были разработаны функциональные аналоги всех классических UNIX-программ, включая главный компонент — компилятор языка Си (gcc — GNU C Compiler).

Маленькое отступление: современным поколением линуксоидов RMS воспринимается в первую очередь как харизматический лидер движения Free Software. И это действительно так: силою убеждения он обратил в свою веру больше людей, чем пророк Мухаммед до хиджры (да и после нее). Однако при этом часто забывают, что изначально RMS был просто хорошим программером, на счету которого — и emacs, отношение к которому может быть неоднозначным, и, главное, тот самый gcc, без которого дальнейшее развитие Open Source было бы невозможным. И, что характерно, не поленившимся детально документировать свои творения: написанные им (сотоварищи) руководства по Emacs (книга издана в русском переводе) и gcc (русский перевод доступен в Сети) до сих пор являются основными источниками информации по этим программам.

Однако вернемся к основной сюжетной линии. Участники проекта GNU, работавшие первоначально на чистом энтузиазме, за считанные годы воссоздали все системное окружение полноценной ОС. За одним единственным исключением — ядра: разрабатывавшийся в качестве такового микроядерный HURD так и не стал работоспособным за все время существования проекта (забегая вперед, замечу: и по сей день). И тут наступил звездный час Линуса Торвальдса.

Линус Торвальдс и его ядро

Историю о том, как программа терминального доступа к удаленной университетской машине на протяжении 1991 года постепенно превратилась в полноценную ОС, не описывал только ленивый. Известна она и в версии от создателя — самого Линуса Торвальдса. Так что пересказывать ее в очередной раз я не буду. А подчеркну лишь те моменты, которые мне кажутся наиболее существенными. И которые, как мне кажется, вытекают из всего написанного ранее.

Как известно, толчком для написания Линусом собственного ядра послужила MINIX — операционка, сочиненная Энди Танненбаумом специально для обучения студнетов UNIX'у и, в силу этого, принципиально ограниченная функционально. Однако Линус не занимался "доведением MINIX до ума". Не использовал он также и код какой-либо из реализаций Unix или BSD. Он воссоздал функциональность ядра Unix с нуля — руководствуясь описаниями системных вызовов, данными в соответствующем стандарте POSIX. И потому Linux не является клоном ни System V, ни BSD — хотя в ней и использована схема инициализации в стиле первой, да и идейное влияние второй, безусловно, имело место.

Лично Линусу принадлежит честь разработки ядра Linux и файловой системы ext (то есть Extended — расширение для файловой системы Minix), как и сменившей ее впоследствии ext2. В качестве среды для работы он выбрал bash — командную оболочку, разрабатываемую в рамках проекта GNU. А для сборки своего кода использовал тот самый gcc, о котором только что говорилось, а главной общесистемной библиотекой функций языка Си выступала GNU-реализация ее, glibc. Все прочее системное окружение ядра (комплекс пакетов, который можно назвать Base Linux) также имеет в основном GNU'тое происхождение. Да и при выборе политики распространения Линус в конце концов остановился на лицензии GPL — порождении RMS и FSF. На основании чего часто полагают, что ОС Linux должна на самом деле именоваться GNU/Linux. Правильно ли это?

По моему скромному мнению, нет. Конечно, роль GNU'того софта Linux преуменьшить нельзя. Однако не проект GNU ухватился за столь недостающее ему ядро. Напротив, это Линус для обеспечения работы своего ядра использовал отдельные компоненты из GNU-арсенала. В полном, к слову сказать, соответствии с духом и буквой GPL и движения FSF.

При этом неотъемлемой чертой Base Linux является альтернативность его комплектации — почти любой компонент (кроме, разве что, gcc), может быть заменен на аналогичный, не имеющий отношение к проекту GNU и FSF. ОС Linux — не только (а может быть, и не столько) ядро и набор базовых программ. Это, на мой взгляд, в первую очередь алгоритм для построения такого набора. Видимо, именно этим он и привлекает определенную категорию пользователей — возможностью соучастия в построении основы основ системы. И создание такого алгоритма — второе, после написания кода ядра, великое достижение Линуса.

И, наконец, Линус оказался создателем уникального метода разработки масштабных проектов Open Source, того самого, который Эрик Раймонд позднее назовет методом большого базара. Впрочем, справедливости ради следует отметить, что и в данном случае изобретался велосипед — аналогичный способ привлечения дармовой рабочей силы использовал Том Сойер в своих "Приключениях". Однако, если инструментами Тома были сердцевина от яблока и крыса с привязанной к хвосту веревкой, то орудием Линуса оказался Интернет.

Вот так и сплелись воедино все четыре линии, о которых шла речь раньше. В следующей статье мы рассмотрим, как, в историческом аспекте, распространялся Linux.

Дальше


Впоросы истории Unix, Linux и Open source, затронутые в настоящих заметках, можно обсудить на форуме posix.ru в специальной теме: http://forum.posix.ru/viewtopic.php?id=111

[ опубликовано 10/02/2006 ]

Алексей Федорчук (alv@posix.ru) - Linux: предыстория в тезисах   Версия для печати