Кто-то хочет, чтобы Linux продолжал работать и через тысячу лет
Когда люди говорят о сохранении программного обеспечения, они обычно имеют в виду хранение архивов, зеркал исходного кода, образов эмуляторов или старых бинарных файлов, прошедших множество проверок на совместимость. Eternal предлагает другой подход. Он задается вопросом: что было бы, если бы компьютеры были настолько простыми, что кто-то в далеком будущем смог бы собрать их по краткому описанию и снова запустить современное программное обеспечение?
В этом и заключается основная идея инициативы Eternal Software, проекта с открытым исходным кодом, цель которого — обеспечить работоспособность программного обеспечения в течение… 1000 лет. В его основе лежит «Вечный компьютер» — намеренно простая виртуальная машина, построенная всего на одной инструкции.
Единственная инструкция называется Subleq, что расшифровывается как «вычесть и перейти по ветке, если результат меньше или равен нулю». По сути, машина вычитает одно число из другого, а затем решает, что делать дальше, в зависимости от того, равен ли результат нулю или отрицателен. Ни больше ни меньше. Вот и вся основа.
Я понимаю, что на первый взгляд это может показаться просто экспериментом в области компьютерных наук, а не чем-то, что действительно может запустить Linux. Но Eternal именно это и делает. В проекте используется модифицированная версия Subleq под названием Subleq+, а также бэкенд LLVM, порт ядра Linux, поддержка среды выполнения C и C++, uClibc-ng, BusyBox и эталонная виртуальная машина. В итоге получается автономная капсула Linux, которая может загружаться в оболочку внутри этой крошечной машины.
В рамках проекта утверждается, что современное программное обеспечение сложно сохранить, поскольку оно зависит от множества других факторов. Программе нужны операционная система, библиотеки, компиляторы, фреймворки, особенности аппаратного обеспечения, встроенное ПО, форматы файлов и множество допущений, характерных для того времени, в котором она была создана. Сохранить только бинарный код зачастую недостаточно. Даже если вы сохраните эмулятор, он станет еще одним сложным элементом, который придется адаптировать будущим системам.
Eternal пытается упростить эту задачу. Вместо того чтобы ждать, пока люди в будущем пересоберут современное аппаратное и программное обеспечение, проект предлагает создать настолько простую машину, что ее устройство можно описать в очень компактном формате. Согласно информации на сайте проекта, эталонная виртуальная машина состоит примерно из 30 строк псевдокода, а в файле README на GitHub указано, что версия на языке C занимает около 50 строк.
Eternal упаковывает сохраненное программное обеспечение в так называемые капсулы. Каждая капсула включает в себя операционную систему, библиотеки, приложения и все зависимости в одном пакете. В примере с проектом это означает, что капсула на базе Linux может быть загружена и запущена виртуальной машиной Eternal.
Вот тут-то проект и становится по-настоящему интересным. В репозитории GitHub есть инструкции по созданию виртуальной машины, распаковке загрузочного образа Linux, его запуску и установке программного обеспечения. В файле README даже предлагается попробовать запустить DOOM после того, как Linux будет установлен и запущен.
Eternal не претендует на роль практичного дистрибутива Linux и не стремится к этому. Это не замена QEMU, не новая платформа для настольных компьютеров и не реалистичный способ запуска обычного программного обеспечения. Его истинная ценность заключается в том, что он поднимает вопрос: насколько простым должен быть компьютер, чтобы программное обеспечение можно было сохранять на протяжении веков, а не десятилетий?
Но часть, связанная с Linux, вполне реальна. Она охватывает весь программный стек: LLVM для компиляции, Linux в качестве операционной системы, BusyBox для пользовательских инструментов, библиотеки времени выполнения и виртуальную машину для запуска капсулы. Это редкий эксперимент, в котором в одном месте собрано что-то крайне минималистичное и очень практичное.
В этом есть доля исторической иронии. Linux обычно работает на все более сложном оборудовании: серверах, ноутбуках, телефонах, встроенных платах и облачных системах. Eternal делает прямо противоположное. Он сводит устройство к почти примитивной модели, а затем добавляет ровно столько инструментов, сколько нужно, чтобы на нем все равно можно было запустить Linux.
Пока неясно, станет ли Eternal чем-то большим, чем просто интересным экспериментом. Проект новый, и цели у него амбициозные. Никто не может с уверенностью сказать, будет ли программная капсула работать через 1000 лет. Но как любопытный проект с открытым исходным кодом он заслуживает внимания.
Так сможет ли кто-то в далеком будущем воссоздать часть нашего цифрового мира, имея в распоряжении лишь капсулу, краткое описание машины и возможность вычитать числа? Для проекта, основанного всего на одной инструкции, это удивительно масштабная идея.
Желающие могут узнать больше в репозитории проекта на GitHub.
Редактор: AndreyEx
Важно: Данная статья носит информационный характер. Автор не несёт ответственности за возможные сбои или ошибки, возникшие при использовании описанного программного обеспечения.