Дорогие читатели, если вы не очень следите за миром графических оболочек для линукса, из которых самой лучшей является, конечно, KDE - вот вам одно из последних событий. Хотя новость об этом уже была, я берусь превзойти предыдущего докладчика.
В духе веяний времени, KDE собирается выпустить неизменяемый (immutable) дистрибутив, основанный на archlinux. Что, на мой взгляд, в очередной раз подтверждает, что KDE пережила многие другие графические оболочки не просто так. Вначале я, конечно, отнёсся к идее скептически и удивился, что её одобрили - потому что, с виду, она чрезвычайно наивная.
Но потом до меня дошло, в чём тут может быть юмор. В общем, судя по всему, разработчики KDE забьют очередную шайбу в ворота конкурентов - GNOME с их GNOME OS. Банан для названия выбран очень удачно: я помню, как какой-то художник выставил банан в качестве инсталяции современного искусства, а потом кто-то купил его за большие деньги и сразу съел. В этой статье вы найдёте "вредные советы" о том, как сделать свой дистрибутив, которые на практике могут оказаться очень даже полезными.

UPDATE:
Один добрый человек указал в комментариях, что этот banana linux очень похож на SteamOS. Что называется - "я как-то не подумал об этом". Ну конечно - чтобы поддерживать игры Steam из коробки! Вот мы их и разгадали. Ну что же - "опыт ты не сорвал, а только подтвердил". Читая дальше, вы узнаете ход мыслей человека, которому не пришёл в голову данный факт.
* * *
О том, как я узнал об этом banana linux, не спрашивайте. Иногда я захожу на planet.kde.org, чтобы развеяться и с целью медитации - посмотреть, о чём пишут люди, напрочь оторванные от мира насущных проблем. Что касается KDE, она уже стоит у меня около года. Перед этим я пользовался GNOME, но когда оказалось, что для развертывания рабочего проекта нужно запустить больше докер-контейнеров, чем на проекте было разработчиков, я задумался о том, чтобы пересесть на что-то более легковесное. Кстати, у меня осталась старая система с GNOME на другом разделе, и я иногда в неё загружаюсь - разница в производительности между KDE и GNOME очень и очень ощутимая. Мне нравится проект KDE, который развивается "не из-за, а вопреки" обстоятельствам. По-моему, отрыв от GNOME в производительности увеличился как раз в последние годы, когда все основные дистрибутивы давно выбрали GNOME в качестве основного.
Новый проект KDE, banana linux, всё-таки отличается от их основного рода деятельности. Но, поскольку полёт фантазии в нём, похоже, присутствует, он тоже должен быть обречён на успех. Коротко о его технической реализации: предполагается поставлять неизменяемый образ системы. Возможность ставить какие-то пакеты из репозиториев archlinux не предполагается.
Вот слайды из презентации:


Я посмотрел эту презентацию. В ней докладчик говорит, что - вот, у нас есть KDE Neon, который нам мало что приносит, кроме проблем. Он стал довольно сильно расходиться с ubuntu lts, на котором он основан, и от этого больше вреда, чем пользы. Это - отрицательный момент.
С другой стороны, говорит докладчик, так получилось, что у нас появились hardware vendors, которые с нами сотрудничают - интернет-магазины ноутбуков, которые в качестве одного из вариантов ставят на них линукс с KDE - KDE Neon. Это - положительный момент.
Задача в том, чтобы убрать отрицательный момент и оставить положительный. Как говорит докладчик, "нам нужно что-то, на чём мы можем написать своё имя (KDE), но чтобы ничего, кроме своих пакетов, нам поддерживать было не нужно". И они нашли оригинальное решение.
Наивный человек мог бы предложить перейти на какой-нибудь более подходящий дистрибутив в качестве базового - например, archlinux - и назвать его "KDE Linux". В конце концов, есть куча дериватив - можно сделать ещё одну. Но, немного подумав, он убедится, что этот вариант не годится: все правки будут быстро попадать в апстрим - arсhlinux - учитывая, что эти правки будут от самих авторов - KDE. От такого дистрибутива не останется ничего, кроме названия, и возникнет вопрос, зачем он нужен. Полноценной же деривативой они становиться не собираются - есть идея лучше.
Конечно же, нужно сделать immutable дистрибутив - это совсем другое дело. Его нельзя напрямую сравнивать с archlinux - он другой. Можно начать с того, что разогнать его на 10-20% - что, вообще, не очень сложно: можно скомпилировать его под более новую архитектуру процессора или, скажем, применить для пакетов profile guided optimization.
Можно использовать в нём read-only файловую систему, а такая как раз есть - EROFS. Она процентов на 20 быстрее, чем те, которые read-write. Хотя, как видно на их слайдах, они планируют использовать btrfs. Вот это непонятно: зачем btrfs? Её используют практичные администраторы для своих инфраструктурных задач. Но banana linux не про практичность и ничего общего с ней не имеет. А EROFS даёт ощутимое ускорение - клиенты будут довольны.
Конечно, с EROFS появляются дополнительные вопросы, о которых стоит подумать: например, небольшой апдейт с багофиксами и обновлениями безопасности плохо укладывается в логику обновления всего образа системы. Но можно оформить эти обновления в виде другого образа и использовать overlay с предыдущим. Не вижу тут ничего нерешаемого.
Остаётся, конечно, "небольшая проблема": такой линукс, мягко говоря, не очень годится для продвинутых пользователей, но и ей можно найти решение. Сделаем для них кнопку - перейти на обычный archlinux. Теперь снова можете ставить свои пакеты, зато он более тормознутый - ну, вы сами выбрали. И берите обратно свою ext4, живите с ней!
Как видите, всё складывается. Вопрос: кто от этого проигрывает? Получается, что никто: arch linux и пользователи получают более качественные пакеты KDE (а KDE очень популярно в этом сообществе), KDE получает контракты с вендорами и яркий рекламный дистрибутив. KDE может спокойно улучшать поддержку разного железа и развивать свою чудесную графическую оболочку.
На этом можно было бы и закончить, но дело в том, что юмор можно продолжить: можно войти в роль и действительно начать делать immutable дистрибутив на базе arch (здесь ключевое слово - начать). Я имею в виду, полноценный immutable дистрибутив, где можно ставить любые пакеты.
* * *
Здесь стоит сказать пару слов о том, как обычно устроены такие дистрибутивы. Их делают stateless - это значит, не важно, как долго и каким путём пользователь собирал свой дистрибутив, важны лишь пакеты, которые в нём содержатся на данный момент. Когда от перемены мест слагаемых сумма не меняется, и это сделано by design - то есть, какому-то конкретному пакету не разрешается делать всё, что он захочет (и иногда у него и нет такой возможности, потому что файловая система read-only).
Обычные дистрибутивы называют императивными: установи мне этот пакет, чтобы он заработал. Или, скажем, обнови все пакеты, если говорим про archlinux.
Касалось бы, главное в бинарном пакете - это файлы, которые он содержит, и что для установки пакета достаточно просто скопировать их в /usr. Но нет - некоторые пакеты определяют внутри себя systemd сервисы, которые должны запускаться при старте, некоторые требуют, чтобы были созданы определённые пользователи. Также, пакеты вносят свой вклад в кэши - иконок, ярлыков, шрифтов и прочего. В императивных дистрибутивах эти действия выполняются при установке и обновлении пакетов. В случае stateless дистрибутива - на этапе создания всего образа, а также вносят свой вклад в общий конфиг.
Также, есть отличие при работе с конфигами в /etc. Традиционно, линуксовые пакеты кладут свои конфиги в /etc, где их потом редактирует пользователь. В stateless дистрибутивах, дефолтные и пользовательские конфиги нужно разделять - дефолтные обычно идут в /usr, а пользовательские - в /etc.
При этом, в archlinux есть своя специфика - в нём пользователь регулярно делает full system update, который обновляет все пакеты. Если делать его где-то раз в 2 недели, будет приходить апдейтов на гигабайт или даже больше. Кстати, тот факт, что апдейты в arch достаточно тяжеловесные, делает идею иммутабельного дистрибутива в какой-то мере разумной: если вес апдейтов сравним с весом всей системы, почему не пересоздавать при апдейтах весь раздел целиком?
Но это всё - общие соображения, вернёмся к нашим баранам. Для превращения arch в immutable дистрибутив потребуется избавить все пакеты от побочных действий при установке и обновлении. Да, пакеты нужно будет менять, но не все пакеты менять одинаково сложно - для некоторых потребуется минимальная адаптация.
И так уж получилось, что разного рода приложения, консольные и графические - это как раз те, которым всего минимальная адаптация и нужна. Так что, ничего не мешает разработчикам banana linux составить список пакетов, которые "нужны пользователю в первую очередь", и добавить возможность их использования в своём дистрибутиве. Их можно ставить на read-only раздел и они будут автоматически обновляться! Эти пакеты можно опубликовать на packages.banana.org, и их число может неуклонно расти!
Вообще, я не вижу каких-то принципиальных проблем, чтобы и весь arch сделать иммутабельным, если очень хочется. Объективно, конечно, нужды в этом нет никакой. Тем более, что хороший иммутабельный дистрибутив уже есть - это NixOS. Но с ним есть та же проблема, что и с тем, чтобы использовать arch в чистом виде - нельзя наклеить на него лейбл KDE.
В общем, н�� уверен, что у разработчиков KDE именно такие планы, как я описал в этой статье, но думаю, что основное направление мысли совпадает. Думаю попросить deepseek перевести на английский и отослать статью разработчикам KDE. Потому что, например, использование btrfs вместо erofs настораживает - не перепутали бы чего.
Напоследок - опрос.