Linux планирует жить 1 000 лет: разработчики уже готовят решение проблем 2038, 2486 и 3026 годов
19 января 2038 года Linux перестанет работать. 3 июля 2486 года — — снова. А что будет в 3026-м? Сайт Linuxiac обратил внимание на необычный открытый проект — Eternal Software Initiative: команда разработчиков создает виртуальную машину настолько простую, что человек будущего сможет воссоздать её по краткому описанию и запустить на ней установлен современный Linux. Цель — сохранить программное обеспечение не на десятилетия, а на тысячу лет. В README проекта рекомендуется первое, что нужно сделать после загрузки Linux: запустить DOOM.
Почему обычное сохранение не работает
Проблема программной архивации глубже, чем кажется. В проекте утверждается: современное программное обеспечение сложно сохранить, поскольку оно зависит от слишком многих других факторов. Программа требует операционную систему, библиотеки, компиляторы, фреймворки, поведение аппаратного обеспечения, микропрограммы, форматы файлов и бесчисленные допущения своей эпохи.
Сохранить только бинарник часто недостаточно. Даже если сохранить эмулятор —, он сам становится сложным артефактом, который будущим системам придётся разгадывать. Это замкнутый круг: чтобы запустить старый код, нужен эмулятор; чтобы запустить эмулятор, нужна платформа; чтобы платформа заработала — ещё одна платформа. Eternal предлагает вырваться из этого замкнутого круга, сократив сложность до абсолютного минимума.
Одна инструкция на всю машину
В основе Eternal — «Eternal Computer» лежит намеренно простая виртуальная машина, построенная вокруг единственной инструкции. Эта инструкция называется Subleq: она вычитает одно число из другого и решает, что делать дальше, в зависимости от того, меньше ли результат нуля или равен ему, или нет. Теоретически любой алгоритм можно описать с помощью Subleq — Это доказанный факт теории вычислений. На практике это означает: описание такой машины умещается в нескольких абзацах. Человек из 3026 года, который найдёт это описание, сможет воссоздать машину на любом носителе — — от кремниевого чипа до механического устройства.
Как это выглядит изнутри
Проект использует модифицированную версию Subleq+ в сочетании с бэкендом LLVM, портом ядра Linux и поддержкой сред реализации на C и C++, uClibc-ng, BusyBox и эталонной виртуальной машине. Результат — самодостаточная Linux-капсула, которая загружается в командную строку внутри этой крошечной машины.
Eternal упаковывает сохраненное программное обеспечение в так называемые «капсулы» — каждая из которых содержит операционную систему, библиотеки, приложения и все зависимости в одном пакете. GitHub-репозиторий содержит инструкции по сборке виртуальной машины, распаковке образа Linux, запуску системы и — да, запуску DOOM внутри неё.
«Eternal не предназначен для практического использования в качестве дистрибутива Linux и не претендует на эту роль. Это не замена QEMU, не новая настольная платформа и не реалистичный способ запуска повседневного программного обеспечения. Его истинная ценность — заключается в вопросе, который он поднимает: насколько простым должен быть компьютер, чтобы сохранность программного обеспечения продолжалась centuries, а не decades?» — — говорится в описании проекта.
Контекст: Linux и проблема 2038 года
Тема долгосрочного выживания Linux — не только философская. У неё есть и чисто техническая сторона. Так называемая проблема Y2K38 означает, что системы, в которых время хранится в виде 32-битного целого числа секунд, отсчитываемого с 1 января 1970 года, не смогут обрабатывать даты после 03:14:07 UTC 19 января 2038 года — когда это число переполнится. Некоторые частичные решения — такие как «большие временные метки» в файловой системе XFS, введённые в Linux 5.10 — лишь переносят проблему на 2486 год.
Полный переход на 64-битный time_t теоретически даёт около 292 миллиардов лет запаса — но касается лишь части стека. Eternal решает другой уровень проблемы: даже если Linux технически справляется с временными метками через тысячу лет — кто и на чём его запустит? Именно этот вопрос проект ставит с неожиданной серьёзностью.
Реалистична ли эта цель
Тысяча лет — период, за который исчезали цивилизации, языки и материалы. Но проект сознательно не претендует на практичность: это скорее исследовательский вопрос о пределах простоты. Если кому-то в 3026 году попадет в руки описание машины с одной инструкцией и набором капсул, — Linux загрузится. И первое, что увидит потомок, — это командная строка. А если захочет — DOOM.
Источник: Linuxiac

