June 12

Collapse OS: операционная система судного дня  

Порыв ветра принёс удушливый запах гари с радиоактивных пустошей — видать, кочевники опять подожгли сухую траву. Сталкер осмотрелся: столб серого дыма лениво тянулся к небу прямо за терриконом, растворяясь в пелене низких облаков. Нужно спешить. Поудобнее перехватив автомат и поправив на поясе флягу с водой, он шагнул в густую тень руин, оставшихся от старого торгового центра. Денёк сегодня выдался неудачным: среди рассыпанного по развалинам хлама отыскалась лишь одна компьютерная плата, да и та оказалась изрядно оплавленной и закопчённой, словно душа грешника, каким-то чудом вырвавшаяся из преисподней…

По всей видимости, примерно так представляет себе недалёкое будущее человечества канадский программист Виржиль Дюпра, создавший на голом энтузиазме «операционную систему судного дня»: Collapse OS. По замыслу разработчика, эта операционка должна запускаться на самом слабом железе, которое можно будет отыскать после глобального катаклизма на дымящихся руинах земной цивилизации. Причём в своём нынешнем виде Collapse OS уже вполне работоспособна — на устройствах, оборудованных процессором Z80. Ну, а поскольку я являюсь счастливым обладателем аж целых двух «Спектрумов», я не мог устоять перед соблазном познакомиться с этой системой поближе. Что ж, давайте представим себе, что конец света уже наступил и посмотрим, с каким софтом нам предстоит иметь дело в столь печальных обстоятельствах. Надевайте противогазы, и в путь. Не отставайте!

▍ История проекта

Выбор архитектуры, под которую Виржиль Дюпра изначально разрабатывал Collapse OS, совсем не случаен: Z80 — один из самых массовых микропроцессоров в мире. На его основе собирался не только пресловутый «Синклер» и его многочисленные клоны, но также несметное количество игровых приставок, кассовых аппаратов, терминалов, автоответчиков, калькуляторов, музыкальных синтезаторов и других подобных устройств. Некоторое оборудование, работающее на базе идентичных Z80 чипов, вполне себе современное. Процессор выпускался многомиллионными тиражами сразу несколькими компаниями (включая японскую NEC и даже промышленность стран СЭВ), а если прибавить к нему более поздние микроконтроллеры, сохранившие совместимость с оригинальными моделями Z80 и Z180, то итоговая цифра побьёт все рекорды Intel и AMD вместе взятых.

Видимо, впечатлившись этими показателями, Дюпра посчитал, что отыскать на радиоактивной свалке Z80 будет намного легче, чем любой другой процессор. Да и вернуть к жизни такую плату при помощи паяльника и кувалды в заброшенном бомбоубежище несравнимо проще, чем замысловатую материнку от современной персоналки. Старые конструкции довольно примитивны, и, следовательно, более ремонтопригодны. Кроме того, в архитектуре Z80 насчитывается всего лишь 9000 транзисторов. Сравните это с миллионами транзисторов, прячущихся под корпусом любого современного процессора. Возобновить серийный выпуск таких микросхем в условиях тотального коллапса можно в сжатые сроки.

Имеется и ещё один аргумент: быстрый технологический прогресс возможен только в обществах, имеющих доступ к дешёвой энергии. Катастрофа мирового масштаба неизбежно приведёт к её удорожанию, и если человечество срочно не изобретёт какую-нибудь «технологию-единорога» вроде ядерного синтеза, ценные джоули и ватты придётся тратить не на науку, а на элементарное выживание. Вот почему в постапокалиптическом мире с дорогой энергией на передний план выйдут так называемые «низкие технологии». Согласитесь, некоторая логика в этих рассуждениях всё-таки есть.

Сам Дюпра рассказывал о возникновении своей идеи так. Современная компьютерная индустрия очень сильно глобализована и зависит от международной цепочки поставок, в которую включены производители электроники из нескольких стран, расположенных на разных континентах. В случае тотального армагеддона эта цепочка рухнет, и человечество вернётся в менее технологичную эпоху. Потребуются десятилетия, чтобы восстановить прежний технический уровень цивилизации. С помощью Collapse OS Дюпра надеется создать экосистему, способную работать с более простыми чипами, которые можно получить из самых разных источников и собрать что-то на их основе примитивным выводным монтажом, например, с использованием самодельных макетных плат.

«Компьютеры в случае катастрофы безвозвратно выйдут из строя, и мы больше не сможем программировать микроконтроллеры», — писал Дюпра. — «Это откроет новую эпоху «мусорной электроники»: детали больше не будут производиться, но у нас под ногами валяются миллиарды электронных плат. Те, кому удастся создать новые конструкции из этих частей с помощью низкотехнологичных инструментов, станут очень могущественными. Чтобы возродить технологии, человечеству понадобится система, которую можно будет собрать из утилизированных деталей и уже с её помощью запрограммировать новые микроконтроллеры». Иными словами, по замыслу канадца, на фундаменте этой постапокалиптической экосистемы можно будет возродить былое могущество Галактической Импе… Ой, то есть, вернуть к жизни IT-индустрию почти в прежнем виде. Ну, или хотя бы попытаться.

▍ Что внутри?

Архитектурно Collapse OS состоит из модульного ядра с поддержкой базового набора устройств: последовательный порт, клавиатура и дисплей. Лаконичный пользовательский интерфейс целиком и полностью соответствует принципу, который много лет назад озвучил мой институтский преподаватель по программированию: «Нортон — софт для дурака, есть командная строка!».

Прикладных функций в системе насчитывается ровно две: ввод и редактирование текста. Вдобавок к этому имеется компилятор Ассемблера, позволяющий собирать программы под архитектуры Z80, Intel 8086, Motorola 6809, MOS 6502 и AVR, что, собственно, и является основным предназначением этой операционной системы. Для айтишника, прячущегося в подземных лабиринтах от толп зомби и рыщущих по поверхности планеты крыс-мутантов, этого вполне достаточно.

Кроме того, разработчик заложил в архитектуру ОС возможность саморепликации, то есть, автоматического развёртывания на другом устройстве, соединённом с текущим. Эта функция чрезвычайно важна в мире, где недоступны другие привычные носители информации — SD-карты, флеш-накопители, оптические диски. Фантазия сразу рисует картину: вышедшая из-под контроля Collapse OS распространяется подобно вирусу по всему миру и вызывает технологическую катастрофу, выбраться из которой возможно только с помощью самой Collapse OS… Так, стоп, что-то меня снова понесло в область научной фантастики.

Основным языком взаимодействия с оболочкой в Collapse OS является Форт, и разработчик настоятельно рекомендует пользователям ознакомиться с книгой Starting Forth: An Introduction to the Forth Language and Operating System for Beginners and Professionals Лео Броуди, прежде чем забираться в дебри этой операционной системы. Впрочем, для тех, кто слышит о Форт впервые (вроде меня), существует довольно лаконичная документация, на страницах которой кратко описаны основные принципы работы с этой ОС. Привычнее и понятнее она от этого не становится, но, по крайней мере, перестаёшь чувствовать себя представителем «поколения Тик-Тока», впервые в жизни увидевшим MS-DOS.

Исходный код Collapse OS открыт, а сама система существует в виде набора «портов» — отдельных репозиториев, содержащих исходники, процедуры сборки и аппаратный драйвер, который позволяет Collapse OS запускаться на машинах с различной архитектурой. Разумеется, есть порт для Z80 (поддерживаются RC2014, TI-84+, Z80-MBC2, TRS-80 Model 4P и Sega Master System), 8088 (практически все PC/AT), MOS 6502 (Apple IIe) и Motorola 6809 (TRS-80 Color Сomputer 2). Основная разработка и тестирование системы выполнялись на современной машине RC2014 — небольшом 8-битном модульном компьютере на базе Z80. Помимо родных «Спектрумовских» программ RC2014 может запускать приложения ZX81, UK101, S100, Superboard II и Apple I. Компьютер имеет 8 Кбайт ПЗУ, 32 Кбайт ОЗУ, работает на частоте 7,37 МГц и обменивается данными по последовательному порту со скоростью 115 200 бод. Иными словами, он похож на аутентичный «Синклер», только собран на современной элементной базе, возможно, поэтому Дюпра и выбрал его в качестве базовой модели для своих изысканий.

Репозиторий RC2014 — это «канонический» порт проекта Collapse OS, поэтому он поддерживается лучше всего. Правда, в версии RC2014 нет одной важной вещи — подсистемы Grid, в связи с чем она не позволяет создавать и тестировать такие приложения, как, например, визуальный текстовый редактор. Но он доступен в версии для PC/AT — она способна запускаться в QEMU.

Ну, а если вам совсем не хочется городить на своём компьютере виртуалку, собирать из запчастей RC2014 или искать на досках объявлений старый «Спектрум», можно протестировать Collapse OS прямо в браузере с помощью эмулятора, созданного программистом Майклом Ширлом.

▍ Dusk OS

У Collapse OS есть «старший брат»: 32-разрядная операционная система Dusk OS, также основанная на Forth. Разработчики полагают, что её будут использовать в том случае, если посетивший человечество пушистый полярный зверёк окажется недостаточно полным глобальным. У «классической» Collapse OS имеется фундаментальная архитектурная проблема: поскольку операционная система сама себя кросс-компилирует, она должна поддерживать двоичный объект для запуска виртуальной машины POSIX, который довольно сложно обновлять в процессе сборки.

В Dusk OS от Collapse осталось только абстрактное ядро. Сама Dusk загружается из POSIX, а уже из неё происходят обращения к ядру Collapse OS, благодаря чему можно обойтись без использования такого «необновляемого» BLOB-объекта. Ну, а поскольку и Collapse OS, и Dusk OS базируются на Форт, они программно совместимы, и из «старшей» системы можно собрать любой порт Collapse — в процессе сборки нужные компоненты будут помещены в соответствующий Makefile, и с его помощью формируется образ Collapse OS, который уже не содержит «ненужных» элементов Dusk.

Фактически, эта операционка создана для Армагеддона в версии «лайт», когда новые современные компьютеры уже не производятся, но у человечества пока ещё не закончились старые. Dusk OS включает компилятор Си, с помощью которого можно портировать в эту систему приложения из классического Unix. Это один из важнейших компонентов системы — компилятор написан на Форте и загружается очень рано в процессе запуска ОС, чтобы скомпилировать необходимые драйверы. То есть, операционная система каждый раз динамически собирается из исходников прямо в процессе своей загрузки. При этом Dusk OS использует самописный компилятор Си. Разработчики могли бы взять любой компактный компилятор вроде tcc, требующий POSIX. Но для его загрузки автоматически потребуется сама эта система POSIX, которая состоит из огромного количества строк кода. Создатели Dusk OS отказались от этой идеи и запилили собственный компилятор — всё ради экономии ресурсов.

ОС может работать на i386 или ARM (вот список поддерживаемого оборудования), уславливается на разделы с файловыми системами FAT12/FAT16, а вот поддержка FAT32 пока отсутствует. Но самое главное — для нормальной работы Dusk OS требует всего лишь 180 Кбайт оперативной памяти. Она очень компактна: общее количество строк кода, включающих полностью загруженную операционную систему на процессоре i386, с драйвером файловой системы FAT16, с компилятором Cи, ассемблером i386 и текстовым редактором Grid, составляет менее 6000. А само ядро состоит из 1000 строк кода. Для сравнения: одно только ядро Linux содержит порядка 22 миллионов строк кода (с комментариями и пустыми строками — 29 миллионов).

Компьютер под управлением Dusk OS имеет все инструменты, необходимые для улучшения самой операционной системы путём портирования или разработки приложений, а также для создания носителя, с помощью которого можно запустить Dusk OS на другом компьютере. С этой целью в составе ОС предусмотрена написанная на Cи POSIX-совместимая виртуальная машина, которая может генерировать готовые к использованию образы Dusk OS.

Ассортимент инструментов для поддержки периферии пока ещё невелик: это драйвер ATA (позаимствованный из NetBSD 9.3), а также драйвера USB-контроллера DWC и USB-клавиатуры из Plan 9. В составе ОС есть простой текстовый редактор, библиотека zlib, ассемблеры и дизассемблеры для i386 и ARM, уже упоминавшийся ранее компилятор Си, эмулятор MOS 6502, а ещё — эмулятор RISC5, позволяющий запускать Project Oberon.

Иными словами, Dusk OS представляет собой базовый инструмент для работы на очень старом и очень слабом железе, которое может оказаться под рукой в случае глобальной катастрофы. Сами создатели принципиально называют юзеров Dusk OS не «пользователями», а «операторами», объясняя разницу следующим образом: «вы пользуетесь телефоном, кофемашиной, чёрт возьми, в наши дни вы пользуетесь даже автомобилем. Но вы управляете бульдозером, вы управляете краном, вы управляете самолётом. Ключевое различие — в степени контроля. Вы можете управлять Tesla, если вы ведущий инженер Tesla. Но у вас гораздо больше шансов по-настоящему управлять газонокосилкой».

Оператор Dusk OS — это человек творческий, близкий к аппаратному обеспечению, умеющий читать таблицы данных. Здесь нет «юзермода» или «пользовательского пространства»: каждый инструмент, предоставляемый операционной системой или создаваемый оператором, может быть напрямую использован в системной памяти. Никаких посредников. Добро пожаловать в новый дивный мир постапа.

▍ Вместо послесловия

Несмотря на то, что в 2023 году сам Виржиль Дюпра взял творческий отпуск и отошёл от непосредственной разработки Collapse OS и Dusk OS, чтобы заняться развитием более актуальных современных технологий, оба проекта имеют развёрнутую дорожную карту развития. В планах — поддержка различных периферийных устройств, таких как ЖК-экраны, дисплеи E-ink, обеспечение совместимости с большим количеством устройств хранения: дискетами, компакт-дисками, ленточными накопителями. Со временем разработчики надеются портировать ОС на процессоры с другими архитектурами.

По поводу реальных перспектив своего детища Виржиль Дюпра оптимистично пишет: «этот проект актуален только в том случае, если коллапс имеет определённый масштаб. Достаточно слабая катастрофа — и система бесполезна, слишком серьёзная — и она тем более останется невостребованной (кому нужны микроконтроллеры, когда надо спасаться от каннибалов?). Но при определённых масштабах катастрофы этот проект изменит ход нашей истории. Однако даже если эта ОС окажется бесполезной, попробовать всё равно было интересно».