В 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 и получай призы! ?️?