06 марта 2025

🐧 Пингвин, покоривший мир: история взлета Linux – ОС, управляющей 96% серверов

Пишу об IT и на Python. kungurov.net
В 1991 году на компьютере с 4 мегабайтами памяти родилась программа, которая сегодня управляет большей частью интернета, смартфонами и даже космическими аппаратами. Это история Linux, рассказанная одним из первых свидетелей.
🐧 Пингвин, покоривший мир: история взлета Linux – ОС, управляющей 96% серверов
Данная статья является переводом. Ссылка на оригинал.

Меня зовут Ларс Вирцениус, и я был там, когда зарождался Linux. Это мои воспоминания о самых ранних днях Linux, его создании и начале пути к тому, где он находится сегодня.

Ларс Вирцениус. Источник: Википедия
Ларс Вирцениус. Источник: Википедия

Я начал изучать информатику в Хельсинкском университете осенью 1988 года и познакомился с Линусом Торвальдсом, который в том же году был новым шведскоговорящим студентом-информатиком. К концу первого курса мы получили доступ к Unix-серверу, и я случайно обнаружил Usenet (платформа для общения), опечатавшись и набрав rn (программа для чтения новостей Usenet) вместо rm. Я рассказал об этом Линусу, и мы потратили непозволительно много времени на изучение этой платформы.

Обсуждение 2004 года в группе USENET Comp.Text.Tex. Источник: Википедия
Обсуждение 2004 года в группе USENET Comp.Text.Tex. Источник: Википедия

После первого курса мы оба ушли проходить обязательную военную службу, хотя в разных местах. Осенью 1990 года мы вернулись к учебе и вместе записались на курс программирования на C и Unix, который включал немало теории архитектуры ядра Unix. Это привело нас к чтению о других операционных системах, таких как QNX и Plan 9. Мы с Линусом обсуждали, как правильно должна быть построена операционная система, с энтузиазмом 20-летних студентов второго курса. К счастью, эти разговоры так и не были записаны для потомков.

Рабочий стол QNX 6 (Neutrino) после установки. Источник: Википедия
Рабочий стол QNX 6 (Neutrino) после установки. Источник: Википедия

В январе 1991 года Линус купил свой первый ПК в местном магазине, который собирал компьютеры из комплектующих. ПК был оснащен процессором 386, что по тем временам было довольно шикарно, поскольку Линус хотел исследовать многозадачность. Кроме того, поскольку до этого он пользовался компьютером Sinclair QL с 32-битным процессором Motorola 68008, он хотел получить именно 32-битный процессор и не желал переходить на 16-битный, поэтому вариант с 286 процессором не рассматривался. Первый ПК Линуса имел целых 4 мегабайта оперативной памяти и жесткий диск.

Он приобрел копию игры Prince of Persia, которая занимала большую часть его свободного времени в течение следующих нескольких месяцев. Позже он также купил копию MINIX, потому что после использования Unix в университете он хотел иметь подобное решение и дома.

Minix 3.3.0. Источник: Википедия
Minix 3.3.0. Источник: Википедия
Рассказываем, как использовать малоизвестные, но мощные инструменты терминала: от редактирования длинных команд в текстовом редакторе до автоматизации сложных процессов с помощью tmux.

Буквы A и B

После прохождения игры Линус начал изучать ассемблер Intel. Однажды он показал мне программу, реализующую многозадачность: один поток выводил на экран непрерывную последовательность буквы A, другой – B. Переключения контекста были настолько очевидны, что можно было видеть, как поток букв A сменяется потоком букв B. Это была первая версия того, что позже станет известно как ядро Linux.

Позже Линус расширил программу и переписал большую ее часть на C. В конце весны 1991 года я написал для него реализацию функции sprintf(), поскольку он еще не освоил написание функций с переменным числом аргументов. Я хотел избавить его от необходимости создавать отдельную функцию для каждого типа выводимых значений. Основная часть этого кода до сих пор присутствует в ядре Linux в виде функции snprintf().

VT100 – текстовый компьютерный терминал, набор команд которого стал стандартом де-факто для эмуляторов терминала. Источник: Википедия
VT100 – текстовый компьютерный терминал, набор команд которого стал стандартом де-факто для эмуляторов терминала. Источник: Википедия

Со временем Линус совершенствовал свое зарождающееся ядро и продолжал добавлять новые возможности. Вскоре у него появились драйверы для клавиатуры и последовательного порта, эмуляция управляющих последовательностей терминала VT100 для экрана, а также возможность использовать модем для дозвона в университет, чтобы читать Usenet из дома. Настоящая научная фантастика! Однажды Линус случайно попытался использовать свой жесткий диск для дозвона в университет, в результате чего его главная загрузочная запись начиналась с ATDT и номера телефона модемного пула университета. После этого он реализовал в ядре систему прав доступа к файлам.

Примечание
ATDT – это команда, используемая модемами для набора номера (AT – attention, DT – dial tone). То есть, вместо того чтобы просто загружаться, система «набирала» номер университета, как если бы жесткий диск был модемом.

В августе 1991 года Линус впервые публично упомянул о своем новом ядре в группе новостей comp.os.minix, добавив фразу: «Я делаю (бесплатную) операционную систему (просто хобби, не будет большой и профессиональной, как GNU)». Вот это скромность! Изначально система называлась Freax. Через несколько недель Линус попросил Ари Леммке, одного из администраторов ftp.funet.fi, загрузить первый tar-архив. Ари выбрал имя Linux, и в первоначальной версии все еще содержится оригинальное название, встроенное в один из исходных файлов.

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

Первые выпуски Linux использовали лицензию, запрещавшую коммерческое использование. Некоторые из ранних участников предложили перейти на лицензию свободного программного обеспечения. Осенью 1991 года Ричард Столлман посетил Финляндию, и я привел Линуса на его выступление. Давление со стороны участников проекта и мое нытье в итоге убедили Линуса выбрать лицензию GNU GPL в начале 1992 года.

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

В этом тесте мы собрали 36 популярных дистрибутивов Linux и распределили их в зависимости от потребностей пользователя. Вы просто отвечаете на вопросы, а тест сам подберет список подходящих дистрибутивов для соответствующих целей и уровня подготовки.

1992 год

1992 год начался со знаменитой дискуссии с Эндрю Таненбаумом, университетским профессором и автором MINIX. У каждого были свои взгляды на архитектуру Linux и MINIX.

Эндрю Таненбаум. Источник: Википедия
Эндрю Таненбаум. Источник: Википедия

Что особенно важно для будущего успеха Linux, так это то, что в этом году в систему была портирована поддержка протокола X11, что сделало 1992 год годом настольного Linux.

Я решил внести свой вклад в сообщество, а не непосредственно в ядро, и помогал отвечать на вопросы, писал документацию и тому подобное. Я также выпускал недолго просуществовавший информационный бюллетень о Linux, который интересен тем, что в нем было опубликовано первое в истории интервью с Линусом. Позже бюллетень был заменен группой новостей comp.os.linux.announce.

В 1992 году также появился первый дистрибутив Linux – Softlanding Linux System (SLS). В следующем году SLS превратился в Slackware, что вдохновило Яна Мердока на создание Debian в 1993 году с целью разработки более ориентированной на сообщество модели. В последующие годы появились и другие дистрибутивы.

В 1993 году Линуса и меня приняли в качестве ассистентов преподавателей в университете. Мы делили один офис, где находился ПК, который Линус забрал для разработки Linux, а я пользовался DEC-терминалом для доступа к Usenet.

Однажды Линусу стало скучно, да и к тому же ПК работал медленно, поэтому он провел целый день, переписывая парсер командной строки ядра Linux на ассемблере ради повышения скорости. (Это оказалось довольно бессмысленным, и позже парсер снова переписали на C для улучшения переносимости, так как его скорость уже не имела значения.) Пару лет спустя он проводил дни, играя в Quake, якобы для стресс-тестирования управления памятью ядра. Было весело.

В какой-то момент Linux получил поддержку Ethernet и TCP/IP, что означало возможность читать Usenet без использования модема. Увы, ранний сетевой код Linux иногда был сыроват, ведь он был написан с нуля. В какой-то момент Linux отправлял поврежденные пакеты, которые выводили из строя все машины в сети. Поэтому использование Linux временно запретили в университетской сети до устранения ошибки. Отсутствие доступа к Usenet с рабочего места оказалось отличным мотиватором.

Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека программиста»

Версия 1.0

Весной 1994 года мы решили, что Linux завершен – больше нечего добавлять. С помощью Linux можно было компилировать сам Linux, читать Usenet и одновременно запускать множество копий программы xeyes. Мы решили выпустить версию 1.0 и организовали релизное мероприятие. Большую часть мероприятия составила церемониальная компиляция Linux 1.0 в фоновом режиме, пока Линус и другие рассказывали, что такое Linux и для чего он нужен. Линус объяснил, что коммерческий Unix для ПК был настолько дорогим, что проще было написать собственную систему.

Линус Торвальдс представляет Linux 1.0

В 1995 году мы с Линусом проходили курс программной инженерии в университете, который в основном состоял из большого практического проекта. Он, конечно же, был построен на базе Linux. Я настаивал на использовании системы контроля версий. Ранее я наблюдал, как студенты использовали «кричащий» контроль версий: делились исходным кодом через NFS и выкрикивали «Я редактирую этот файл!», когда вносили изменения. Мне это казалось неэффективным, поэтому я настоял на применении CVS, о которой только что узнал. Именно этот опыт привел к тому, что Линус невзлюбил CVS и годами отказывался использовать какую-либо систему контроля версий, кроме загрузки tar-архивов на FTP-сайты.

В том же году Линус впервые портировал Linux на новую архитектуру. Ему подарили машину DEC Alpha, а позже я получил ее для использования в качестве терминала для доступа к Usenet. Другие люди портировали Linux на различные архитектуры, но это не привело к тому, что я обзавелся дополнительными ПК для чтения Usenet.

В 1997 году Линус окончил университет и переехал в США, чтобы работать в Transmeta, а я устроился на работу в другом университете в районе Хельсинки.

В последующие годы произошло много событий. Оказалось, что в Linux все еще отсутствовало несколько функций, поэтому люди продолжали над ними работать. Появился термин open source, и IBM вложила огромные средства в развитие Linux. Netscape опубликовала версию своего веб-браузера с открытым исходным кодом. Пропуская несколько деталей и многие годы, открытый исходный код в итоге захватил мир. Был запущен LWN (Linux Weekly News), который еженедельно освещал значительную часть этой истории.

В 1991 году Линус писал, что Linux «не будет большим и профессиональным, как GNU». А в 2025 году Linux работает на всех континентах, во всех океанах, на миллиардах устройств, на орбите и даже на Марсе. Неплохо для того, что начиналось как два потока, выводящих на экран буквы A и B.

А какой был ваш первый опыт использования Linux? Помните, какой дистрибутив вы установили и какие трудности пришлось преодолеть?

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ