Сейчас 127 заметки.

Краткая история UNIX и Linux. Проект GNU

Материал из ЗАметки
UNIX и Linux


Краткая история UNIX и Linux. Проект GNU

Почему Linux?

  • Гибкость

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

  • Дешевизна

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

  • Простота обслуживания

Сама система и все службы настраиваются путем редактирования конфигурационных файлов. Это обычные текстовые файлы; зная их расположение и формат, вы сможете настроить любой дистрибутив, даже если у вас под рукой нет никаких инструментов, кроме текстового редактора. Кроме того, для облегчения перехода с ОС Windows NT/2000/2003 Server, где сервисы настраиваются в основном через графический интерфейс, создано множество графических конфигураторов, работа с которыми интуитивно понятна и позволяет сосредоточиться на сути выполняемых действий, а не способе их выполнить.

  • Нетребовательность к ресурсам

Системные требования зависят от дистрибутива (конкретной реализации Linux) и версии ядра. Существуют дистрибутивы, специально созданные для корректной работы на старых и «бедных» машинах. Например, для организации интернет-сервера на базе дистрибутива Red Hat версии 5.2 вам вполне хватит компьютера с процессором Intel 80486DX и 32 мегабайтами ОЗУ. А окончательно устаревшую 386 машину, на которой никакая современная ОС Windows не запустится, под управлением Linux можно вернуть в строй в качестве маршрутизатора или брандмауэра.


Все началось с игры В далеком 1965 году начались работы над созданием операционной системой MULTICS (MULTiplexed Information and Computing System) для компьютера GE-645. Инициатором была компания Bell Laboratories (подразделение компании AT&T), а ее помощниками выступали не менее известные организации — General Electric и Массачусетский технологический институт (МТИ).

Процессорное время GE-645 стоило очень дорого, поэтому нужна была система разделения процессорного времени, обеспечивающая высокую скорость обработки данных и их совместное использование. А теперь вспомните процессор Intel 80386. Производительность GE-645 чуть выше, чем у процессора 80386.

Ge645-multics.jpg GE-645

Операционная система Multics была запущена в 1969 году, но она не оправдала возложенных на нее надежд. Поэтому вскоре компания Bell Laboratories прекратила работу над этой системой. Коммерческого успеха эта система не принесла. Правда, МТИ умудрился продать около 80 инсталляций этой системы.

Multics послужила своеобразным толчком для создания новой операционной системы — UNIX. Что же произошло в 1969 году, который считают годом рождения UNIX? Четыре сотрудника Bell Labs, а именно Руд Кенедей (Rudd Canaday), Дуг Мак-Илрой (Doug Mcllroy), Дэннис Ричи (Dennis Ritchie) и Кен Томпсон (Ken Thompson) попытались возродить Multics. Все они ранее работали над проектом Multics и не смогли смириться с таким поворотом событий.

Был разработан проект файловой системы — потом эта файловая система стала файловой системой UNIX. Кен Томпсон написал программы, эмулирующие работу файловой системы и режима подкачки. Получился прототип ядра новой системы. Это ядро было предназначено для GE-645.
А сейчас на арене появляется та самая игра — «Космическое путешествие», симулятор полета, написанный под Multics.

Но после прекращения работы над Multics эту игру оказалось не на чем запускать. Обнаружив в углу лаборатории редко используемую машину PDP-7, Томпсон с Ричи решили переписать игру для нее.


PDP-7



Переносить программу на перфоленте оказалось неудобно, и Томпсон разработал для PDP-7 файловую систему, утилиты для работы с файлами и командную оболочку. Все это писалось на машине GE и переносилось на PDP-7 на перфоленте, но, как только был закончен ассемблер для PDP-7, система встала на собственные ноги. Получилась новая операционная система для компьютера PDP-7, которую назвали, по аналогии с Multics, "UNICS" (UNiplexed Information and Computing Service). Такое название ей дал Питер Нейман (Peter Neumann). Кто же переименовал ее в UNIX, до сих пор не известно.

В то время все программное обеспечение, том числе и операционные системы, писалось на машинно-зависимом языке (ассемблере), то есть если программа, например, написана для компьютера PDP-7, ее нельзя запустить на компьютере с другой архитектурой, например, на GE. Кен Томпсон задался целью сделать универсальную систему, которая могла бы работать на нескольких платформах, то есть создать переносимую, независимую от «железа» операционную систему. Для своей системы он начал разрабатывать язык В, на котором он хотел переписать всю систему. Но «до ума» этот язык довел Дэннис Ричи, обновленная версия языка стала называться С.

О работе над новой операционной системы руководство компании Bell Labs ничего не знало. Они думали, что ведущие программисты работают над системой обработки текстов для AT&T. Действительно, Томпсон написал строковый (не текстовый!) редактор ed, который присутствует до сих пор во всех современных дистрибутивах, а Ричи создал программу roff. Новые разработки понравились компании AT&T, которая была заинтересована в дальнейшем развитии проекта и приобрела новый компьютер — PDP-11. В 1971 году UNIX был полностью переписан: вся система, включая ядро, была написана на языке С, что позволило переносить систему на другие платформы. На ассемблере была написана только та часть ядра, которая была непосредственно связана с «железом».

Очень много новых функций в ядро системы было добавлено всего за один год — с 1971 по 1972. Система заметно «возмужала» по сравнению с 1969 годом. Теперь она действительно стала похожа на операционную систему. Но система не распространялась — ее использовало только одно подразделение AT&T. Первым шагом системы за пределы компании AT&T стала установка системы в компании New York Telephone. Система была установлена на компьютере PDP-11/20, обладавшем аж 56 килобайтами оперативной памяти и двумя жесткими дисками по 2,4 Мб каждый. С этого момента началось распространение системы.

Уже в начале 1973 года насчитывалось 16 инсталляций системы. Это довольно неплохо для времен, когда такую роскошь, как компьютер, могла позволить себе только крупная организация, и то не каждая. Компьютер тогда покупался для решения промышленных задач, а не для набора текста и прослушивания музыки/видео.

Летом 1974 года в журнале «Communications of the ACM» появилась первая статья о UNIX. Ее авторами были Томпсон и Ричи. Они описывали общее устройство UNIX. В той же статье говорилось, что по состоянию на июль 1974 года система была установлена уже на 600 (!) компьютерах. Количество инсталляций за год возросло более чем в 37 раз. Самое интересно, что система развивалась почти при полном отсутствии поддержки со стороны AT&T.

После этой статьи операционной системой UNIX заинтересовались многие научно-исследовательские организации. Но AT&T не имела права заниматься бизнесом, следовательно, система не могла продаваться. Чтобы система все-таки развивалась, Томпсон бесплатно рассылал всем желающим наборы дисков с операционной системой. Такой поворот событий повлек следующую волну развития ОС. Например, студенты Йельского университета разработали командную оболочку (shell), а студенты другого университета создали первую сеть на основе UNIX. В университете Беркли (Калифорния) опять-таки студенты создали огромное количество различных утилит и новую оболочку.

В 1971 году Ричи и Томпсон написали руководство по программированию в UNIX. Версия, которая описывалась в первом издании этого руководства, стала называться VI, далее — V2 и т.д.:

  • 3 ноября 1971 г. (описывалась версия VI)
  • 12 июня 1972 г. (описывалась версия V2)
  • Февраль 1973 г. (V3)
  • Ноябрь 1973 г. (V4)
  • Июнь 1974 г. (V5)
  • Май 1975 г. (V6)
  • Январь 1979 (V7)
  • Февраль 1985 г.
  • Сентябрь 1986 г

Важную роль в развитии UNIX сыграл Калифорнийский университет в Беркли. Как уже было сказано, студенты (точнее, аспиранты) этого университета разработали новую командную оболочку и несколько очень важных утилит, например, текстовый редактор vi (правда, в 1975 году он назывался ех). В том же 1975 году Томпсон написал версию Pascal для UNIX.

Модифицированная в университете Беркли система получила название BSD (Berkeley Software Distribution), который был прародителем FreeBSD. Данная система содержала Pascal и редактор ex (vi). Университет Беркли имел право заниматься коммерческой деятельностью, поэтому первая версия BSD сначала продавалась по цене $50. Всего было продано 30 копий системы. В 1978 году вышла вторая версия BSD — 2BSD. Вторая версия продавалась активнее — было продано 75 копий. Идеи, разработанные в Беркли, позже были использованы в следующей версии UNIX от Bell Labs.

Два года спустя Питер Вэйнер (Peter Weiner) и Гейнц Ликлама (Hienz Lycklama) создали компанию Interactive Systems, которая тоже принялась продавать UNIX. Правда, продавалась она под другим именем — Irdis (это первый клон UNIX).

Нумерация Vn прекратилась в 1979 году — в этом году вышла последняя «настоящая» UNIX — UNIX V7. В ее состав входили компилятор С, программы awk, make, uucp, find, cpio и командная оболочка Bourne (и много других программ). Именно эта система была перенесена Дэннисом Ричии Стивом Джонсоном (оба — сотрудники AT&T) на платформу Interdata, а чуть позже несколько программистов из австралийского университета перенесли ее на платформу Interdata 8. Правда, после переноса на другую платформу немного пострадала производительность системы — за все нужно платить.
Университет Беркли занялся решением этой проблемы и решил ее. В 1982 году вышла версия 2.8.1BSD, которая работала значительно быстрее предшествующей.


UNIX и сеть
В 1980 году агентству DARPA (the Defense Advanced Research Projects Agency) потребовалось увеличить мощность компьютеров, на которых базировалась сеть ARPANET (предок сети Интернет). Ресурсы стареньких PDP-10 были уже полностью исчерпаны, поэтому решено было перейти на более мощные компьютеры — VAX. Но для этих компьютеров нужен был стек протоколов TCP/IP. Реализация TCP/IP от DEC отпала по ряду причин, поэтому агентству DARPA ничего другого не оставалось, как вы брать систему BSD. Данный факт положительно отразился на развитии UNIX — ее выбрали основной системой для интернета.

Благодаря тому, что UNIX сделалась основой интернета, темпы ее развития возросли. В начале 80-х вышло много различных версий UNIX. Выпускали их разные компании, но основными конкурентами были компания AT&T и университет Беркли. Первая выпустила системы Programmer's Workbench (рабочее место программиста) и UNIX System III. Университет Беркли тоже не отставал — с октября 1980 года по сентябрь 1983 года было выпущено 6 версий системы — 4, 4.1, 4.1а, 4.1Ь, 4.1с, 4.2. Последняя версия отличалась высокопроизводительной файловой системой и встроенной поддержкой сети (TCP/IP). До этого сеть в UNIX поддерживалась, мягко говоря, весьма слабо. Но после реализации стека TCP/IP для UNIX все изменилось. В 1983 году большинство подключенных к интернету компьютеров составляли компьютеры VAX с ОС UNIX.


UNIX-войны
Первой компанией, которая сделала UNIX предметом своего бизнеса, была фирма Santa Cruz Operation (SCO), основанная в 1979 году Дугом и Ларри Митчелами (Doug and Larry Michels) как консультационная компания по UNIX. В 1982 году была основана компания Sun Microsystems (одним из основателей которой был Билл Джой), которая установила UNIX от Беркли на аппаратную платформу, разработанную в Стенфорде, и положила начало производству так называемых рабочих станций. В том же 1982 году появилась IRIX от SGI. Sun уже добилась существенных успехов на рынке, когда в 1983 году с корпорации AT&T был снят установленный в 1958 году запрет заниматься компьютерным бизнесом. AT&T стремительно занялась коммерциализацией UNIX версии System V от Bell Labs. В 1983 году вышла также SCO XENIX - первый коммерческий UNIX на Intel-архитектуре. В 1986 году появилась операционная система HP-UX 1.0 (на базе System III) от Hewlett-Packard, в 1990 г. на рынок UNIX-систем вышли IBM с AIX и Apple с A/UX.

Именно появление коммерческих реализаций UNIX привело к тому, что разразились так называемые UNIX-войны. Каждая из фирм в стремлении добиться превосходства на рынке включала в свою систему какие-то особенности, собственные доработки и усовершенствования, иногда даже с прямой целью обособить свою систему от других, представленных на рынке. Фирмы-разработчики в своих усилиях добиться преимущества над конкурентами вносили изменения даже в интерфейс прикладного программирования API (Applications Programmer's Interface), - спецификацию набора функций, которую должны выдержать разработчики программного обеспечения для совместимости своих программ с операционной системой. Это еще больше усиливало несовместимость разных версий UNIX и приводило к несовместимости программного обеспечения, разработанного разными (в том числе независимыми) поставщиками.

Но гораздо худшим следствием войн между разными версиями UNIX было то, что прекратился свободный обмен исходными кодами, который так способствовал быстрому совершенствованию UNIX на ранних этапах ее развития. Не зная другой модели извлечения прибыли из программного обеспечения, кроме сохранения его в тайне и полного контроля над разработкой коммерческого продукта, AT&T жестко запрещала распространение исходных кодов. Угроза подвергнуться юридическому преследованию за незаконное распространение магнитных лент с UNIX мало кого привлекала. Поток новых идей из университетов иссяк.

Чтобы преодолеть эту проблему были предприняты несколько попыток стандартизации UNIX. Три основных проекта стандартизации были SVID (System V Interface Definition), POSIX (первоначально "/usr/group") и X/Open (первоначально BISON).

Первые серъезные усилия по стандартизации версий API, разработанных для System V и Berkeley, были предприняты в 1983 году в рамках стандарта /usr/group. На его основе некоммерческое объединение IEEE (Institute of Electrical and Electronic Engineers, существующее еще с 1884 г.) разработало стандарт POSIX. Первая версия POSIX появилась в 1990 г. Этот стандарт описывает набор системных вызовов, составленный на основе наборов из BSD и SVR3 (System V Release 3). Все более поздние стандарты UNIX включают в свой состав POSIX, и все последующие версии UNIX придерживаются этого стандарта. Единственное большое дополнение, которое позже появилось в ядре UNIX, были сокеты, пришедшие из BSD.

Консорциум X/Open (позже Open Group), созданный в 1984 г., - еще одна попытка достичь совместимости между участвующими в данном проекте реализациями UNIX на уровне исходных кодов. Разработка проекта X/Open началась в Европе, хотя позже к нему присоединились и американские компании (включая AT&T).

В 1988 году AT&T приобрела 20% акций Sun. Эти две компании, лидеры на рынке UNIX-систем, выпустили общую версию системы, которая получила название UNIX System V Release 4. В. Но к этому моменту появилось еще несколько поставщиков UNIX - IBM, DEC, Hewlett Packard и другие. Они начинали работу, как правило, с версии AT&T, приобретенной по лицензии; но затем каждый поставщик добавлял свои уникальные функции с целью обеспечить конкурентное преимущество. Новые поставщики не пожелали мириться с доминированием альянса AT&T/Sun. Они выдвинули лозунг "открытых систем" и создали организацию Open Software Foundation. Ее версия UNIX, OSF/1, появившаяся в 1990 году, предлагалась как стандартная, но была явно нацелена против AT&T и Sun. Последние, в свою очередь, создали другую организацию для разработки стандартного варианта системы - UNIX International.

В 1991 году компания AT&T передала все права на систему UNIX в собственную лабораторию UNIX System Laboratories (USL), которую в 1993 году купила компания Novell. А в 1995 году Novell продала права на систему UNIX компании Santa Cruz Operation (SCO).

Последней версией UNIX, разработанной университетом Беркли, была версия 4.4BSD (июнь 1993). После судебного процесса, затеянного AT&T, университетские разработки системы UNIX были прекращены, и последующее развитие BSD UNIX происходит теперь от компании BSDI (Berkeley Software Design, Inc). Но зато в том же 1993 появилась ОС FreeBSD - свободная от проприетарного кода реализация UNIX.

"Войны юниксов" продолжались до 1993 года. На рынке предлагалось множество систем, несовместимых между собой. Можно было в какой-то мере говорить о двух стандартах, предлагаемых OSF/1 и UNIX International, но между системами этих стандартов о совместимости не могло быть и речи. За это время произошли ключевые события на рынке. Был выпущен процессор Intel 80386; шло активное распространение дешевых PC-совместимых машин, которым суждено было практически полностью вытеснить рабочие станции. Из-за "войн" UNIX-системы в значительной мере упустили свой шанс на рынке.

В 1993 году "войны юниксов" официально закончились. В немалой степени этому способствовал уход с рынка UNIX компании AT&T. Вскоре все поставщики признали важность стандартизации и был разработан достаточно общий стандарт Single UNIX Specification (SUS). UNIX к этому времени прочно занимала позиции на рабочих станциях и сетевых серверах. Особенно сильны были его позиции на компьютерах, построенных на основе RISC-процессоров. Но UNIX-системы не смогли стать основными для массового компьютерного рынка. Операционная система Windows уже полностью доминировала на персональных компьютерах и активно вытесняла рабочие станции с UNIX.


GNU, Free Software и Open Source (gnu.org)
История проекта GNU началась в сентябре 1983 года. Основоположник проекта GNU, Ричард Столлман (Richard M. Stallman) работал в это время в лаборатории искусственного интеллекта Массачусетского Технологического института (Massachusetts Institute for Technology, MIT, in Cambridge, Massachusetts).

Richard Stallman.jpg

Ричард Столлман

Э.Реймонд называет Столлмана одним из самых выдающихся программистов нашего времени. В той среде, к которой принадлежал Р.Столлман, было принято свободно обмениваться программами и их исходными кодами.

В 1982 году для лаборатории искусственного интеллекта была приобретена коммерческая ОС, и Р.Столлман впервые близко столкнулся с ситуацией, когда такой обмен категорически воспрещался. Приобретение коммерческого ПО означало автоматическое заключение "соглашения о неразглашении", которое фактически провозглашало следующее: если вы поделились программой с соседом - вы пират! А когда один из программистов отказался предоставить Столлману исходные коды управляющей программы для принтера (что практически лишало возможности пользоваться этим принтером), Столлман был поставлен перед выбором: либо признать законность соглашений о неразглашении, либо попытаться доказать, что программное обеспечение должно свободно копироваться и модифицироваться, что позволит значительно ускорить процесс его разработки. Ведь лицензия на Unix от AT&T, к примеру, стоила 40 000 долларов. Позволить себе купить ее могли только достаточно крупные фирмы. А без такой лицензии программист не имел права использовать исходные коды системы в своих разработках. Да просто не имел этих исходных кодов! Это препятствовало обмену идеями в сфере программирования и сильно тормозило процесс создания программ, поскольку вместо того, чтобы позаимстовать готовый кусок кода для решения той или иной задачи, разработчик программы был вынужден писать эту часть кода заново.
И Столлман решил изменить это положение вещей в программировании. В 1983 году он объявил о начале разработки проекта GNU, целью которого было создание полностью открытой операционной системы. Первое объявление о начале разработки проекта GNU:

Свободный Unix!

После Дня Благодарения я начинаю писать Unix-совместимую программную систему GNU (Gnu's Not Unix), которую буду предоставлять свободно(1) всем, кто может ее использовать. Нужна помощь в виде времени, денег, программ и оборудования.

GNU будет содержать ядро плюс все утилиты, необходимые для того, чтобы писать и запускать программы на C: редактор, оболочку, компилятор C, линкер, ассемблер и еще несколько вещей. После этого будут добавлены программа форматирования текста, YACC, игра Empire, электронная таблица и сотни других вещей. Мы надеемся включить все, что обычно поставляется с Unix-системами, и все, что еще может оказаться полезным, в том числе онлайновую и печатную документацию.

GNU будет способна запускать программы Unix, но не будет идентична Unix. Мы будем вносить в систему улучшения, основываясь на нашем опыте работы с другими операционными системами...

Полный текст - http://www.gnu.org/gnu/initial-announcement.html

Как писал позже сам Столлман:
"Аббревиатура GNU расшифровывается как "GNU - это не UNIX" (GNU - Not UNIX). Основная идея, заложенная в процесс разработки системы GNU - это" ее полное отличие от UNIX. UNIX всегда была и остается несвободным ПО, то есть она лишает своих пользователей свободы сотрудничества, а также контроля над своими компьютерами. Для того, чтобы стать сообществом, свободно пользующимся своими компьютерами, нам нужна была свободная операционная система. У нас не было достаточной суммы, чтобы выкупить и сделать свободной какую-либо из существовавших систем, но у нас было достаточно знаний и умений, чтобы создать новую. Создание GNU было грандиозной работой. Мы сделали ее во имя нашей свободы, и вашей тоже.

Чтобы МТИ не мог предъявить права собственности на результаты работы и навязать свои условия распространения разработанного ПО, Столлман в январе 1984 года ушел из МТИ и полностью посвятил себя проекту GNU. На первом этапе он поставил перед собой задачу создания многоязыкового, многоплатформенного компилятора. Но, чтобы написать любую программу, надо как минимум иметь текстовый редактор. Поэтому первой программой, созданной в рамках проекта GNU, стал текстовый редактор Emacs. Столлман начал работать над GNU Emacs в сентябре 1984 года, а в начале 1985-го уже имел работоспособную версию. Редактором Emacs заинтересовались другие программисты и это дало Столлману возможность получения небольшого заработка: он стал за 150 долл. отсылать по почте ленту с Emacs любому, кто захотел ее иметь.

В 1985 году Р.Столлман написал свой знаменитый Манифест GNU (он был опубликован в мартовском номере журнала "Dr. Dobb's Journal" за 1985 год) и основал Free Software Foundation (FSF) - благотворительный фонд для разработки свободно распространяемого ПО. Фонд взял на себя распространение лент с Emacs; позже он стал поставлять и другие свободно распространяемые программы (созданные как в рамках Проекта GNU, так и вне его), а также продавать руководства к ним. Это давало средства для разработки проекта GNU. FSF принимал пожертвования, но большая часть доходов всегда поступала от продаж копий свободно распространяемого ПО и связанных с ним услуг.

Разработка свободно распространяемого ПО была очень важным шагом, но еще большей заслугой Р.Столлмана следует признать создание Стандартной Общественной Лицензии GNU (GNU General Public License, или GPL). На русский язык это название разные авторы переводят по разному - Универсальная общественная лицензия, Обобщенная Публичная Лицензия и т.п. Но считается, что юридическую силу имеет только английский вариант (http://www.gnu.org/licenses/gpl.html) этой лицензии. Основная идея GPL состоит в том, что пользователь должен обладать следующими четырьмя правами (или четырьмя свободами):

Правом запускать программу для любых целей (свобода 0).
Правом изучать устройство программы и приспосабливать ее к своим потребностям (свобода 1), что предполагает доступ к исходному коду программы.
Правом распространять программу, имея возможность помочь другим (свобода 2).
Правом улучшать программу и публиковать улучшения, в пользу всего сообщества (свобода 3), что тоже предполагает доступ к исходному коду программы.

Программное обеспечение, распространяемое под этой лицензией, можно как угодно использовать, копировать, дорабатывать, модифицировать, передавать или продавать модифицированные (или немодифицированные) версии другим лицам при условии, что результат такой переработки тоже будет распространяться под лицензией GPL. Последнее условие — самое важное и определяющее в этой лицензии. Оно гарантирует, что результаты усилий разработчиков свободного ПО останутся открытыми и не станут частью какого-либо лицензированного обычным способом продукта. Оно также отличает свободное ПО от ПО, распространяемого бесплатно. Одно из требований этой лицензии состоит в том, что продавая ПО под лицензией GPL, вы должны предоставить исходные коды этого ПО каждому, кто захочет получить к ним доступ. Говоря словами создателей FSF, лицензия GPL "делает ПО свободным и гарантирует, что оно останется свободным".

К 1990 году в рамках проекта GNU было создано большинство компонент, необходимых для функционирования свободной операционой системы. Помимо текстового редактора Emacs, Столлман создал компилятор gcc (GNU C Compiler) и отладчик gdb. Будучи выдающимся программистом, Ричард Столлман в одиночку сумел создать эффективный и надежный компилятор, который превосходит по своим качествам продукты коммерческих поставщиков, создаваемые целыми группами программистов. Поскольку изначально при его создании ставилась задача обеспечения переносимости, сегодня существуют версии этого компилятора практически для всех операционных систем. Позже были созданы компиляторы для других языков программирования, включая C++, Pascal и Fortran. Поэтому сейчас аббревиатура GCC расшифровывается как GNU Compiler Collection.

Сотрудники Free Software Foundation разработали множество других программных пакетов. Из них стоит особо отметить два: библиотеку Си и оболочку shell. Библиотека функций языка Си была разработана сотрудником FSF Роландом Макграсом. Оболочка BASH (Bourne Again Shell), обеспечивающая взаимодействие пользователя с операционной системой, создана еще одним сотрудником FSF Брайаном Фоксом.

Как пишет Р.Столлман "К 1990 году система GNU была практически закончена; не хватало только одного из базовых компонентов - ядра." Ожидалось, что ядро (оно получило название HURD) будет реализовано как набор серверных процессов, работающих на Mach - микроядре, создаваемом в университете Карнеги-Меллона, а затем в университете штата Юта. Начало разработки откладывалось в ожидании выпуска Mach, которое, как было обещано, будет выпущено в виде свободно распространяемого программного обеспечения. Но его появление все откладывалось, и тут появилось ядро, разработанное финским студентом Линусом Торвальдсом, и получившее название Linux.


Линус Торвальдс Линус Бенедикт Торвальдс (Linus Benedict Torvalds) родился 28 декабря 1969 года в г. Хельсинки, Финляндия. Первым компьютером Линуса был Commodore VIC-20, который купил его дед Лео Вальдемар Тёрнквист. Лео Вальдемар был профессором в Университете Хельсинки. На «Коммодоре» Линус написал первую программу «Hello, World!". За 4 года (компьютер был куплен в 1981 году) Линус выжал из него все, что мог, поэтому он стал копить деньги на новый компьютер. Основным источником его доходов в то время были школьные стипендии. В 1987 году он купил компьютер Sinclair QL. Это был очень мощный на то время компьютер. На Sinclair QL был установлен 32-разрядный процессор Motorola 68008 и 128 Кб оперативной памяти. Это было очень много: для сравнения, на «Коммодоре» было установлено всего 3,5 Кб. На новом компьютере была установлена операционная система Q-DOS. За четыре года Линус основательно освоил компьютер и заинтересовался работой операционной системы.

В своей книге «Just for fun» он пишет: «Операционками я заинтересовался так: купил флоппи-контроллер, но к нему прилагался такой поганый драйвер, что пришлось написать новый. Пока писал — обнаружил проколы в самой операционной системе или, по крайней мере, несоответствие между тем, что обещала документация, и тем, что реально происходило. Я с этим столкнулся, когда моя программа отказалась работать.»

Sinclair QL «прожил» у Линуса 3 года — на год меньше, чем его предшественник. За эти три года Линус написал собственный ассемблер, текстовый редактор и несколько компьютерных игр.

После школы Линус поступил в Хельсинский университет на факультет компьютерных наук. На первом курсе ему немного не повезло — он вынужден был пойти служить в армию и прослужил там 11 месяцев. После возвращения из армии он продолжил учебу в университете. На втором курсе он прочитал книгу Таненбаума (основателя Minix), посвященную операционным системам. Потом Линус писал: «Как только я прочел предисловие, познакомился с концепцией UNIX и узнал, на что способна эта мощная, строгая и красивая операционная система, я захотел купить такой компьютер, на котором сможет работать UNIX. Я решил, что поставлю себе Minix — единственную по-настоящему полезную из известных мне версий.»

В январе 1991 года Линус приобрел в кредит компьютер на базе процессора Intel 80386@33Mhz с 4 мегабайтами оперативной памяти. На компьютер была установлена операционная система Minix. Но установленная система не совсем оправдала его ожидания. Больше всего ему не нравилась программа эмуляции терминала, которая была для него просто необходима — ведь с ее помощью он подключался к университетскому MicroVAX'y. Линус писал: «Беда была в том, что я хотел скачивать и закачивать файлы. То есть мне нужно было уметь писать на диск. Для этого моей программе эмуляции нужен был драйвер дисковода. А еще ей был нужен драйвер файловой системы, чтобы она могла вникать в организацию диска и записывать скачиваемые файлы. ...разработка драйверов для дисковода и файловой системы казалась интересным делом. И я решил им заняться. Написал драйвер дисковода. А поскольку я хотел записывать файлы в файловую систему Minix, к тому же эта система была хорошо документирована, я сделал свою файловую систему совместимой с системой Minix. Таким образом, я мог читать файлы, созданные в Minix, и писать файлы на тот же диск, так что Minix могла читать файлы, созданные моей программой эмуляции терминала».

Линусу ничего другого не оставалось, как написать собственную программу эмуляции терминала.

Кроме отвратительной терминальной программы Линусу не нравилось то, что в Minix нельзя было перевести текущую программу в фоновый режим.
После написания своей программы эмуляции терминала Линус фактически взялся за написание своей операционной системы.

Сначала он принялся писать различные системные вызовы, но эта работа ему быстро надоела — ведь заранее нельзя знать ,что именно тебе понадобится. Поэтому он взял оболочку Bourne Again Shell (bash) и попытался запустить ее на своей системе методом научного «тыка» (в математике этот метод называется методом Коши). Он запускал оболочку, она требовала какой-то системный вызов и завершала свою работу с ошибкой.

Линус анализировал, какой вызов был нужен оболочке, и реализовывал его. В 1991 году оболочка все-таки запустилась. 25 августа Линус написал в группу новостей comp.os.minix первое сообщение о создании новой операционной системы. Сохранился даже оригинал этого сообщения:

From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: сотр.os.minix
Subject: ЧТ О вам не хватает в minix?
Summary: небольшой опрос для новой операционной системы
Message-ID: <1991Aug25.2 057 08.9541@klaava.Helsinki.FI>
Date: 25 Aug 91 20:57:08 GMT
Organization: Университет Хельсинки

Привет всем пользователям minix
Я разрабатываю (бесплатную) операционную систему (это просто хобби, ничего «огромного» и профессионального вроде GNU) для чипов 386(486) AT.. Я пишу ее начиная с апреля и похоже, что скоро она будет готова. Мне очень важно узнать, что вам нравится/не нравится в minix, потому что моя ОС напоминает minix (та же самая файловая система (из практических соображений) и много еще чего).
На данный момент я перенес в нее bash(1.08) и дсс(1.40), вроде бы они работают. Похоже, что через несколько месяцев все будет готово и я хотел бы знать, какие функции вам нужны. Принимаются любые заявки, но их выполнение я не гарантирую :-)
Linus (torvalds@kruuna.helsinki.fi)
PS. Система свободна от кода minix и обладает многопотоковой файловой системой. Она не переносима (поскольку использует переключение задач 3 86 и др.) и возможно никогда не будет поддерживать ничего, кроме АТ- винчестеров, поскольку кроме них у меня ничего нет :-(
.

Линусу помогало много энтузистов, но на первых порах особенно важен вклад следующих добровольцев:

  • Вернер Альмесбергер (Werner Almesberger) — разработал драйверы FDD и загрузчик Linux — LILO (Linux LOader);
  • Теодор Тсо (Theodore Ts'o) — создал файловую систему ext2, библиотеки, распределитель памяти ядра;
  • Дональд Беккер (Donald Becker) — занимался разработкой сетевых драйверов;
  • Олаф Кирч (Olaf Kirch) — написал руководство по сетевому администрированию Linux;
  • Питер Мак-Дональд (Peter McDonald) — разработал поддержку загружаемых модулей в версии 0.99. Правда, в современных версиях ядра этот механизм полностью переделан;
  • Пол Гортмейкер (Paul Gortmaker) — разработал драйвер RTC (Real Time Clock), несколько сетевых драйверов (в т.ч. NE-2000), написал документы «Linux Ethernet HOWTO» и «Boot-Prompt HOWTO».


Путь к первой версии (1.0)


Нумерация версий Linux началась с 0.01, и путь к стабильной версии 1.0 занял почти три года.

Версия Дата выхода Особенности версии
0.01 17.09.1991 Только ядро, включающее драйвер диска и несколько драйверов устройств. Программ не было. Практически система использоваться не могла.
0.03 26.10.1991 В системе уже запускалась командная оболочка и компилятор С. Систему уже можно было использовать и писать в ней новые программы.
0.10 08.12.1991 г Система поддерживала АТ-жесткий диск. Программы login не было — после загрузки ядра сразу загружалась оболочка bash.
0.11 21.12.1991 г Уже что-то. Эта версия поддерживала FDD, многонациональные клавиатуры, мониторы VGA, EGA, Hercules. Самое главное, что системой начали пользоваться — ее загрузили и установили несколько человек.
0.12 05.01.1992 г Появилась подкачка — свопинг оперативной памяти на диск. Систему скачало несколько сотен человек. Это первая версия системы, которая распространялась по лицензии GPL.
0.96 10.04.1992 г Скачок нумерации был в связи с приближением к стабильной версии. Данная версия позволяла запускать систему X Window — у Linux появился графический интерфейс.
0.99.14 14.12.1993 г Появилась подкачка — свопинг оперативной памяти на диск. Систему скачало несколько сотен человек. Это первая версия системы, которая распространялась по лицензии GPL.
1.0 16.04.1994 г Первая версия! С момента выхода версии 0.01 прошло 2 года и 7месяцев.

467876dfhte4.png

Linux быстро превратился из инициативы энтузиаста-одиночки во всемирный проект, в котором участвуют тысячи разработчиков. Одним из важнейших решений в судьбе Linux стало принятие лицензии GNU General Public License (GPL). GPL защитила ядро Linux от коммерческой эксплуатации и одновременно открыла путь к использованию разработок сообщества пользователей проекта GNU, объемы кода которого значительно превосходят даже объем ядра Linux.