Linux 24 года

03c336d3745e4318b9329776284cb77f.png18-летний Линус Торвальдс поступил в Хельсинский университет в 1988 году и осенью начал обучение. После первого курса ему пришлось год отслужить в Сухопутных войсках Финляндии. C Unix Торвальдс познакомился лишь осенью 1990 года. Unix — операционная система, созданная в начале семидесятых Кеном Томпсоном, Деннисом Ритчи и другими. К концу восьмидесятых ОС уже имела широкое влияние в научных кругах: существовали проекты BSD, System V и другие. Линус впервые познакомился с Unix в рамках короткого учебного курса.

Университет приобрёл машинку MicroVAX под управлением операционной системы Ultrix с лицензией на 16 пользователей. Изучающих действительно было 16. Ресурсов было мало: чтобы подойти к терминалу, приходилось ждать в очереди. Но даже эти материальные ограничения не помешали Линусу оценить Unix. Торвальдсу понравился интерфейс для программирования, а сложность Unix, которой так пугали, показалась Линусу простой.
Одним из учебников Линуса была книга Эндрю Таненбаума «Операционные системы: разработка и реализация», её он купил ещё летом по возвращении из армии. Кроме подробного описания того, как написать операционную систему самостоятельно, книга имела в комплекте набор исходных кодов для маленькой учебной ОС под названием Minix. Изначально эта операционка писалась на 8088, но позднее её портировали на Intel 80386.

А вот продукты Intel Линус не любил — он неплохо разбирался в микропроцессорах. С другой стороны, 80386 казался Линусу куда лучше, чем предыдущие «интелы». Именно доступность юниксоподобного Minix во многом склонила Линуса к покупке компьютера архитектуры PC. До этого момента он программировал на Sinclair QL, старшем брате ZX Spectrum, а ещё раньше у него была машинка Commodore Vic-20. На этих компьютерах он написал несколько программ, к примеру, клон Pac-Man

Покупка стала возможной благодаря падающим ценам на электронику и нескольким случаным обстоятельствам в личной жизни. Линусу дали кредит на образование. Поскольку на тот момент студент проживал дома со своей матерью, часть суммы не приходилось тратить на аренду и прочие расходы. А ещё это был канун Рождества, что означало некоторые дополнительные средства на руках у Торвальдса. Как только закончились праздничные дни, Линус сходил и купил новый компьютер. 5 января 1991 года был приобретён ПК с процессором Intel 386 DX33, 4 МБ ОЗУ и жёстким диском на 40 МБ. Полгода спустя Линус купил математический сопроцессор для операций с плавающей запятой — он сделал это исключительно с целью обеспечения совместимости разрабатываемого продукта, эмуляция его вполне устраивала.

Компьютер был куплен, но Линус не сразу начал знакомиться с Minix. Дискеты с операционкой появились лишь через несколько месяцев. Поэтому он поступил так же, как и любой другой на его месте: он убивал время в играх типа Prince of Persia под MS-DOS. Ещё Линус изучал архитектуру процессора его новой машины. Торвальдс сделал два процесса, каждый из которых писал буквы на экране. Первый писал A, второй B. Затем Линус заставлял задачи переключаться по таймеру. На экране появлялись последовательности AAAA BBBB и так далее. За первые два месяца кода была написано мало: сказывались незнакомство с Intel и прочие сложности.

Этот крошечный эксперимент с двумя процессами оказался куда важнее, чем кажется. На какой-то момент Линус понял, что у него получилось: он поменял два процесса, чтобы они вели себя как простейший пакет эмулятора терминала. Один процесс читал данные с клавиатуры, посылал их на модем, а другой читал с модема и посылал на экран. Были драйвера клавиатуры, чтобы как-то производить ввод, а также драйвер для текстового режима VGA. Торвальдс написал драйвер для последовательного порта, чтобы можно было получать и читать новости из университета. Изначально Линус просто читал новости по модему.

Летом того же года сидящий на своём прото-ядре Торвальдс разузнал в новостных группах о POSIX, стандарте Unix-подобных операционных систем для обеспечения взаимодействия между операционной системой и прикладными программами. Линус читал и улучшал получающийся пакет эмуляции. В какой-то момент он захотел что-то скачать, поэтому пришлось писать драйвер диска. Нужно было написать файловую систему, чтобы читать файловую систему Minix, что в свою очередь нужно было для записи и чтения файлов при их последующей выгрузке. Творение Линуса уже имело файловую систему, механизм переключения задач и драйвера устройств.

Операционная система существовала, но имя родилось не сразу. Торвальдс запрашивал информацию о интерфейсе POSIX, и Ари Леммке, один из работников университета, объяснил, что скачать POSIX в Сети бесплатно нельзя. За это нужно было платить — на подобное бедный студент пойти не мог. А ещё Леммке рассказал, что в его интересы входят ядра операционных систем. Он даже выделил Линусу папку на FTP-сервере университета на ftp.funet.fi. Путь к ней звучал как /pub/os/linux.

Но это было лишь рабочее название: Линус не хотел показаться эгоистом, который на всё лепит своё имя. Торвальдс боялся, что систему с таким именем никто не воспримет всерьёз. Поэтому он подготовил другой вариант — Freax, слово-бумажник, полученное слиянием Free и Unix. Ари Леммке без ведома Линуса назвал каталог linux. Так название и закрепилось.

Первая версия Linux выглядела сырой, лишь несколько человек из групп новостей получили письма о её создании. Так получилось потому, что Линусу поскорее хотелось что-то залить на сервер, чтобы там не было пусто. Через несколько недель вышла вторая версия, и вот её не страшно было показать в группах новостей по Minix, что Линус и сделал. Сколько людей получили доступ к этой первой публично доступной версии? Сам Торвальдс говорил в 1996 году, что, вероятно, несколько десятков.

25 августа 1991 года в возрасте 21 года Линус Торвальдс оставил в группе новостей comp.os.minix следующее сообщение, которое навсегда осталось в учебниках истории информатики:

Привет всем пользователям minix — Я создаю (бесплатную) операционную систему (просто хобби, ничего профессионального уровня gnu) для 386(486) AT-клонов. С подобным я вожусь уже с апреля, скоро будет готово. Я хотел бы получить любые отзывы о том, что вам нравится и не нравится в minix, поскольку моя ОС её немного напоминает (то же физическое размещение файловой системы (по практическим соображениям) среди прочего).

Я уже портировал bash (1.08) и gcc (1.40), и всё, похоже, работает. То есть уже через несколько месяцев у меня получится что-то с практическим применением, и мне хотелось бы знать, какие функции понадобятся. Принимаются все предложения, хотя я не обещаю, что их выполню :-)

Линус (torvalds@kruuna.helsinki.fi)
PS. Да — в ней нет никакого кода из minix, у неё многопоточная файловая система. Она НЕ портируема (использует переключение задач 386 итд), и, наверное, никогда не будет поддерживать что-либо, кроме жёстких дисков AT, но это всё, что у меня есть :-(.


С того дня прошло 24 года. Сегодня Linux используется практически везде: от мобильных телефонов и настольных компьютеров до суперкомпьютеров с миллионами ядер. Более миллиарда устройств работает на Android, глубоко в недрах которого находится тот самый Linux. Linux продолжает развиваться, в него вложены тысячи человеко-лет труда программистов со всего мира. Но наиболее иронично, что сегодня в ядре уже отсутствует поддержка того первого компьютера, на котором Линус писал свою операционку — старый код решили убрать в 2012 году.
По материалам Ars Technica.

© Geektimes