Значительная часть программного кода, составляющего то, что обычно называют системой Linux, фактически была взята из проекта GNU, поэтому при ссылке на всю систему Столлман предпочитает использовать термин GNU/Linux. Вопрос, связанный с названием (Linux или GNU/Linux) стал причиной дебатов в сообществе разработчиков свободного программного обеспечения. Поскольку данная книга посвящена в основном API ядра Linux, в ней чаще всего будет использоваться термин Linux.
Начало было положено. Чтобы соответствовать полноценной UNIX-системе, созданной в рамках проекта GNU, требовалось только рабочее ядро.
1.2.2. Ядро Linux
В 1991 году Линус Торвальдс (Linus Torvalds), финский студент хельсинкского университета, задумал создать операционную систему для своего персонального компьютера с процессором Intel 80386. Во время учебы он имел дело с Minix, небольшим UNIX-подобным ядром операционной системы, разработанным в середине 1980-х годов Эндрю Таненбаумом (Andrew Tanenbaum), профессором голландского университета. Таненбаум распространял Minix вместе с исходным кодом как средство обучения проектированию ОС в рамках университетских курсов. Ядро Minix могло быть собрано и запущено в системе с процессором Intel 80386. Но, поскольку оно в первую очередь рассматривалось в качестве учебного пособия, ядро было разработано с прицелом на максимальную независимость от архитектуры аппаратной части и не использовало все преимущества, предоставляемые процессорами Intel 80386.
По этой причине Торвальдс приступил к созданию эффективного полнофункционального ядра UNIX для работы на машине с процессором Intel 80386. Через несколько месяцев он спроектировал основное ядро, позволявшее компилировать и запускать различные программы, разработанные в рамках проекта GNU. Затем, 5 октября 1991 года, Торвальдс обратился за помощью к другим программистам, анонсировав версию своего ядра под номером 0.02 в следующем, теперь уже широко известном (многократно процитированном) сообщении в новостной группе Usenet:
«Вы скорбите о тех временах, когда мужчины были настоящими мужчинами и сами писали драйверы устройств? У вас нет хорошего проекта и вы мечтаете вонзить свои зубы в какую-нибудь ОС, чтобы модифицировать ее для своих нужд? Вас раздражает то, что все работает под Minix? И не требуется просиживать ночи, чтобы заставить программу работать? Тогда это послание адресовано вам. Месяц назад я уже упоминал, что работаю над созданием свободной версии Minix-подобной операционной системы для компьютеров семейства AT-386. И вот наконец моя работа достигла той стадии, когда системой уже можно воспользоваться (хотя, может быть, и нет, все зависит от того, что именно вам нужно), и у меня появилось желание обнародовать исходный код для его свободного распространения. Пока это лишь версия 0.02…, но под ее управлением мне уже удалось вполне успешно запустить такие программные средства, как bash, gcc, gnu-make, gnu-sed, compress и так далее».
По сложившейся со временем традиции присваивать клонам UNIX имена, оканчивающиеся на букву X, ядро в конечном итоге получило название Linux. Изначально оно было выпущено под более ограничивающую лицензию, но вскоре Торвальдс сделал его доступным под лицензией GNU GPL.
Призыв к поддержке оказался эффективным. Для разработки Linux к Торвальдсу присоединились другие программисты. Они начали добавлять новую функциональность: усовершенствованную файловую систему, поддержку сетевых технологий, использование драйверов устройств и поддержку многопроцессорных систем. К марту 1994 года разработчики смогли выпустить версию 1.0. В марте 1995 года появилась версия Linux 1.2, в июне 1996 года — Linux 2.0, затем, в январе 1999 года, вышла версия Linux 2.2, а в январе 2001 года была выпущена версия Linux 2.4. Работа над созданием ядра версии 2.5 началась в ноябре 2001 года, что в декабре 2003 года привело к выпуску версии Linux 2.6.
Отступление: версии BSD
Следует заметить, что в начале 1990-х годов уже была доступна еще одна свободная версия UNIX для машин с архитектурой x86-32. Портированную на архитектуру x86-32 версию вполне состоявшейся к тому времени системы BSD под названием 386/BSD разработали Билл (Bill) и Линн Джолиц (Lynne Jolitz). Она была основана на выпуске BSD Net/2 (июнь 1991 года) — версии исходного кода 4.3BSD. В нем весь принадлежавший AT&T исходный код был либо заменен, либо удален, как в случае с шестью файлами, которые не так-то просто было переписать. При портировании кода Net/2 в код для архитектуры x86-32 Джолицы заново написали недостающие исходные файлы, и первый выпуск (версия 0.0) системы 386/BSD состоялся в феврале 1992 года.