Каждый раз, когда вы запускаете терминал, правите конфиг в любимом редакторе (или панически ищете, как выйти из vim) или отправляете пакет в сеть, вы незримо касаетесь кода, написанного студентами на перфокартах полвека назад. История операционных систем полна драматических поворотов, масштабных судебных исков и гениальных инженерных озарений. Но редкая глава в летописи IT может сравниться по своему влиянию на современный мир с рождением Берклиевского UNIX. В предыдущих частях нашего цикла мы исследовали создание оригинальной операционной системы UNIX в стенах Bell Labs усилиями Кена Томпсона, Денниса Ритчи и их коллег. Однако именно переход этой системы в стены Калифорнийского университета в Беркли (UC Berkeley) заложил фундамент для той экосистемы свободного программного обеспечения, которой мы пользуемся сегодня.

Когда мы говорим о «начале BSD» (Berkeley Software Distribution), легко впасть в заблуждение, представляя себе команду разработчиков, с самого первого дня планировавших захватить рынок серверов и рабочих станций. Реальность была куда более прозаичной и академической. Всё началось с физического терминала, нескольких коробок с магнитной лентой и энтузиазма аспирантов, у которых был доступ к вычислительной технике, но не было готового программного обеспечения под конкретные исследовательские задачи. В этой статье мы подробно разберем, как именно университетский проект превратился в самостоятельную ветку развития UNIX, изменившую облик всей IT-индустрии.

Прибытие PDP-11: Искры над кампусом Беркли

В начале 1974 года на факультет информатики и вычислительной техники Калифорнийского университета в Беркли прибыл мини-компьютер PDP-11/45, произведенный компанией Digital Equipment Corporation (DEC). По тем временам это была передовая машина, но сама по себе она представляла лишь груду кремния и проводов без стабильной и универсальной операционной среды. Профессор кафедры Боб Фабер (Bob Fabry), предвидевший огромный потенциал новой архитектуры, активно искал систему, способную эффективно управлять этим железом и поддерживать множество пользователей одновременно.

Выбор пал на UNIX от Bell Labs. Напомним, что в те годы AT&T находилась под антимонопольным регулированием и не имела права заниматься коммерческим распространением программного обеспечения. Поэтому они охотно делились исходным кодом с университетами на символических условиях: за скромную плату учебные заведения получали дистрибутив на магнитной ленте вместе с исходниками на языке C и ассемблере.

Вместе с PDP-11 в Беркли прибыла версия UNIX Version 4 (V4), а вскоре подоспела и легендарная Version 6 (V6). Именно с шестой версии началось глубокое погружение студентов и преподавателей в кишки операционной системы. Среди этих студентов оказался молодой исследователь по имени Билл Джой (Bill Joy), чье имя навсегда вписано золотыми буквами в историю компьютерных наук. Вместе с коллегой Чаком Хэли (Chuck Haley) они начали изучать код ядра, искать узкие места и адаптировать систему под нужды университетского вычислительного центра.

Первые шаги не были революционными — это была скорее тонкая настройка. Однако академическая среда Беркли обладала уникальным свойством: здесь поощрялось копание в чужом коде, модификация систем и создание собственных утилит. Студенты не просто пользовались готовым продуктом; они относились к нему как к конструктору, который можно и нужно улучшать.

Так энтузиазм одиночек постепенно перерастал в системную инженерную синергию, готовую взорвать устоявшиеся стандарты коммерческого софта.

Первый релиз: Рождение дистрибутива BSD

К 1977 году Билл Джой и Чак Хэли собрали воедино целый ряд улучшений, патчей и новых утилит, написанных ими и другими исследователями в Беркли. Возникла насущная необходимость поделиться этими наработками с другими университетами и организациями, которые также использовали PDP-11 с UNIX V6. Так родился первый релиз, вошедший в историю под названием 1.BSD (First Berkeley Software Distribution), вышедший весной 1978 года.

Важно понимать, что 1.BSD технически не была полноценной операционной системой в современном понимании. Это был пакет дополнений и программ, устанавливавшийся поверх лицензированного дистрибутива UNIX Version 6 от AT&T. В комплект входили:

  • Паскаль-компилятор (Berkeley Pascal), разработанный Томасом Шревером и Биллом Джоем.
  • Знаменитый текстовый редактор ex, из которого впоследствии вырос не менее легендарный vi.
  • Набор скриптов и утилит для системного администрирования.

Распространялся этот шедевр на магнитной ленте почтой. Билл Джой лично записывал ленты, упаковывал их в коробки и отправлял всем желающим по символической цене, покрывавшей лишь расходы на носитель и почтовые услуги (около 50 долларов). Внутри коробки находилась бумажная инструкция, составленная от руки или на печатной машинке. Никакой технической поддержки в корпоративном смысле не существовало — это было чистое проявление академической солидарности (задолго до того, как это стало монетизироваться через GitHub Sponsors).

«Мы просто хотели сделать систему лучше для себя и своих друзей в других университетах. Никто не думал, что из этого вырастет целая индустрия», — вспоминал Билл Джой в более поздних интервью.

Успех 1.BSD превзошел все ожидания. Десятки американских университетов установили паскаль-компилятор и редактор Джоя. Это показало руководству факультета в Беркли, что их группа способна не просто потреблять технологии Bell Labs, но и создавать качественный софт, признаваемый экспертным сообществом.

Путь к 2.BSD и рождение текстового редактора ex/vi

Успех первого релиза подтолкнул разработчиков к продолжению работы. В конце 1978 — начале 1979 года свет увидел релиз 2.BSD. Он принес с собой множество улучшений, но главным его подарком миру стал редактор vi (Visual mode for ex), созданный тем же Биллом Джоем.

До появления vi редактирование текста на терминалах было сущим кошмаром. Пользователям приходилось работать в строчных редакторах вроде ed, где не было возможности видеть весь документ целиком на экране — команды вводились вслепую для изменения конкретных строк. Билл Джой написал визуальный интерфейс для уже существовавшего в BSD редактора ex, используя возможности терминалов Lear Siegler ADM-3A (на клавиатуре которых клавиши ESC, контроля курсора и прочие имели специфическое расположение, оставившее след в истории эргономики).

Ниже приведен фрагмент кода на C из ранних версий исходников BSD, иллюстрирующий уровень тогдашней системной разработки под PDP-11:

#include <sys.h>
#include <dir.h>

/* 
 * Простейший пример работы с системными вызовами в окружении PDP-11 / BSD
 */
int main(int argc, char *argv[]) {
    int fd;
    char buffer[512];

    if (argc < 2) {
        write(2, "Использование: cat <файл>\n", 28);
        return 1;
    }

    fd = open(argv[1], 0);
    if (fd < 0) {
        write(2, "Ошибка открытия файла\n", 23);
        return 1;
    }

    int n;
    while ((n = read(fd, buffer, sizeof(buffer))) > 0) {
        write(1, buffer, n);
    }

    close(fd);
    return 0;
}

Этот код демонстрирует лаконичность раннего UNIX-окружения. Память была критически ограничена (архитектура PDP-11 накладывала жесткие лимиты в 64 КБ на код и 64 КБ на данные в пространстве процессов — современные разработчики столько тратят на один favicon.png), поэтому каждый байт на счету требовал от программистов ювелирной точности. Билл Джой славился своей способностью писать очень компактный и быстрый ассемблерный код, что позволяло редактору vi работать плавно даже на слабых телефонных линиях связи с высокой задержкой.

Освоив локальные ограничения архитектуры PDP-11, разработчики из Беркли вскоре уперлись в аппаратный потолок, заставивший их шагнуть в совершенно новую 32-битную реальность.

Взлет за пределы PDP-11: Архитектура VAX и BSD 3.0

Мир мини-компьютеров не стоял на месте. Компания DEC выпустила новую 32-битную машину архитектуры VAX (Virtual Address Extension), в частности модель VAX-11/780. Эта система обладала огромным потенциалом, но стандартная версия UNIX от AT&T (Seventh Edition) поначалу не имела полноценной поддержки новой 32-битной архитектуры VAX. Вернее, существовал порт 32V, но он не полностью использовал все аппаратные возможности VAX.

Именно здесь команда Беркли сделала важнейший шаг, переведя свою деятельность на новый уровень. Под руководством профессора Стюарта Фельдмана и при активном участии Билла Джоя была начата работа по переносу BSD на процессор VAX. Результатом стал релиз 3.BSD, выпущенный в конце 1979 года.

Главным техническим достижением 3.BSD стало внедрение полноценной подсистемы виртуальной памяти. Если PDP-11 страдала от жестких ограничений по размеру памяти, то VAX открывал эру настоящей виртуальной памяти с подкачкой страниц (paging). Переписанное ядро операционной системы позволяло запускать процессы, размер которых превышал объем физической оперативной памяти машины. Это превратило BSD в мощнейшую исследовательскую платформу, на которой можно было запускать тяжелые научные симуляции, компилировать огромные программные комплексы и проводить масштабные эксперименты.

Важные особенности ранних версий BSD для VAX перечислены ниже:

  1. Поддержка виртуальной памяти: эффективное управление страницами памяти и разделяемыми сегментами.
  2. Многопользовательская стабильность: система уверенно держала десятки одновременных подключений через последовательные порты.
  3. Расширенная стандартная библиотека: оптимизированные функции ввода-вывода и математические подпрограммы.
  4. Встроенные сетевые зачатки: подготовка почвы для будущей интеграции стека TCP/IP, которая навсегда изменит историю интернета.

Заключение

Рождение BSD Unix в стенах Калифорнийского университета в Беркли стало уникальным синергетическим эффектом академической свободы, талантливых инженеров и правильного железа во главе с PDP-11 и VAX. То, что начиналось как скромная коллекция утилит и патчей для внутреннего использования, благодаря энтузиазму Билла Джоя и его единомышленников превратилось в мощный инструмент, объединивший исследователей по всему миру.

В этой статье мы проследили путь от прибытия первой машины DEC до создания полноценных версий BSD, изменивших парадигму работы с памятью и заложивших основы современного программного обеспечения. Но это была лишь прелюдия. Впереди маячили еще более масштабные технологические прорывы: создание легендарного сетевого стека DARPA, интеграция TCP/IP и великие юридические баталии с корпорацией AT&T, которые закалили открытый код и подарили миру современное семейство свободных операционных систем (FreeBSD, OpenBSD, NetBSD). История BSD Unix только набирала обороты.

Изучайте исходные коды классических систем, запускайте ретро-конфигурации на виртуальных машинах и попробуйте написать свой первый крошечный модуль ядра или утилиту на C — прикосновение к истокам лучше всего объясняет, почему ваш текущий проект на Electron тормозит на 16 ГБ оперативной памяти.