Введение в POSIX'ивизм

       

Увертюра Линуса


Как было сказано ранее, Unix в разных его проявлениях получил широкое распространение в университетах всего мира. Более того, он стал основой базового академического образования в области Computer Sciences (и не только - Unix'у кое-где учат и студентов-геологов). И потому возникла необходимость в соответствующих учебных пособиях, каковые и появились во множестве.

Однако обучать операционной системе без самой системы - штука столь же сложная, как и учить плаванию посреди пустыни Кызыл-Кум. Система же Unix (даже в берклианском своем варианте) оставалась отнюдь не общедоступной - а) вследствие ограничений на распространение, б) привязки большинства вариантов к дорогим аппаратным платформам, и в) наконец, просто своей сложности.

Это противоречие разрешил Энди Танненбаум, профессор Амстердамского университета, написав "пионерский" вариант Unix - ОС Minix, предназначенную исключительно для образовательных целей. И распространял ее в виде набора дискет вместе со своим учебником по теории операционных систем.

По свидетельству очевидцев, в Minix все было как в настоящем Unix, за одним исключением - она была неспособна к выполнению реальных пользовательских задач. Многие особенности Unix в ней не были реализованы сознательно - Танненбаум полагал их слишком сложными для неокрепших студенческих умов.

Довольно быстро сложилось сообщество пользователей Minix, которых такое положение дел не устраивало. И система начала обрастать всякого рода доработками (патчами), превращавшими ее в среду для реального использования. Однако распространять такую модернизированную систему было нельзя - Minix не являлась Free Software в собственном смысле этого слова. Каждый пользователь должен был приобретать книгу Танненбаума, получая в придачу ОС, и в индивидуальном порядке накладывать на нее патчи.

Именно таким образом поступил в 1990 г. некий студент университета Хельсинки - Линус Торвальдс, - когда ему захотелось поизучать внутреннее устройство процессора своей новой машины (i386) и одновременно приобщиться к Unix, которую он изучал в своем ВУЗе: купил книгу Танненбаума вместе с Minix, скачал и установил соответствующие патчи.


Далее ему потребовался терминальный доступ к университетской машине, чтобы выходить в Сеть, не выходя из дома (как я его понимаю...). В Minix штатно подходящей программы не обнаружилось, и Линусу пришлось сочинить ее. Однако под управлением ядра Minix она работала плохо - так что волей-неволей потребовалось новое ядро. Его нужно было куда-то размещать - так родилась новая файловая система, ext (то есть Extended - расширение для файловой системы Minix). Для запуска терминальной программы не худо было иметь какую-то среду - для этой цели Линус портировал на свое ядро командную оболочку bash, разработанную в недрах проекта GNU. Ну и все это хозяйство требовалось чем-то собирать - не перезагружаться же обратно в Minix каждый раз, как потребуется внести коррективы в исходники. Так что к bash пришлось присоединить еще и единственный свободный из наличных компиляторов Си - GNU C Compiler (известный как gcc). А итогом всего этого явилось объявление в августе 1991 г. о создании новой операционной системы. Видите, как все просто?

Новая ОС получила название Linux - в определенной степени случайно: так именовался домашний каталог Линуса на том ftp-сервере, на котором она впервые была выложена для свободного доступа. Сначала - под лицензией, сочиненной Торвальдсом собственноручно. Однако вскоре, не собираясь особо заморачиваться юридическим крючкотворством, с одной стороны, но желая оградить свое творение от враждебных посягательств - с другой, он изменил лицензию на GPL, под которой распространялись такие важные ее компоненты, как bash и gcc.

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

Во-первых, следует подчеркнуть, что Линус не занимался адаптацией Minix (или какого-либо иного варианта Unix): в своей работе он руководствовался описаниями системных вызовов, данными в соответствующем стандарте POSIX, не привязанными к какой-либо конкретной реализации.


В результате Linux не является чистым клоном Unix: ее можно считать первой настоящей POSIX-системой в полном смысле этого слова. А черты ее сходства с какими-либо вариантами System V или BSD обусловлены только тем, насколько полно все они воплощают соответствующие стандарты.

Во-вторых, Linux создавался на машине с процессором i386 для архитектуры Intel и первоначально - только для нее. Более того, Линус вообще сомневался, что его система когда-либо сможет быть портирована на любую иную аппаратную платформу. И потому соответствие стандартам в данном случае преследовало целью не переносимость Linux самого по себе, а в первую очередь возможность компиляции в этой ОС всего ранее созданного программного ассортимента для Unix и POSIX-совместимых систем вообще.

В этой связи можно только порадоваться интуиции Линуса: если во время создания его системы стоял вопрос о возможности сборки сторонних программ в ней, то ныне более актуальна задача переноса Linux-софта на другие Unix-подобные платформы.

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

Ранее свободное программное обеспечение создавалось либо в рамках университетских проектов при правительственном финансировании, либо энтузиастами-одиночками, либо камерно организованными группами таких энтузиастов. Что было причиной их заведомо нестабильного состояния: прекращение госфинансирования, утрата интереса со стороны разработчиков и масса прочих привходящих факторов в любой момент могли если не остановить такой проект, то по крайней мере заморозить его на долгое время.

Линус же обеспечил своему проекту, помимо практического бессмертия, еще и непрерывность развития.


Выложив свою систему в открытый доступ, он, кроме того, предложил всем желающим (и, конечно же, могущим) принять участие в ее дальнейшем совершенствовании. В том числе (и в первую очередь) тех ее фрагментов, которые его лично мало интересовали (касающихся пользовательских приложений). А соответствие системы стандартам гарантировало, что такой призыв встретит понимание со стороны многочисленных Unix-программистов - ведь в любом случае их усилия не пропали бы даром и могли быть использованы в любой иной POSIX-совместимой системе...

В результате деятельности аморфного, неорганизованного, "базарного" коллектива разработчиков, не имеющих первоначально никаких источников финансирования, ядро Linux очень быстро обросло такими функциями, как поддержка сетей, протокола TCP/IP, оконной системы X, на нее были портированы все аналоги классических Unix-утилит и приложений, созданные как в рамках проекта GNU, так и независимыми разработчиками. А затем настал черед и чисто пользовательских приложений, в том числе офисных, графических и мультимедийных. Следствием чего было привлечение не только новых разработчиков, но и конечных пользователей.

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


Содержание раздела