История создания Linux
Операционная система GNU/Linux появилась благодаря стечению обстоятельств. Вы узнаете о том, с чего всё начиналось и какую роль в этом сыграл неисправный принтер. Это история Ричарда Столлмана и Линуса Торвальдса.
Столлман задал вектор развития программного обеспечения и пракически закончил работу над операционной системой, подготовив необходимые системные утилиты. А Торвальдс добавил недостающее — ядро Linux.
История создания Linux
1983 год: создание проекта GNU и лицензии GPL
В лаборатории искусственного интеллекта Массачусетского технологического института работал программист Ричард Столлман. Однажды он задался проблемой зажёвывания бумаги экспериментальным лазерным принтером, любезно предоставленным компанией Xerox. По прежнему опыту Ричард решил написать программу, которая оповещала бы всех пользователей сети, использующих принтер, о замятии бумаги.
К сожалению, принтер поставлялся только с готовой программой, поэтому Столлман решил отыскать обладателя исходного кода. И он нашёл такого человека. Им оказался Роберт Спроулл из университета Карнеги-Меллона. Но при личной встрече был получен отказ. Это потрясло Ричарда до глубины души и заставило его пересмотреть своё отношение к авторским правам на исходный код. Для него Спроулл был предателем хакерского сообщества.
Так Столлман впервые столкнулся с соглашением о неразглашении (NDA). Программа была не менее ценной, чем сам принтер, ведь Xerox возлагал большие надежды на лазерные принтеры и не мог допустить того, чтобы код попал в руки конкурентов.
В один из дней Ричард получил в своё распоряжение текстовый редактора TECO, он был до ужаса неудобным. И вместе с коллегами Столлман стал писать расширения (макросы), добавляющие новые функции в редактор. В скором времени макросы стали конфликтовать между собой, а на поиск неисправности уходило слишком много времени. Таким образом началась работа над программируемым текстовым редактором Emacs.
Первое время всё шло гладко, но по мере роста базы макросов начали появляться сообщения об ошибках в программе. Оказалось, что пользователи редактировали код программы под себя и не уведомляли об этом других. Тогда Столлман предложил отправлять Emacs, только при том условии, если обратно станет получать те самые изменения. Это было первое использование идеи о свободном программном обеспечении.
В лаборатории ИИ активно использовали язык программирования Lisp, а в начале 80-х произошёл раскол. Часть сотрудников осталась в университетской компании LMI, а часть перешла в Symbolics. Изначально компании обменивались кодом, но позднее руководство Symbolics рассудило, что на их стороне большинство и они вытягивают за собой ту кучку хакеров, что работает в LMI.
С этого времени LMI получала только машинный код и описание изменений. Для Столлмана это был вызов, и он начал вносить изменения руководствуясь лишь описаниями. Дошло до того, что люди из Symbolics установили шпионскую программу на компьютере Столлмана, чтобы уличить его в краже исходного кода. Но всё, что они увидели, это лишь несколько схожих участков кода и не более того. По сути один человек, руководствуясь лишь списком изменений, выполнял работу целого отдела Symbolics.
В 1983 году университет стал закупать машины у Symbolics, а пользователей машин LMI становилось всё меньше, некому стало отправлять сообщения об ошибках. Столлман больше не мог терпеть это и покинул университет. Тогда и появилось объявление о создании проекта GNU (GNU is not Unix). Столлман решил сделать свободную альтернативу Unix.
С начала 80-х стали закрывать код операционных систем Unix и программ для них. У движения за свободное ПО появлялось всё больше последователей.
Перед Ричардом стояла глобальная задача – написание операционной системы с нуля, используя только описание вызовов и системных утилит. Сначала он искал готовые решения и тех программистов, которые были готовы пойти по его стопам. Но поиски не увенчались успехом. Тогда он принялся за перенос Emacs на Unix. В этом ему помог Джеймс Гослинг, предоставив раннюю версию своего порта Gosmacs.
Переписав и доработав код редактора Ричард представил публике первые результаты работы над проектом GNU. Чтобы урегулировать все вопросы была создана некоммерческая организация Free Software Foundation. Позднее у неё даже появились влиятельные спонсоры в лице IT-гигантов.
В 1985 году была подготовлена лицензия GNU Emacs. Столлман отдавал исходный код программы, а взамен требовал того, чтобы программа оставалась свободной. Важно отметить, что свободное программное обеспечение – это не есть бесплатное программное обеспечение. Разработчики вправе просить деньги за свою работу. В основном плата взимается не за программу, а за её поддержку.
Со временем лицензия лишилась упоминания Emacs, таким образом она была применима к любому программному обеспечению. В 1989 году была готова финальная версия лицензии GNU GPL. А вместе с ней и целый ряд программ, вроде отладчика GDB и компилятора GCC. До появления свободной операционной системы оставалось сделать всего несколько шагов.
Ядро Hurd операционной системы GNU тоже находилось в разработке, но лишь на раннем этапе.
1991 год: ядро Linux
Студент Хельсинского университета Линус Торвальдс к 1990 году уже изучил свой текущий компьютер Sinclair QL вдоль и поперёк. Он даже написал ассемблер и редактор кода для него. Но производительности стало не хватать. Поэтому он решил приобрести новый компьютер, выбор пал на IBM PC с 386 процессором. Этот чип Intel впервые поддерживал блок управления памятью MMU, необходимый для работы Unix.
Пока Линус копил деньги на новый компьютер, он приобрёл книгу Эндрю Таненбаума о проектировании операционных систем на примере упрощённой версии Unix – Minix. В январе 1991 года Торвальдс приобретает компьютер в кредит, а спустя пару месяцев получает по почте свою версию Minix, предназначенную для образовательных целей.
Линус начал использовать и изучать операционную систему, в том числе и для того, чтобы связываться с университетским компьютером для выхода в интернет. Терминал Minix был неудобным и не устраивал Линуса. Тогда он решил написать свой терминал с нуля.
Спустя некоторое время программа была готова, но этого показалось мало. Обмен файлами мог значительно упростить работу, и Торвальдс принялся реализовывать работу файловой системы, аналогично той, что была описана в книге Таненбаума. Однажды Линус осознал, что работает уже не просто над созданием терминала, а над операционной системой.
С того времени он начинает внедрять вызовы Unix один за другим, пока в его распоряжении не оказывается работающая оболочка Bash. Таким образом 17 сентября 1991 года вышла первая версия ядра Linux, также распространяемая по лицензии GNU GPL.
Несмотря на множество ошибок и недоработок хакеры начинают использовать ядро и присылают предложения, отчёты об ошибках и даже код для улучшения работы ядра. Через год для Linux уже был портирован оконный интерфейс X Window, вместе с программами проекта GNU операционная система приобретала законченный вид.
1992 год: Первые дистрибутивы
Первые версии Linux распространялись на дискетах вместе с системными утилитами GNU. Ричард Столлман настаивает на том, чтобы систему непременно называли GNU/Linux, ведь без системных утилит из его проекта ядро бесполезно.
Первым популярным дистрибутивом стал Softlanding Linux System. Он появился летом 1992 года и включал в себя ядро, компилятор, редактор Emacs и ряд других программ, а также часть исходного кода. Уже через год на его основе выходит Slackware Linux, а его создатель Патрик Фолькердинг даже основывает одноимённую фирму.
В том же 1993 году начинается разработка дистрибутивов Red Hat и Debian. Первым проектом руководили Марк Эвинг и Боб Янг, они нацелились на корпоративный сегмент, подобно тому, как это было с другими системами Unix. Иан Мёрдок со своим Debian решил воплотить идеи GNU для целого дистрибутива, состоящего из свободного программного обеспечения.
А так как Slackware, Red Hat и Debian были одними из первых, то они легли в основу большинства дистрибутивов, в том числе современных.
Почему в качестве образца выбрали Unix
Операционная система Unix появилась в Bell Labs, подразделении AT&T. В 1969 году компания отказалась от дальнейшей разработки Multics, совместного проекта с Массачусетским технологическим институтом. Система была во многом новаторской, она использовала разделение времени программ для одновременной работы нескольких пользователей, а также язык высокого уровня PL/I. Но, к сожалению, она стала слишком тяжёлой и сложной в разработке.
Тогда руководство поручило Дугласу Макилрою написать текстовый редактор для патентного отдела. Причём для работы был выделен относительно простой мейнфрейм PDP-7. В команде Макилроя работали Кен Томпсон и Деннис Ритчи.
Кену захотелось перенести свою игру Space Travel для Multics на PDP-7, а Дуглас был не против и всецело поддерживал его. Так в 1971 году появился текстовый редактор, а по совместительству операционная система Unics, позднее переименованная в Unix. Реактор быстро окупил себя и Bell Labs приобрела PDP-11. С этого времени Ритчи начинает разработку интерпретируемого языка Би, во многом схожего с языком BCPL. К 1973 году язык стал компилируемым и получил название Си. Системное ядро в скором времени было переписано на Си. Это в значительной мере повысило читаемость кода.
Изначально руководство даже не знало о существовании операционной системы, ведь она была ни к чему. По решению антимонопольного комитета компания не могла вести коммерческую деятельность в области вычислительной техники. И всё же проект посчитали перспективным, и разработка продолжилась. Так как систему нельзя было использовать в коммерческой деятельности, она отправлялась в университеты всего мира.
С этого момента началась активная разработка системы. Особо отличились в университете Беркли, к 1977 году была готова их версия Unix под названием BSD. К началу 80-х существовало несколько вариаций Unix, некоторые из них были с закрытым кодом. Тогда в Bell Labs начинают создание набора стандартов POSIX, описывающих то, как должна работать система Unix.
С его помощью можно было писать совместимые с Unix программы, чем и воспользовался Столлман для написания утилит GNU, а позднее и Торвальдс для Unix-подобного ядра Linux.
Почему Linux, а не BSD
В университете Беркли разработали лицензию, по которой бесплатно распространялась система BSD. Она требовала указывать авторов, но открывать код было не обязательно. Популяризации системы мешало то, что использовать BSD без лицензии AT&T было нельзя. Всё дело было в оригинальном коде Unix.
Лишь к 1991 году удалось заменить код Bell Labs на свой собственный. BSD Net 2 стала первой свободной операционной системой, ещё до появления Linux. Так почему Linux стал набирать популярность?
Во-первых, в начале 90-х на разработчиков BSD подали в суд за использование кода Unix. Лишь к 1993 году большая часть исков была отклонена. Но до этого времени систему старались обходить стороной и даже стали использовать сырой GNU/Linux.
Во-вторых, лицензия GNU GPL требовала того, чтобы код оставался открытым. А с BSD можно было закрыть код операционной системы, как в своё время поступили с Mac OS, основанной на BSD. GNU GPL позволила большему числу программистов принять участие в разработке Linux.
Выводы
Вот такая история развития Linux. Эта операционная система могла не появиться, если бы не стремление Ричарда Столлмана сделать код доступным. Благодаря ему настоящие хакеры трудятся и по сей день. Среди них есть и разработчик ядра операционной системы GNU/Linux, Линус Торвальдс.
Но не менее важную роль сыграли сотрудники Bell Labs, создавшие не только операционную систему Unix, но ещё и объединившие программистов со всего света. Это позволило сделать Unix примером для подражания.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.