В 80-х годах XX века компания Bell Labs внезапно решила, что Unix устарел. Эта операционная система, разработанная Кеном Томпсоном и Деннисом Ритчи в недрах Bell ещё в начале 70-х, прекрасно зарекомендовала себя в качестве платформы для обслуживания телефонии, учёта абонентов и автоматизации различных технологических процессов. Но в Bell Labs пришли к выводу, что нужно двигаться дальше — и главного разработчика Unix привлекли к созданию ОС нового поколения, получившей название Plan 9.

▍ Plan 9


Проектом занялось специализированное подразделение Bell, известное как «Исследовательский центр компьютерных наук» (CSRC), а фактически разработку вела та же команда, которая изначально трудилась над Unix и языком программирования С — Кен Томпсон, Ден Ритчи, Роб Пайк, Дэйв Пресотто и Фил Уинтерботт. Да и концепцию было решено оставить прежнюю, развив и усовершенствовав её. Название ОС её создателям навеял трешевый фильм ужасов «План 9 из открытого космоса» режиссёра Эдварда Вуда, а маскот ОС — зайчиха Гленда — была названа в честь киноленты «Глен или Гленда» того же режиссёра. Этим же именем в Plan 9 нарекли пользователя по умолчанию.


В основе новой операционной системы лежал применяемый в Unix принцип «всё есть файл», но здесь он был расширен до идеи «всё есть файл на любом устройстве» — ОС изначально была рассчитана на работу в сети по специальному файловому протоколу 9P. Это общий, независимый от среды протокол, обеспечивающий доставку сообщений в клиент-серверной архитектуре. В Plan 9 у каждого процесса имеется собственное изменяемое пространство имён, которое он может модифицировать, не затрагивая пространства имён связанных процессов. Среди таких модификаций предусмотрена возможность монтировать по протоколу 9Р соединения с серверами, что позволяет локальной ОС гибко использовать различные удалённые ресурсы — как отдельные файлы, так и устройства. Драйверы в Plan 9 реализуют свой управляющий интерфейс в виде локального пространства имён, поэтому к любому оборудованию можно получить доступ с помощью обычных операций чтения и записи, как к обычным файлам.

Таким образом предполагалось реализовать основное предназначение Plan 9 — работу в многопользовательских распределённых средах. В середине 80-х, когда проектировалась эта система, персональные компьютеры ещё не могли похвастаться мощностью процессоров, а также большими объёмами дисковой и оперативной памяти. Поэтому создатели ОС решили, что пользователи на конечных устройствах со слабой аппаратной конфигурацией будут работать в графической среде Plan 9 в режиме терминалов, все ресурсоёмкие процессы должны выполняться удалённо на более мощных серверах, а файлы большого объёма станут располагаться в сетевых файловых хранилищах. В общем, ещё несколько десятилетий назад в Bell придумали концепцию «облачной» операционной системы, примерно такую, которая в XXI веке успешно реализована в ChromeOS от Google и её клонах вроде CloudReady. Упрощая, можно сказать, что сеть, к которой подключены компьютеры под управлением Plan 9, превращается в одну большую виртуальную рабочую станцию с общими аппаратными ресурсами и хранилищами данных.

Есть и ещё одно преимущество подобной архитектуры с использованием пространств имён: все ресурсы в такой ОС определяются через подобие иерархической файловой системы, поэтому огромное количество драйверов и кода, которые живут внутри ядра в традиционных Unix-системах, включая Linux, здесь просто не нужны. Все они являются лишь процессами пользовательского пространства в Plan 9. Ядро первой версии этой системы состояло всего лишь из 18000 строк кода, версия 2006 года насчитывала уже 150 000 строк. Сравните это с более чем 4,8 миллионами строк кода в ядре Linux.


Plan 9 использовала оконный интерфейс Rio, разработанный в Bell Labs программистом Робертом Пайком. В качестве базовой кодировки в ОС был внедрён универсальный стандарт UTF-8, разработанный Кеном Томпсоном и Робом Пайком специально под этот проект. Первый релиз Plan 9 состоялся в 1992 году и стал доступен для университетов: «клиентские» версии ОС можно было установить на IBM-совместимые компьютеры или ПК NeXTstations, а в качестве «серверов» выступали Sun Sparcstation, SGI Power и SGI Magnum. В 1995-м при посредничестве книжного издательства Harcourt Brace ОС Plan9 стала доступна для коммерческих организаций — партнёров AT&T, при этом стоимость лицензии составляла 350 долларов. Однако к началу 1996 года создатели переключились на новый проект — Inferno, охладели к Plan 9, и дальнейшая разработка этой ОС была заморожена.

В 2000 году исходный код Plan 9 был опубликован в открытом доступе, а два года спустя компания Alcatel-Lucent Technologies, которой перешли активы исследовательского центра Bell, сообщила, что отныне система распространяется под открытой лицензией Lucent Public License (позже права на ОС получила некоммерческая организация Plan 9 Foundation). Это событие, в свою очередь, дало старт развитию нескольких независимых проектов на основе Plan 9, один из которых получил название 9front.

▍ 9front


Под этим названием скрывается неофициальный форк Plan 9, над которым с 2011 года трудится независимый коллектив разработчиков из сообщества NineTimes, где состоят поклонники оригинальной ОС от Bell. Одной из главных претензий к Plan 9, тормозивших развитие системы, было тотальное отсутствие драйверов и слабая поддержка периферийного оборудования. Именно эту проблему постарались решить разработчики 9front: они написали для своей ОС драйверы USB, Wi-Fi, нескольких аудиокарт (AC97, HDA, SB 16/ESS), а также встроили в ОС игровой эмулятор — в нём, например, можно запустить DOOM. Официальный сайт проекта расположен по адресу https://9fs.net. Форк распространяется под той же открытой лицензией Lucent Public License, что и Plan 9. Существуют версии 9front для i386, x86_64, ноутбука MNT Reform и Raspberry Pi.


Для инсталляции 9front на ПК достаточно записать IMG-образ ОС на компакт-диск и запуститься с него, либо «раскатать» его на загрузочную флешку. Владельцы Raspberry Pi и MNT Reform могут развернуть образ системы непосредственно на SD-карту.

Создатели 9front разместили в сети репозиторий пакетов, значительно облегчающий установку компонентов системы. В форке был полностью переписан загрузчик: здесь он называется 9boot, и отличается использованием rc-скриптов, которые позволяют получить доступ к shell на любом этапе загрузки (что может пригодиться, если что-то пошло не так).

Plan 9 поддерживала несколько файловых систем: во-первых, нативную Fossil, разработанную в Bell Labs именно для этой платформы, а также Kfs, Paq, cwfs и FAT. В 9front основной ФС является cwfs (cwfs64x) — это тоже файловая система из Plan 9, которая поддерживает шифрование дисковых разделов, а также позволяет безопасно хранить резервные копии компонентов ОС и пользовательских данных.

В 9front имеется компилятор языка программирования Go, также в комплект поставки был добавлен простой текстовый редактор hold. Для обновления ОС используется распределённая система Mercurial (Hg), с целью более гибкой поддержки оборудования была внедрена подсистема инициируемых сообщениями прерываний MSI (message signalled interrupts). Для установки сторонних программ применяется файловый формат .pkg.


В качестве браузера в 9front используется уникальная разработка под названием Mothra. Этот браузер был написан программистом Bell Labs Томом Даффом для второй версии Plan 9. Программа названа в честь монстра из японского фильма ужасов Mothra — Дафф выбрал имя по аналогии с браузером Netscape, название которого, Mozilla, представляет собой смесь наименования Mosaic (его прародителя) и японского монстра Godzilla.


Mothra имеет два режима отображения пользовательского интерфейса, которые можно переключать из контекстного меню по щелчку правой кнопкой мыши. Первый режим отображает URL-адрес и заголовок текущей страницы, историю просмотров в виде списка адресов, посещённых во время текущего сеанса, и строку для ввода URL. Второй режим удаляет весь пользовательский интерфейс и отображает страницу в полноэкранном режиме. Как и другие приложения 9front/Plan 9, интерфейс Mothra довольно лаконичен, но этого минимализма вполне достаточно для выполнения его основной функции – просмотра веб-страниц.

Имеется в 9front и встроенное приложение для обмена электронной почтой — Upas. Программа поддерживает протоколы IMAP, POP3 и SMTP, но настройка почты потребует редактирования конфигурационных файлов, так что с этим придётся повозиться. Впрочем, пользователю ничто не мешает просматривать и отвечать на почту прямо в браузере через веб-интерфейс.


Вообще, графический интерфейс Rio, доставшийся системе 9front в наследство от Plan 9, отсылает нас к той эпохе, когда эта ОС активно разрабатывалась — к концу 80-х годов ХХ столетия. Он настолько аскетичен, что напоминает скорее даже не Windows 3.11, а Windows 1.0. Что-то подобное мы с друзьями пытались самостоятельно написать в 1990 году на Turbo Pascal 7.0, в надежде создать лёгкую и компактную псевдографическую оболочку для MS-DOS. По современным меркам выглядит очень крипово олдово, но зато позволяет в полной мере окунуться в прошлое.


Система регулярно обновляется, последняя актуальная версия датирована октябрём 2022 года. В ней заявлена поддержка архитектуры AMD64 и 64-разрядного адресного пространства, а также появление эмулятора реального режима. Попробовать 9front можно на виртуалке, либо установив ОС на Rasbberry Pi 1 или 2 (для них существует своя версия системы), или 3 и 4 (для этих одноплатников есть другая версия).


После загрузки с установочного диска пользователь попадает в терминал, из которого можно запустить консоль (/bin/rc/), являющуюся частью графического интерфейса. Хотя 9front был задуман как дальнейшее развитие концепций Unix, совместимость с ранее существовавшим программным обеспечением Unix никогда не была целью проекта. Многие утилиты командной строки в 9front имеют те же имена, что их аналоги в Unix, но работают по-другому. Поэтому тем, кто привык к bash, поначалу придётся в этой системе несладко: они будут вынуждены регулярно заглядывать в FAQ, который на сайте проекта называется FQA (Frequently Questioned Answers), а сама страничка выглядит как-то вот так.


Вообще, весь проект пропитан здоровой долей олдскульного хакерского юмора и выглядит довольно стёбно. Например, пару раз перезагрузив официальную страницу проекта https://9fs.net, вы с удивлением обнаружите, что ссылки в «подвале» каждый раз отображаются разные. Да и документация написана в довольно своеобразном стиле, который придётся по вкусу всем, кто хотя бы раз в жизни пытался написать собственный драйвер. Даже официальный слоган 9front — the plan fell off («план отвалился») — представляет собой отсылку к классическому австралийскому комедийному скетчу «the front fell off»: таким образом разработчики по-доброму шутят над создателями оригинальной Plan 9 из Bell Labs.

Тем не менее, система работает. Хотя для повседневного использования она не годится: как и Plan 9, 9front — это экспериментальная, исследовательская ОС, основной целью создания которой было воплотить в жизнь некоторые первоначальные задумки Unix и реализовать их на более совершенной аппаратной платформе. Это в целом удалось: в исследовательских лабораториях Plan 9 довольно эффективно использовался в качестве платформы для распределённых вычислений. Как минимум, Plan 9 и 9front доказали, что базовая концепция Unix — каждый системный интерфейс может быть представлен в виде набора файлов — вполне успешно реализуется в современной «облачной» ОС.

Как и другие форки Plan 9, среди которых следует отметить 9atom, Harvey OS и Jehanne OS, 9front — это ОС для программистов и хакеров, для тех, кому больше по душе копаться в конфигах и писать собственный код, чем запускать чужой. 9front можно назвать наиболее активным ответвлением «классической» Plan 9. Создатели этой ОС непрерывно работают над улучшением аппаратной поддержки и разработкой новых драйверов. Имеют их усилия и практическое применение: например, на принципах, схожих с архитектурой Plan 9, работает протокол ATA over Ethernet, созданный для кластеров NAS. С появлением и развитием интернета вещей и одноплатных компьютеров, имеющих ограниченную производительность, востребованность «облачных» ОС, которые позволяют гибко перераспределять вычислительные ресурсы в сети и обеспечивать их балансировку, наверняка будет расти. А значит, у этого проекта есть будущее.

Известный американский программист и хакер Эрик Стивен Реймонд писал:

Не похоже, что Plan 9 потерпел неудачу просто потому, что он не был достаточно убедительным улучшением Unix, чтобы заменить его. По сравнению с Plan 9, Unix скрипит, гремит и имеет повсюду пятна ржавчины, но он выполняет свою работу достаточно хорошо, чтобы удерживать свои позиции. Это отличный урок для амбициозных системных архитекторов: самый опасный враг лучшего решения — существующая кодовая база, которая достаточно хороша для пользователей.

В чём-то он, безусловно, прав.

Играй в наш скролл-шутер прямо в Telegram и получай призы! ????️????

Комментарии (15)


  1. GospodinKolhoznik
    00.00.0000 00:00
    +6

    Логотип похож на логотип языка Go, и так-же безобразен.


    1. Holmogorov Автор
      00.00.0000 00:00
      +4

      Это же за-а-айка! :)


      1. KoCMoHaBT61
        00.00.0000 00:00
        +1

        Фильм "Glen or Glenda" был одним из первых фильмов, которые поднимали повесточку: главный герой -- трансвестит. В США в 1953 году это было довольно смело...


        1. Holmogorov Автор
          00.00.0000 00:00
          +9

          Сразу вспоминается "В джазе только девушки", правда, там - не трансвеститы, а травести, и это 1959, а не 1953... Но финал "у каждого свои недостатки" тоже весьма смел!


        1. spqr_voldi
          00.00.0000 00:00

          Эд Вуд вообще был смелым мужиком. Ходить в атаку на фашистов в женском белье не каждый сможет.


          1. KoCMoHaBT61
            00.00.0000 00:00

            Ну так, он с вампиром-наркоманом дружил!


    1. Rustacean
      00.00.0000 00:00
      +1

      Так дизайнер один и тот же Renée French: https://en.wikipedia.org/wiki/Renée_French


  1. Ahuromazdie
    00.00.0000 00:00
    +1

    А про Inferno напишете?


    1. Holmogorov Автор
      00.00.0000 00:00
      +1

      Да, была такая задумка :)


  1. Zhuikoff
    00.00.0000 00:00
    +4

    Temple OS. Очень необычно, но с изюминкой. Написана одним человеком, правда с диагнозом.


  1. s207883
    00.00.0000 00:00

    Сложилось впечатление, что просто толпа кодеров насмотрелись странных фильмов и начали программировать по вдохновением :) Результат и описан в статье.


    1. Holmogorov Автор
      00.00.0000 00:00
      +1

      Все-таки у толпы кодеров был вполне определенный заказчик, стремившийся заменить Unix чем-то "более современным". К слову, после закрытия проекта один из основателей Unix и разработчик этой ОС Кен Томпсон ушел из Bell, где проработал более 30 лет... Такие дела.


  1. fishHook
    00.00.0000 00:00
    +3

    Есть и ещё одно преимущество подобной архитектуры с использованием
    пространств имён: все ресурсы в такой ОС определяются через подобие
    иерархической файловой системы, поэтому огромное количество драйверов и
    кода, которые живут внутри ядра в традиционных Unix-системах, включая
    Linux, здесь просто не нужны.

    Одной из главных претензий к Plan 9, тормозивших развитие системы, было
    тотальное отсутствие драйверов и слабая поддержка периферийного
    оборудования.

    ничего не понял

    Ядро первой версии этой системы состояло всего лишь из 18000 строк кода,
    версия 2006 года насчитывала уже 150 000 строк. Сравните это с более
    чем 4,8 миллионами строк кода в ядре Linux.

    опять не понял, ну сравнил и что? Наверное, имелось в виду, что кодовая база Plan9 существенно меньше и это хорошо? Но ведь миллионы строк линукса написаны не от балды, это поддержка тысяч единиц оборудования, множества файловых систем, протоколов, аппаратных архитектур. Какое-то это очень наивное сравнение.


    1. czz
      00.00.0000 00:00
      +2

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

      Имеется в виду, что они не нужны в ядре. Но в целом - все равно нужны.

      опять не понял, ну сравнил и что? Наверное, имелось в виду, что кодовая база Plan9 существенно меньше и это хорошо?

      Здесь тоже ядро plan9 противопоставляют монолитному ядру linux, где все драйвера в ядре.


  1. kITerE
    00.00.0000 00:00

    Есть и ещё одно преимущество подобной архитектуры с использованием пространств имён: все ресурсы в такой ОС определяются через подобие иерархической файловой системы, поэтому огромное количество драйверов и кода, которые живут внутри ядра в традиционных Unix-системах, включая Linux, здесь просто не нужны. Все они являются лишь процессами пользовательского пространства в Plan 9.

    Как пространство имён влияет на вынесение системного кода из ядра (драйверов) в пользовательское пространство?

    По описанию немного похоже на микроядро, но Plan 9 не относится к этой категории.