LINUX.ORG.RU

Immutable-дистрибутивы, что это такое, и с чем это едят?

 , ,

Immutable-дистрибутивы, что это такое, и с чем это едят?

3

2

Начнем с простого

Как часто вы сталкиваетесь с ситуацией когда ваш любимый линукс вдруг перестает работать? А как часто после обновления выясняется что что-то отвалилось или вообще отказывается грузится?

Если вы один из таких «счастливчиков», то добро пожаловать в мир immutable-дистрибутивов! В этой статье мы наглядно разберем все плюсы и минусы, а также выясним, действительно ли immutable лучше традиционных дистрибутивов?

Что вообще такое этот ваш immutable?

В этих системах есть три общих принципа:

  • обновление системы не выполняется на работающей системе;
  • изменения применяются при следующей загрузке;
  • вы можете откатить изменения.

В зависимости от реализации система может предлагать больше возможностей. Но приведённый список – это то, чем должен обладать дистрибутив Linux, чтобы на данный момент считаться immutable.

Звучит конечно довольно ограничено, но мы к этому еще вернемся. А пока…

В чем преимущества неизменяемой операционной системы?

Если корневая файловая система по умолчанию подключена только для чтения, это повышает устойчивость к случайному повреждению, а также к некоторым видам вредоносных атак. На практике это означает что даже если что-то пошло не так по вашей, либо по чей либо еще вине, вы всегда сможете вернутся к стабильному состоянию, просто перегрузившись.

К примеру, если у вас выключили свет во время обновления, или кошка пробежала по клавиатуре и случайно набрала sudo rm -rf /* (пример утрированный), вы не останетесь без системы в самый неподходящий момент.

Другим преимуществом является надежность. Обычному пользователю практически невозможно привести ОС в состояние, когда она не загружается или работает некорректно после случайного или непреднамеренного удаления какой-либо системной библиотеки. И даже если всё-таки вам удалось каким-то образом ее удалить, то после перезагрузки все вернется к прежнему состоянию.

Это все хорошо, но как насчет примеров?

На самом деле их не так уж и много. По крайней мере из более или менее популярных это:

  • Fedora Silverblue
  • VanilaOS;
  • SteamOS;
  • ChromeOS;
  • NixOS.

Каждый из этих дистрибутивов реализует свой подход к атомарным обновлениям.

Как это работает?

К примеру, Fedora Silverblue реализует интерфейс OSTree. Если очень кратко то OSTree сочетает в себе “git-подобную” модель для хранения версий различных бинарных файлов, включая загрузчик. Он атомарно копирует базовую ОС и позволяет пользователю при необходимости “наслаивать” традиционный RPM поверх базовой ОС. По сути, тот же самый git но для всей вашей системы. Где каждое обновление – это по сути переключение на нужную ветку.

Напротив, VanilaOS, SteamOS, ChromeOS используют A/B метод обновления путем обмена данными между двумя корневыми файловыми системами: A и B. На практике у вас два раздела с базовой системой, один используется при загрузке, другой просто лежит на диске. Во время обновления, ОС разворачивает свежескачанный образ в раздел B и только после успешной перезагрузки образ B становится образом А, а образ А становится образом В, чтобы в случае чего загрузится с него. Если загрузка прошла неудачно, или не отработали внутренние тесты, то система продолжит работу с образом B.

NixOS же использует менеджер пакетов Nix, который функционально обрабатывает пакеты и зависимости. Каждый пакет изолирован, что позволяет нескольким версиям сосуществовать без конфликтов. Настройка в NixOS выполняется декларативно с использованием одного файла конфигурации. Этот файл описывает настройку всей системы, включая пакеты, службы и системные настройки. NixOS тоже работает по immutable модели, что означает, что изменения в конфигурации системы создают новый экземпляр системы, а не модифицируют существующий.

Немного про VanilaOS и мои мысли

Это дистрибутив который пока что основывается на Ubuntu. Почему пока что? Потому что в версии Orchid V2 базовый образ будет собираться уже на основе OCI debian. Под капотом VanilaOS использует ABroot для обновлений и систему интегрированных distrobox контейнеров для работы в безопасной среде.

В связи с этим автоматически возникает вопрос: «Как мне установить дополнительные драйверы?» В Vanilla OS Orchid установка наиболее распространенных драйверов представляет собой графический процесс, не требующий особых усилий. Однако бывают случаи, когда необходимо установить дополнительные пакеты в систему. По этой причине в ABRoot v2 внедрили менеджер пакетов, который позволяет пользователям управлять своими пакетами с помощью атомарных транзакций.

Ниже приведен пример команд для добавления и удаления пакетов:

abroot pkg add <your-package>

abroot pkg remove <your-package>

Потом необходимо выполнить

abroot pkg apply

чтобы применить изменения и перегрузиться.

Для текущей VanilaOS 22.10 используется ABroot V1, но в целом принцип тот же.

Команда abroot позволяет устанавливать модули ядра, драйверы и другие необходимые пакеты без ущерба для неизменяемости файловой системы.

Когда команда выполняется в режиме abroot, транзакция запускается в транзакционной оболочке во втором корневом разделе. Если транзакция завершается успешно, изменения применяются с использованием наложения и синхронизируются с текущим root при перезагрузке. Если транзакция завершается неудачно, изменения не применяются (из-за свойства, известного как атомарность). abroot также позволяет выполнять транзакции по требованию с помощью команды оболочки abroot. Подробнее можно узнать чем V1 отличается от V2 можно тут и тут.

Войти в транзакционный shell можно просто набрав:

sudo abroot shell

И установить драйвера, библиотеки и т.д. Потом ребут.

Но в целом хочу заметить что устанавливать пакеты в систему мне приходилось крайне редко. Связка flatpak/distobox полностью удовлетворяет все потребности в софте. Плюс система не ограничена одними deb пакетами, и есть возможность поставить любой контейнер с любым дистрибутивом. Разработчики называют это SubSystem. Для этого даже есть встроенный в систему GUI.

Создатели явно вдохновлялись WSL в этом плане, но в отличии от WSL, в контейнере есть поддержка аппаратного ускорения и графических программ. Но по моему опыту хочу сказать, что мало что приходилось устанавливать таким образом, кроме нескольких программ. Например Davinci Resolve у меня стоит в подсистеме c archlinux. Но все остальное поставлено просто из flathub, мышкой. А ну и нативная поддержка Appimage тоже порадовала прям из коробки.

А что в итоге-то?

А в итоге мы получаем систему которая не ломается, которую можно восстановить без излишних потерь нервных клеток, которая не требует знаний консоли. Которая просто работает! Систему за которой не нужно ухаживать, и которая будет работать вне зависимости от прямоты рук.

Всем спасибо за внимание, и не стесняйтесь делиться своим мнением в комментариях!



Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 5)
Ответ на: комментарий от HomerSexual

Раньше автомобилист должен был понимать где в машине что происходит и как работает, либо запоминать магические формулы „при такой настройке карбюратора, октановом числе бензина и забортной температуре следует открывать клапан подсоса при холодном старте двигателя“. А сейчас всего этого не нужно. И хорошо.

ugoday ★★★★★
()
Ответ на: комментарий от Unixson

Ну вот целый форум ноит что линукс их божественный никто не хочет поддерживать.

Линукс уже и гугль, и айбиэм, и куча всякого энтерпрайза, включая майкрософт, поддерживает. Чего же боле?

Вместо рабочего стола терминал

В Guix этого не бывает.

ugoday ★★★★★
()
Ответ на: комментарий от HomerSexual

вообще любая техника требует обслуживания

техника

ну не ось же)) ось в идеале должна выдерживать любые издевательства пользователя, или хотя бы давать ему знать что он делает что-то грязное и неприличное.

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

Unixson
() автор топика
Ответ на: комментарий от HomerSexual

Сложность обслуживания и необходимые требования могут варьироваться. Причём, необоснованная сложность — результат того, что инженеры чего-то недоглядели.

ugoday ★★★★★
()
Ответ на: комментарий от HomerSexual

Ваше мнение очень важно для нас, пожалуйста, оставайтесь на линии.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

В Guix

Хорошо, зайдем с другой стороны. Возьми пару васянов с улицы, посади их за свой Guix и пусть они сначала браузер поставят, танки запустят, и поюзают его недельки две. Это не интуитивно понятная система для гиков как мы с тобой. А нужна массовая ОС. Понимаешь о чем я?

Unixson
() автор топика
Ответ на: комментарий от Unixson

А нужна массовая ОС.

  1. Кому нужна?

  2. Сколько он готов за неё заплатить?

Я предлагаю начать с этих животрепещущих вопросов.

ugoday ★★★★★
()
Ответ на: комментарий от HomerSexual

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

Unixson
() автор топика
Ответ на: комментарий от ugoday

Сложность обслуживания и необходимые требования могут варьироваться

конечно, линукс разный бывает. бывает сложный в использовании, но простой для понимания, и наоборот, как в в этом случае. какой из них стабильней и главное юзабельней, каждый решает сам)

HomerSexual
()
Ответ на: комментарий от ugoday
  1. Мне нужна

  2. 10-20$ за коробку если ритейл. Сколько на разработку нужно, надо будет договариваться с инвесторами.

Но мне нужен X86-64 совместимый десктопный unix/unix-like с минимумом пердолинга вне экосистемы эпл или майкрософт. Если нужно то я готов сам лично запихнуть его в глотки пользователям и чтоб эти суки подавились. Лишь бы купили и пользовались…

Мак больше не на x86, а виндой пусть кто-то другой пользуется, мне не нравятся корпоративные политики майкрософта. Не ось, а рекламосборник. Совсем уже страх потеряли. Продукт и так платный, а тут еще и сбор данных, и реклама в пуске. Хватит, надоело уже

Unixson
() автор топика
Последнее исправление: Unixson (всего исправлений: 5)
Ответ на: комментарий от HomerSexual

Начнём с того, что за последние 20 лет количество знаний и навыков для администрирования линукса сократилось на порядок. Так что не вижу отчего текущую ситуацию нужно принимать за эталон.

ugoday ★★★★★
()
Ответ на: комментарий от Unixson

Мне нужна

Если нужно то я готов сам лично запихнуть его в глотки пользователям и чтоб эти гады подавились.

Не, так вы слона не продадите.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Открою тайну, но люди в целом аморфные конформисты, с правильной рекламой и подачей можно хоть песок бедуинам продать. Было бы желание и средства.

Людям нужен десктопный юникс, просто они про это пока сами не знают.

Unixson
() автор топика
Последнее исправление: Unixson (всего исправлений: 1)

Всё здесь описанное — не нужно хотя бы по двум причинам:

  1. Сильно переусложнено. Зачем нужна вся эта хтонь, когда можно просто запустить pacman -Syu?
  2. Крайне неэффективно расходует дисковое пространство (а если NixOS, то не только диск, но и сетевой трафик).
Werenter ★★☆
()
Ответ на: комментарий от Unixson

Было бы желание и средства

Это работает не так. Попробуй продать людям например модульную одежду где все настраивается на заказ.

vbcnthfkmnth123 ★★★★★
()
Ответ на: комментарий от HomerSexual

За $100/час готов расшибаться ради тебя в лепешку персонально. Бесплатно могу только сослаться на уже записанные публичные выступления, это мне несложно.

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)

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

kirill_rrr ★★★★★
()
Ответ на: комментарий от ugoday

А сейчас сраная гранта стоит больше ляма, а 25 лет скорее всего не прослужит. А уж запороть высококласную машину за 20 лет МРОТа можно просто неудачным обновлением. И это ещё хорошо, если она сама от тебя не уедет - прецеденты уже были, а лет через 10 это может стать массовым.

kirill_rrr ★★★★★
()
Ответ на: комментарий от HomerSexual

Было бы неплохо, чтобы любой человек с инструкцией мог это починить. Идеал конечно недостижимый, но лучше стремиться к нему чем от него.

kirill_rrr ★★★★★
()
Ответ на: комментарий от Werenter

Зачем нужна вся эта хтонь, когда можно просто запустить pacman -Syu

А потом плачь ярославны, мой рачик сломался помогите. И тем более попробуй объяснить что такое этот ваш pacman хоть кому нибудь, да так чтоб тебя не сожгли на костре как колдуна. Для простых юзеров это слишком сложно. Если для тебя это работает, то я только рад. Но для массового потребителя это колдунство. Обновляться ось должна тихо, и сама, сама себя чинить, сама за собой каки вытирать, и лишний раз не шелестеть. Показывать пользователю ютубы и игры пускать без лишних проблем. ВСЕ. все остальное не нужно

Крайне неэффективно расходует дисковое пространство

Вылезь из криокамеры. В любом продуктовом можно купить ssd/m2 диск за вполне вменяемые деньги на терабайт и выше. Ты на спичках наверное тоже экономишь?

Unixson
() автор топика
Последнее исправление: Unixson (всего исправлений: 1)
Ответ на: комментарий от vbcnthfkmnth123

Так никто и не собирается. Должен быть стабильный как атом водорода дефолт, а всякими кастомизациями и прочим колдунством это пусть пердолики занимаются, кому не лень с этим пердолится. Против ничего не имею. Обычные же пользователи пользуются тем что дают в поставке. Кек, юзеры даже обои не меняют зачастую, куда там до модульности

Unixson
() автор топика
Ответ на: комментарий от Werenter

просто запустить pacman -Syu

получить обновление Postgresql с 15 до 16 и второй час сидеть, думать почему у меня tablespaces разваливаются при pg_upgrade.

Правда оно на локалхосте для того и нужно, чтоб тут шишки набивать.

Toxo2 ★★★★
()
Ответ на: комментарий от Unixson

И тем более попробуй объяснить что такое эти ваши immutable дистрибутивы хоть кому нибудь, да так чтоб тебя не сожгли на костре как колдуна. Для простых юзеров это слишком сложно. Если для тебя это работает, то я только рад. Но для массового потребителя это колдунство

Починил

Вылезь из криокамеры. В любом продуктовом можно купить ssd/m2 диск за вполне вменяемые деньги на терабайт и выше. Ты на спичках наверное тоже экономишь?

Зачем мне тратить 40 гб на то, что занимает 20? И цена накопителей тут не при чём.

Werenter ★★☆
()
Ответ на: комментарий от Toxo2

А при чём тут PM? Он делает то, что ему сказали, в том числе и обновление PostgreSQL. Арчвики кстати рекомендует вообще отключить обновления для postgresql, и обновлять при необходимости вручную.

Werenter ★★☆
()
Ответ на: комментарий от Toxo2

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

Unixson
() автор топика
Ответ на: комментарий от vbcnthfkmnth123

который ровно также ушатывается стоит сломать какую нибудь зависимость. потому что это архитектурная проблема линукса которую вы все признать боитесь.

Unixson
() автор топика
Ответ на: комментарий от Werenter

Ну, типа я знал на что шёл. Просто вот именно отвал целого tablespace первый раз вижу. Так-то не жалуюсь. Потому и сижу на Арче обычно на локалхосте, чтоб в проде на Убунтах было проще в перспективе.

Toxo2 ★★★★
()
Ответ на: комментарий от Werenter

Починил

А не надо никому объяснять, ставишь по дефолту, и все. И еще бивес паролишь чтобы никто снести не смог. Главное UX подтянуть хотя бы до уровня 7-й винды и будет нормальный продукт.

Зачем мне тратить 40 гб на то, что занимает 20?

Тебе жалко что ли? Уж лучше будет жрать диск, но работать нормально, чем вечно красноглазить pacman

Unixson
() автор топика
Ответ на: комментарий от vbcnthfkmnth123

В идеальном мире статическая линковка, а в реальности у нас куча софта который не переделать по тем или иным причинам. А он практически весь динамически слинкованный увы. И с этим надо как-то жить, и что-то делать.

Unixson
() автор топика
Ответ на: комментарий от Unixson

Ну вы стремитесь к идеальному миру, где ничего не ломается. Вот я и предлагаю вам соответствующее решение которое работает. Не городить костыли и плодить велосипеды, а просто использовать готовое решение.

vbcnthfkmnth123 ★★★★★
()
Последнее исправление: vbcnthfkmnth123 (всего исправлений: 1)
Ответ на: комментарий от vbcnthfkmnth123

Ну может про никогда не ломается я загнул, но черт возьми должны быть хотя бы инструменты для восстановления хотя бы (и я сейчас не про бекапы, у юзеров эта концепция отсутствует в памяти). Мне уж очень нравится как это реализовано в android. Можно сбросить устройство до заводских настроек а можно стереть просто пользовательские данные. Короче устройсво не становится печатной машинкой даже если все пошло жутко по бороде, и всегда можно восстановится за два-три клика/тапа.

Unixson
() автор топика
Ответ на: комментарий от Unixson

покажите ему уже докер

докер - для Питонов. И то там свои приключения, как выясняется.

у кого БД в докере - значит ему БД не нужна по сути.

Toxo2 ★★★★
()
Ответ на: комментарий от Unixson

они всегда загрузятся, всегда будут в рабочем состоянии, в том виде в котором хочет разработчик

А то у разработчика руки не из жопы, ага. И да, при определённой удаче можно так обновиться, что система загрузится, но нужный тебе софт работать не будет. Придётся откатываться, если есть куда. А даже в случае с A/B может пройти несколько версий, прежде чем ты обнаружишь что нужный тебе софт отказывается сломался. Так что бездумные апдейты, а тем более автоапдейты - зло в чистом виде. И иммутабельная система не панацея вообще.

nebularia ★★★
()
Ответ на: комментарий от Toxo2

у кого БД в докере - значит ему БД не нужна по сути.

Эээ, что? Может докере проще управлять версиями, env параметрами, и оркестрацией? Та ну не, бред какой-то, его же для питона придумали.

Unixson
() автор топика
Ответ на: комментарий от Unixson

у меня так не случается. Обновы и так в своей основной массе применяются после ребута. Арч+downgrade сойдет за immutable?)

Jeronimo ★★
()

«Обычному пользователю» нахрен не нужен Линукс. Во многом из-за самодурства разработчиков, которые регулярно ломают обратную совместимость и делают deprecated рабочие вещи. А юзеру надо программки, к которым он привык. И пофиг, что последнее обновление было лет 15 назад. Винда в большей части случаев это предложить может. Линукс - нет.

Так что хватит уже притворяться, что линукс может быть для домохозяек, это территория задротства и вот такие вот концепты «иммутабельности» только ставят палки в колёса кастомизации.

Конечно линух это ещё и серверы и эмбед и много чего ещё, но там для достижения такого эффекта свои инструменты.

nebularia ★★★
()
Ответ на: комментарий от nebularia

Обычному пользователю пойдет то, что предустановлено. Иначе это уже не обычный пользователь. Вот моей тетке пофиг с чего в одноклассниках сидеть. Если ни в чем не шариш, то пофиг. Лишь бы тырнет был (значек браузера) на рабочем столе.

Jeronimo ★★
()
Последнее исправление: Jeronimo (всего исправлений: 1)
Ответ на: комментарий от nebularia

А даже в случае с A/B может пройти несколько версий, прежде чем ты обнаружишь что нужный тебе софт отказывается сломался.

А чтобы такого не происходило (или хотя бы происходило реже), в нормальных компаниях есть отдел QA. Хотя это тоже не панацея, но нужна хоть какая-то фильтрация.

А еще нужна какая-то форма паравиртуализации/виртуализации/контейнеризации чтобы софт можно было запустить в режиме совместимости.

Тащемта XBOX вообще под капотом запускает каждую игру отдельно в Hyper-V и ниче никто не умер. И работает просто замечательно и шустро, а главное практически без ошибок. Оказывается что можно и так, и это работает. А тут против контейнеров протестуют.

Unixson
() автор топика
Ответ на: комментарий от Jeronimo

А вот если бы ты прочитал статью то узнал бы что нет))

Unixson
() автор топика
Ответ на: комментарий от Jeronimo

Не то, что установлено, а то что он хочет чтобы ему установили, чем за годы он кое-как научился пользоваться. Или не кое-как, а это его профессиональный инструмент, просто не IT. Дизайнер там, монтажёр. Пользователи разные бывают. Поставят такому вместо гимп вместо профессионального редактора снимков, вот будет рад.

Для совсем уж примитивного использования в виде браузера и ютуба достатчно телефона/планшета и/или смарт тв.

nebularia ★★★
()
Ответ на: комментарий от nebularia

Так что хватит уже притворяться, что линукс может быть для домохозяек

Ну а почему нет? Chromebook совсем скоро станет настоящим мальчиком линукс компьютером. В гугл поняли что компьютер который запускает только веб приложения это х*ня из под коня, из под жеребенка обдрыстаного. Поэтому они перепиливают ChromeOS. На нее уже сейчас steam ставится. А в развитых странах Chromebook-и разлетаются как горячие пирожки.

Или тот же стимдек? Да большинство пользователей даже не знают что он на линуксе! И причем тут обратная совместимость? Даже на винде с ней не так все гладко. С точки зрения бизнеса главное чтобы работало что популярно сейчас, а не то что было 15 лет назад. Хотя и это приветствуется.

Про андроид я вообще молчу. Это самая популярная ОС в мире, работает на linux.

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

Unixson
() автор топика
Ответ на: комментарий от Unixson

А чтобы такого не происходило (или хотя бы происходило реже), в нормальных компаниях есть отдел QA. Хотя это тоже не панацея, но нужна хоть какая-то фильтрация.

За такое вообще-то большие деньги платят, и всё равно не без факапов.

А еще нужна какая-то форма паравиртуализации/виртуализации/контейнеризации чтобы софт можно было запустить в режиме совместимости

Чем существующие решения не устраивают?

Оказывается что можно и так, и это работает.

Много чего можно, когда у всей аудитории одинаковое железо и ОС. Чего за пределами рынка игровых консолей нет и не будет. Ну эппл вон ещё условно справляется со своей экосистемой.

nebularia ★★★
()
Ответ на: комментарий от Werenter

Зачем мне тратить 40 гб на то, что занимает 20?

Хм...

one@ddidwyll ~> du --max-depth  0 -h /nix/store/
20G	/nix/store/

Packages: 622 (nix-system), 2632 (nix-user)

ddidwyll ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.