Дорогие читатели, вы, наверное, не слышали об AerynOS. Это — новый дистрибутив, который его автор — Ikey Doherty — спроектировал прямо с нуля, используя свой богатый опыт с Solus Linux и ClearLinux. Хорошая новость — в том, что всё получилось, и дистрибутив сейчас в стадии твёрдой альфы, плохая — что автор снова отошёл от дел на неопределённое время.

Но, прежде чем взять долгую паузу в разработке, Ikey Doherty написал длинный пост о технической стороне вопроса — какие идеи были заложены в AerynOS и как они воплощались на практике. Несмотря на то, что всё удалось реализовать, как задумывалось, в некоторых вопросах, всё‑таки, выяснилось, что «зашли не в тот подъезд». Но в целом, после прочтения этого поста складывается некоторая картина - как должен выглядеть современный дистрибутив — чем и хочу с вами поделиться.

За этим проектом — раньше он назывался SerpentOS — я следил с относительным интересом: всё‑таки, новые дистрибутивы появляются не так часто. Кстати, есть надежда, что это будет меняться: долгое время десктопные дистрибутивы находились в тени серверных, а сейчас, с бумом контейнеризации, десктопные дистрибутивы будут вынуждены стать самостоятельными.

Кроме того, есть основан��е думать, что с развитием ИИ, простые, хорошо изученные системы будут приобретать популярность - потому что ИИ будет отлично их понимать. Например, это касается SQL: как бэкенд‑разработчик, скажу вам, что сейчас имеет смысл делать бэкенд‑приложение максимально близким к чистому SQL: ИИ отлично в нём разбирается. Так вот, то же самое касается и дистрибутивов линукса.

Возвращаясь к AerynOS: он с самого начала задумывался как stateless дистрибутив. ClearLinux тогда уже существовал как яркий пример. Если вы не знаете, то, грубо говоря, stateless означает, что пакеты — это просто файлы и конфигурация и не содержат произвольные скрипты для установки.

ClearLinux поддерживал установку так называемых бандлов — предопределённых списков пакетов. Понятно, что это — не гибко, так что автор хотел сделать пакетный менеджер более user‑friendly, как это принято в традиционных дистрибутивах. В частности, иметь возможность устанавливать любой пакет по имени:

moss install golang

Проблема в том, что это — императивный способ, принятый в традиционных stateful дистрибутивах. Stateless же дистрибутивы стараются использовать вместо этого конфигурацию. В итоге, автор решил эмулировать императивный подход, сохраняя список установленных пакетов неявно для пользователя.

В конце, он всё‑таки пришёл к выводу, что это было ошибочно: конфигурация всё равно нужна для разных целей, и прятать её от пользователя нет никакого смысла. Лучше, вместо этого, сохранять и редактировать списки установленных пакетов в явном виде.

Вторая фича — это атомарность апдейтов. В AerynOS каждая транзакция приводит к отдельной rootfs, так что можно откатиться к предыдущему состоянию. Как, вы думаете, это реализовано? Ответ — с помощью «фермы хардлинков». То есть, файловая система создаётся из хардлинков на уже существующие данные.

Там это называется «blitting the filesystem» — это терминология из компьютерной графики. Надо признать, «blitting» там происходит достаточно быстро — обычно, за несколько секунд. В итоге, атомарные апдейты работают, и это очень круто, но есть одно «но»: EROFS не поддерживает хардлинки — а это, идеологически, была бы самая подходящая файловая система для такого дистрибутива.

В своём посте‑ретроспективе автор рассказал, что решил в будущем отказаться от «фермы хардлинков» в пользу нативной поддержки EROFS.

To do so we“ll implement something similar to composefs, without the drawbacks.”

Using the same transaction driven approach we have now, we“ll simply produce an erofs metadata image dynamically instead of the exploded filesystem tree.”

Но вне зависимости от того, появится ли в AerynOS что‑то похожее на composefs или останется ферма хардлинков, суть останется примерно той же: бинарные пакеты скачиваются и распаковываются в Content‑Addressable Store (CAS) — хранилище данных, адресуемое по хэш‑суммам, а потом уже динамически создаётся rootfs.

Я думаю, так и должна быть устроена работа с файловой системой в современном дистрибутиве: у нас должны быть заранее все мета‑данные о желаемом состоянии rootfs, все хэш‑суммы, в частности. Мы выясняем, все ли файлы присутствуют локально, скачиваем недостающие. И уже в самую последнюю очередь — записываем образ rootfs на диск. Семь раз отмерь — один отрежь. Это вполне логично, учитывая, что файловая система — довольно медленная в принципе, а для read‑only файловой системы — логично вдвойне.

Должен сказать, что мне нравится идея иммутабельных дистрибутивов, но не только в том смысле, что файлы должны быть защищены от записи, а ещё в том, что, наверное, пора перестать пытаться изменить и адаптировать легендарные дитрибутивы прошлой эпохи и ‑сделать уже новый. Ориентированный на нужды десктопа, в первую очередь. Кстати, модель rolling‑release отлично зарекомендовала себя для этих целей.

Как мы увидели на примере AerynOS и composefs, технологии для серверных и десктопных дистрибутивов иногда пересекаются. Но тут ключевое слово — иногда, лучше, всё‑таки, исходить из того, что это разные области. Тот факт, что серверные дистрибутивы сейчас предназначены исключительно для работы с контейнерами, а на десктопах популярны snap и flatpak, только на руку новым дистрибутивам. Новый KDE Linux, например, собираются выпустить вообще без пакетного менеджера — вот увидите, клиенты не будут сильно возмущаться. Требования к новым дистрибутивам сейчас — минимальные.

Так что, мне кажется, сейчас оптимальное время, чтобы увидели свет дистрибутивы вроде AerynOS. Они должны сосредоточиться на том, что максимально разумно и производительно выполнять основные функции линукс‑дистрибутива. А быть user‑friendly — это уже не их забота: для этого есть графические оболочки, snap, flatpak, контейнеры и прочее.

AerynOS, надо сказать, не всегда придерживалась этих приоритетов. Например, они посвятили кучу времени дилемме musl/glibc и тьюнингу compiler toolchain — тому, что имеет достаточно прикладное значение. Потом — как‑то упустили из виду EROFS. Но в целом — это чудесный прогрессивный дистрибутив. Пожелаем ему удачи!

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


  1. emeykey
    07.11.2025 19:44

    Я так и не понял, зачем это нужно. Автор хотел сделать откат апдейтов, в итоге отказался. Также я не понял, зачем нужен KDE Linux, без менеджера пакетов. Для чего они нужны объективно?

    Разве для всего этого уже не существуют разные Gentoo и подобные ему дистрибутивы? Тот же Arch можно собрать с нуля.


    1. abetkin Автор
      07.11.2025 19:44

      Он не отказался, откат апдейтов работает, он планирует в будущем перейти на EROFS, но чтобы откат апдейтов по-прежнему работал. Arch чудесен, но можно сделать ещё лучше


      1. V1tol
        07.11.2025 19:44

        Можно сделать тот же арч лучше, причём бесплатно. Btrfs с настоящими снапшотами (которые можно делать по pacman хуку\расписанию\самому факту успешной загрузки) и загрузчик с возможностью грузиться с этих снапшотов уже делают то же самое, при этом не ограничивая пользователя в свободной модификации системы.


        1. ValdikSS
          07.11.2025 19:44

          Классические дистрибутивы Linux теряют свою консистентность в общем смысле сразу после установки на файловую систему.

          Современные дистрибутивы стремятся так или иначе перенять подход мобильных систем: чтобы был некий rootfs, поставляемый дистрибутивом, который монтируется в неизменяемом виде, поверх него при необходимости монтируются overlay-файловые системы (с драйверами и другими системными изменениями), либо же «разработческий» слой при необходимости внесения изменений в rootfs.

          Приложения все устанавливаются в пользовательские директории. Конфигурационные файлы хранятся на отдельной ФС (покрывающей /etc и /var), либо же у пользователя.

          Преимущества: возможность нормального аудита, возможность сброса настроек как на телефонах, атомарные обновления, понимание состояния/консистентности системы.

          Самое толковое видение, что я читал — у Леннарта Поттеринга, разрабтчика systemd: https://0pointer.net/blog/fitting-everything-together.html


        1. abetkin Автор
          07.11.2025 19:44

          Пользователю и не нужна возможность свободной модификации, идейно неизменяемая файловая система очень даже подходит


          1. Andrusha
            07.11.2025 19:44

            Про каких пользователей идёт речь?
            Современным основным пользователям линуксов на десктопах - разным айтишникам - обычно как раз-таки нужна.


            1. abetkin Автор
              07.11.2025 19:44

              Ну, я их и имею в виду, а не домохозяек. Ставить и обновлять пакеты - нужно, а произвольным образом изменять системный раздел - нет