Свободная система для свободных людей
(обзор истории операционной системы Linux)
(С) Костромин В.А., март 2005 г.
Рождение новой операционной системы
Студент из Хельсинки Линус Торвальдс
Рис. 8. Линус Торвальдс.
Линус Бенедикт Торвальдс ( Linus Benedict Torvalds ) родился 28 декабря 1969 года. Его дед по материнской линии, Лео Вальдемар Тёрнквист был профессором статистики в Университете Хельсинки. В 1981 он купил компьютер Commodore VIC-20. Это был первый компьютер, к которому Линус получил доступ — он помогал деду набивать программы, которые профессор старательно писал на бумаге, потому что не привык делать это непосредственно за компьютером. На этом же компьютере Линус написал свою первую программу — это была традиционная «Hello, World!». Когда дед умер, компьютер достался Линусу. Следующие 4 года он провел за компьютером. Когда он выжал из VIC-20 все, что смог, он стал копить деньги на модель следующего поколения. Основным источником средств на покупку компьютера были школьные стипендии, которые Линус ежегодно получал как лучший математик. В 1987 году он купил Sinclair QL. В этом компьютере был установлен 32-разрядный процессорный чип 68008 компании Motorola с частотой 8 мегагерц. Sinclair имел 128 килобайт (не мегабайт!) памяти, что по тем временам было очень много для домашнего компьютера. У VIC-20, на смену которому он пришел, было всего три с половиной килобайта. В качестве операционной системы использовалась Q-DOS.
Именно в это время Торвальдс заинтересовался работой операционной системы. Как он пишет сам в книге «Just for fun»: «Операционками я заинтересовался так: купил флоппи-контроллер, . но к нему прилагался такой поганый драйвер, что пришлось написать новый. Пока писал — обнаружил проколы в самой операционной системе или по крайней мере несоответствие между тем, что обещала документация, и тем, что реально происходило. Я с этим столкнулся, когда моя программа отказалась работать.»
На Sinclair QL Торвальдс работал 3 года. За это время он написал собственный редактор и ассемблер, запрограммировал несколько игр. По окончании школы он поступил на отделение компьютерных наук университета г.Хельсинки, столицы Финляндии. После окончания первого курса Торвальдс был вынужден был пойти в армию, где прослужил 11 месяцев. По возвращении из армии он снова вернулся в университет, выбрал себе курсы на осень и с нетерпением ждал лекций по языку Си и системе Unix. В предвкушении этих лекций еще летом он купил книгу «Проектирование и реализация операционных систем» Эндрю С. Таненбаума, в которой описывалась операционная система Minix. В своих воспоминаниях Линус пишет: «Как только я прочел предисловие, познакомился с концепцией Unix и узнал, на что способна эта мощная, строгая и красивая операционная система, я захотел купить такой компьютер, на котором сможет работать Unix. Я решил, что поставлю себе Minix — единственную по-настоящему полезную из известных мне версий.»
Начало
2 января 1991 года Линус приобрел в рассрочку новый компьютер, на основе процессора Intel 80386 с 4 мегабайтами ОЗУ и тактовой частотой 33 мегагерца. Он установил на него Minix, которую пришлось заказывать отдельно. Она поставлялась на 16-ти дискетах. Примерно за месяц Торвальдс обжился в системе полностью и у него возникло множество претензий к этой ОС, несмотря на то, что установил в систему усовершенствования, сделанные австралийским хакером Брюсом Эвансом (это был царь и бог Minix 386). Хуже всего была эмуляция терминала, очень важная для Торвальдса программа, потому что именно ее он использовал для подключения к университетскому компьютеру MicroVAX, на котором стояла Ultrix — вариант Unix, созданный корпорацией Digital Equipment. Пришлось писать собственную программу эмуляции.
Когда программа эмуляции терминала заработала, возникла новая проблема. Как пишет Торвальдс «Беда была в том, что я хотел скачивать и закачивать файлы. То есть мне нужно было уметь писать на диск. Для этого моей программе эмуляции нужен был драйвер дисковода. А еще ей был нужен драйвер файловой системы, чтобы она могла вникать в организацию диска и записывать скачиваемые файлы. . разработка драйверов для дисковода и файловой системы казалась интересным делом. И я решил им заняться. Написал драйвер дисковода. А поскольку я хотел записывать файлы в файловую систему Minix, да к тому же эта система была хорошо документирована, я сделал свою файловую систему совместимой с системой Minix. Таким образом я мог читать файлы, созданные в Minix, и писать файлы на тот же диск, так что Minix могла читать файлы, созданные моей программой эмуляции терминала.»
В Minix не только была плохая эмуляция терминала, но и не было возможности перевести в фоновый режим программу, которой временно не пользуешься. И тут Торвальдс уже практически взялся за создание собственной операционной системы. Вначале он пытался просто программировать один за другим системные вызовы. Но их около двухсот и эта работа скоро наскучила. Тогда он изменил подход. Он взял оболочку bash, которая свободно распространялась в Интернет, и начал пытаться заставить ядро своей ОС запустить ее. Когда на этапе загрузки или запуска оболочка обращалась к какому-то системному вызову, происходил сбой. Тогда Линус реализовывал необходимый системный вызов и повторял попытку. Наконец, в конце августа или начале сентября 1991 года, оболочка заработала. Это был очень важный момент. Как только оболочка заработала, удалось откомпилировать еще несколько программ. Оболочка была сложнее, чем, к примеру, программа копирования ср или команда выдачи листинга каталогов ls. В какой-то момент готовых компонент оказалось столько, что настал момент, когда можно было сказать, что заложены основы новой операционной системы.
25 августа 1991 года Линус Торвальдс направил первое сообщение о своей разработке в группу новостей comp.os.minix (смотри листинг 2).
Листинг 2. Объявление Л.Торвальдса о начале разработки его операционной системы.
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Message-ID:
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki
Hello everybody out there using minix —
I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I’d like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).
I’ve currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I’ll get something practical within a few months, and I’d like to know what features most people would want. Any suggestions are welcome, but I won’t promise I’ll implement them 🙂
PS. Yes — it’s free of any minix code, and it has a multi-threaded fs. It is NOT protable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that’s all I have :-(.
From: torvaldsSklaava.Helsinki.Fi (Linus Benedict Torvalds)
To: Newsgroups: comp.os.inix
Subject: Чего вам больше всего не хватает в minix?
Summary: небольшой опрос для моей операционной системы Message-ID:
Date: 25 августа 1991 г., 20:57:08 GMT
Organization: University of Helsinki
Привет всем пользователям minix!
Я пишу (бесплатную) операционную систему (это просто хобби, ничего большого и профессионального вроде gnu) для AT 386(486). Я вожусь с этим с апреля, и она, похоже, скоро будет готова. Напишите мне, кому что нравится/не нравится в minix, поскольку моя ОС на нее похожа (кроме всего прочего, у нее — по практическим соображениям — то же физическое размещение файловой системы).
Пока что я перенес в нее bash (1.08) и gсс (1.40) , и все вроде работает. Значит, в ближайшие месяцы у меня получится уже что-то работающее, и мне бы хотелось знать, какие функции нужны большинству. Все заявки принимаются, но выполнение не гарантируется 🙂
PS. Она свободна от кода minix и включает мультизадачную файловую систему. Она НЕ переносима (используется переключение задач 386 и пр.) и, возможно, никогда не будет поддерживать ничего, кроме АТ-винчестеров, потому что у меня больше ничего нет :-(.
В другом послании (от 26 августа 1991 г.) Линус впервые сообщает о том, что он собирается придерживаться лицензии GNU: «Даже тогда она, вероятно, не будет способна делать много больше того, что может minix, а во многих отношениях просто много меньше. Но она будет открыта (возможно, в соответствии с лицензией GNU или подобной)». Впрочем, это только небольшое попутное замечание, решение о том, на каких условиях будет распространяться Linux, будет сделано не сразу, и не сразу это будет GPL.
В своей книге «Just for fun» Л.Торвальдс пишет, что версия 0.01 была выпущена 17 сентября 1991 года. Снова приведу цитату из книги Торвальдса:
«И вот я решился ее выложить. Я не делал публичных объявлений, а просто написал пятерым-десятерым хакерам на личные адреса, что она лежит на FTP-сайте. В числе прочих я написал знаменитому среди фанатов Minix Брюсу Эвансу и Ари Лемке. Я выложил исходники самой Linux и еще несколько бинарников, чтобы можно было хоть что-то делать. Я сказал, что нужно, чтобы запустить все это хозяйство. На машине должна была стоять Minix (версия 386) и нужен был компилятор GCC. Причем на самом деле нужна была моя версия GCC, поэтому ее я тоже выложил.
Не думаю, чтобы ту версию проверяло больше одного-двух человек. Для этого нужно было возиться с установкой специального компилятора, выделить пустой раздел, чтобы использовать его для загрузки, откомпилировать мое ядро и запустить оболочку. А кроме запуска оболочки, делать было особенно нечего. Можно было распечатать исходники — всего 10 000 строк.
Я стал распространять свою операционку прежде всего, чтобы доказать, что все это не пустая болтовня — я действительно что-то сделал. В Интернете много болтают. О чем бы ни шла речь — об операционке или о сексе — многие в киберпространстве просто вешают лапшу на уши. Поэтому важно после того как ты растрезвонил, что пишешь операционку, иметь возможность сказать: «Вот — я ее и правда сделал. Я не трепло — можете сами посмотреть».
Название «Linux» новая система получила следующим образом. Самого Торвальдса несколько смущало созвучие этого названия с его именем, поэтому он пытался назвать свою разработку FREAX. Это название можно обнаружить в файле kernl/Makefile версии 0.11, и в исходных кодах других программ. Но Ари Лемке, который предоставил место для выкладывания системы на FTP сайте, назвал каталог pub/OS/Linux. И это название закрепилось за новой ОС.
Стадия становления
Версия 0.02 Linux появилась 5 октября 1991 г. Она сопровождалась следующим известным заявлением Торвальдса:
Листинг 3. Сообщение о выходе версии 0.02.
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Free minix-like kernel sources for 386-AT
Message-ID:
Date: 5 Oct 91 05:41:06 GMT
Organization: University of Helsinki
Do you pine for the nice days of minix-1.1, when men were men and wrote their own device drivers? Are you without a nice project and just dying to cut your teeth on a OS you can try to modify for your needs? Are you finding it frustrating when everything works on minix? No more all-nighters to get a nifty program working? Then this post might be just for you 🙂
As I mentioned a month(?) ago, I’m working on a free version of a minix-lookalike for AT-386 computers. It has finally reached the stage where it’s even usable (though may not be depending on what you want), and I am willing to put out the sources for wider distribution. It is just version 0.02 (+1 (very small) patch already), but I’ve successfully run bash/gcc/gnu-make/gnu-sed/compress etc under it.
Sources for this pet project of mine can be found at nic.funet.fi (128.214.6.100) in the directory /pub/OS/Linux. The directory also contains some README-file and a couple of binaries to work under linux (bash, update and gcc, what more can you ask for :-).
Full kernel source is provided, as no minix code has been used. Library sources are only partially free, so that cannot be distributed currently. The system is able to compile «as-is» and has been known to work.
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Исходники свободного minix-подобного ядра для 386-AT
Message-ID:
Date: 5 октября 1991 г., 05:41:06 GMT
Organization: University of Helsinki
Вы скорбите о тех временах, когда мужчины были настоящими мужчинами и сами писали драйверы устройств? У вас нет хорошего проекта и вы мечтаете вонзить свои зубы в какую-нибудь ОС, чтобы модифицировать ее для своих нужд? Вас раздражает то, что все работает под minix? И не требуется просиживать ночи, чтобы заставить программу работать? Тогда это послание адресовано вам 🙂
Как я сообщал месяц (?) назад, я работаю над свободной версией чего-то похожего на minix для AT-386 компьютеров. Работа наконец достигла той стадии, когда результат уже можно использовать (хотя может быть и не для того, для чего хотелось бы вам), и я хочу выложить исходные коды для широкого распространения. Это всего-навсего версия 0.02 (+1 очень небольшое дополнение), но я успешно запускаю под ней bash/gcc/gnu-make/gnu-sed/compress и так далее.
Исходные коды этого моего любимого проекта можно найти на сайте nic.funet.fi (128.214.6.100) в каталоге /pub/OS/Linux. Этот каталог содержит также несколько README-файлов и пару бинарников, которые работают под linux (bash, update и gcc, что вам еще надо :-).
Исходные коды ядра предоставлены в полном объеме, поскольку коды minix не используются. Исходные коды библиотек свободны только частично, поэтому не могут распространяться свободно. Система может быть скомпилирована «as-is» и она работает.
Тот факт, что Линус выложил код своей ОС в Интернет, был решающим в дальнейшей судьбе Linux. Хотя в 1991 году Интернет еще не был так широко распространен, как в наши дни, зато пользовались им в основном люди, имеющие достаточную техническую подготовку. И уже с самого начала Торвальдс получил несколько заинтересованных откликов.
Примерно в феврале 1992 года Линус высказал просьбу ко всем, кто уже пользовался или тестировал Linux, прислать ему открытку. Таких открыток было получено несколько сотен со всех концов света — из Новой Зеландии, Японии, Нидерландов, США. Это говорило о том, что Linux начала приобретать некоторую известность.
Получил Торвальдс отзыв и от Эндрю Таненбаума, автора MINIX. К сожалению, отзыв этот был довольно недоброжелательный. В своем письме Таненбаум писал: «Я все же придерживаюсь той точки зрения, что использование монолитного ядра в 1991 году является фундаментальной ошибкой. Радуйтесь тому, что вы не мой студент. У меня вы не получили бы высокой оценки за такую работу :-)»
Линус позже признавался, что это был самый тяжелый момент в истории его занятий Linux. Все же Таненбаум был знаменитым профессором и все, что он говорил, заслуживало внимания. Но в отношении Linux профессор был не прав, а Линус был упрямым парнем и не мог просто так признать себя неправым. К тому же Таненбаум озаглавил свое письмо «Linux устарела» и опубликовал его в телеконференции, что сильно задело Линуса, так как ему показалось, что оно подрывает его социальный статус, которым он очень дорожил. И Торвальдс ответил Таненбауму достаточно резко:
Листинг 3. Из ответа Л.Торвальдса на письмо Э.Таненбаума.
Линус говорит, что спор с создателем Minix вскоре перешел в обмен личными посланиями — перепалка была слишком резкой, чтобы вести ее публично. Несколько месяцев было тихо. Потом Таненбаум прислал Линусу ссылку на пятистрочное объявление в журнале «Byte» о выпуске коммерческой версии Linux. «В своем последнем сообщении Эндрю спрашивал, этого ли я хотел — чтобы кто-то продавал мой труд. Я ему ответил коротко: «Да», и больше он мне не писал», — рассказывает Линус.
Более подробно с перепиской Линуса Торвальдса, Эндрю Таненбаума, Теда Тсо (Ted T’so), Дэвида Миллера и других участников этого спора вы познакомиться, если перейдете по следующим ссылкам «Linux is Obsolete», obsolete .
С полным текстом можно также ознакомиться по адресу: http://groups.google.com/groups?threadm=12595%40star.cs.vu.nl .
Тем временем работа над Linux продолжалась. В таблице 1 приведены основные вехи этого первого этапа развития Linux.
Таблица 1. Развитие Linux от версии 0.01 до 1.0.
Источник