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 ()

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

Еще и огромная, на половину всей статьи почти. Да можешь оставить, просто не вижу никакой связи с immutable дистрибутивами. А ты?

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

да я просто набрал immutable linux disto в AI генераторе, потому что в гугле нормальных не было, но да согласен, тупо вышло. А статью то хоть прочитал?

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

Ни о чем. Тема NixOS не раскрыта, тема костылей, нужных остальным, чтобы имитировать долю её крутизны — тоже.

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

Тема ни о чем, абзац про NixOS тоже ни о чем. Договорились?

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

Статью читал по диагонали. И да, про NixOS писать и писать. Пожалуй, самый важный дистр из этого всего.

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

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

Unixson
() автор топика

Позитив зашкаливает, темы не раскрыты.

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

papin-aziat ★★★★★
()

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

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

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

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

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

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

ugoday ★★★★★
()

А не проще ли настроить все как должно быть, примонтировать «/» в ro и сделать бекап «/»? Все же установленные программы в «/usr» и их можно смотировать отдельным разделом.

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

Монтирую корень в tmpfs, при старте nixos раскладывает своё добро в ro и монтирует некоторые persistent директории по фс. Брат жив, зависимость есть.

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

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

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

да ты просто не знаешь о чем говоришь.

Ну или просто чудик, который любит наворачивать дерьмище с лопаты. Типа как вот этот, еще один такой же https://blog.sebastianwick.net/posts/silverblue-gnome-shell-development/ - что это нахрен за дичь вообще, лол

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

1. Остальное тоже не для всех. Особенно NixOS

2. Там дальше есть продолжение у текста, ну так если буфер памяти не сбросил после первого предложения 😔

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

Там главный разработчик этого добра как будто с ЛОРа вылез, но это так. Знаю довольных пользователей. В потанцевале это лучшая версия Fedora Silverblue.

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

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

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

А вдруг это вы не знаете, о чём говорите?

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

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

Мы всё ещё стремимся к простоте, не?

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

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

ты же понимаешь что не каждый пользователь будет разрабатывать под гном? да и вообще делать что-то кроме просмотра нетфликса или запуска игр? кому это ваше всратое погромирование нужно?

мы говорим про ОС которую можно дать в руки average Joe и он там ничего не сломает. Зато сможет поставить нужные ему приложения просто кликнув мышкой и поиграть/поработать/посмотреть кинцо.

Без жопной боли от переустановок или установки драйверов. Прямо как на смартфоне или консоли. Вкл/выкл - entertainment. Если тебе нужно разрабатывать что-то очко к примеру, то ставь что хочешь хоть сам из исходников собирай

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

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

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

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

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

А тут как правило всё купно идёт. Если система перекручена, то и пользоваться ей сложно и разваливается она так, что вся королевская конница, вся королевская рать … Вот, я хочу, чтобы можно было реализовать простой сценарий:

  1. Обновить несколько пакетов. Люблю всё новое.
  2. Часть из них откатить обратно. Ну, не всё новое одинаково полезно.
  3. Ну и понятно, чтоб никаких перезагрузок. Мы не в каменном веке живём, чтоб для операций с пакетами ОС перезагружать.

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

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

Тема NixOS не раскрыта

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

HomerSexual
()

Я использую / на OverlayFS с нижним слоем в SquashFS через самописный скрипт в initramfs. Достоинством является экономия места и возможность откатить систему в гарантированно рабочее состояние. Однажды пригодилось, после неосторожных действий с пакетным менеджером.

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

после очердного удаления софта у тебя удалится рабочий стол

Как страшно жить-то!
Но если ты совсем уж не тупой, то такого с тобой происходить не должно.

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

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

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

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

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

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

Да братан пожалуйста, только вот тут у меня зависимость не удовлетворяется, и пакеты конфликтуют, ну дай я тебе гном вместе с иксами снесу, а то я libshit.420 поставить не могу… Y/N?

Такого быть не должно от слова совсем нигде и ни в какой вселенной.

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

Обновить несколько пакетов, а другие откатить и при этом чтобы все стабильно, да еще и без перезагрузок было это только в сказках бывает.

Ставьте GuixSD и живите как в сказке.

Ты либо обновляешь все по пакетам и терпишь от пакетного менеджера на нестабильной системе,

С чего бы ей быть нестабильной? Как раз возможность откатиться до рабочего решения делает волосы гладкими и шелковистыми.

либо обновляешь ОС образом отдельно от прикладных приложений

Я не понимаю логику, согласно которой часть программ считаются ОС, а часть нет. Ну, ладно, загрузчик, инит и ядро особенные, а остальные-то?

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

Ну, ладно, загрузчик, инит и ядро особенные, а остальные-то?

Браузер тоже часть ос? А стим? Я про прикладные программы которые юзеры пользуются а не про всякий внутренний шаманизм. Юзер вообще не должен знать что они существуют. Вот к примеру что в винде за звук отвечает? Или за печать? То то же. Без гугла и сказать трудно, потому что это все работает и не жужжит. В линуксе нужно также сделать.

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

Браузер тоже часть ос? А стим?

Отчего нет? Если для пользователя «игра не запускается» означает: «компьютер не работает», то стим такая же системная утилита, как и gnu core utils. И наоборот тоже верно.

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

Сколько раз я уже об это обжигался.

Это тебе намек. Ты совершаешь одну и ту же ошибку, но до тебя не доходит.

rupert ★★★★★
()

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

Так и в чём преимущество? Я всё это и в Arch Linux получаю. Проблемы начинаются, когда пользователь влезает в работу системы.

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

Не хочешь чтобы система ломалась - не ломай. Хочешь что-то сломать, то зачем тогда в принципе ставить immutable OS?

Как пользователь, плюсов не вижу.

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

Потому что удаляя стим, одно кривое движение и ты удалил себе гном. Держать мух отдельно от котлет. Пусть будет дефолтный незменяемый образ с базовой системой, ну там всякие ядра иниты, дисплейные серверы и прочий шаманизм, отдельно оверлей с рабочей средой (Gnome/KDE/etc), и домашняя папка юзера, где установленны его прикладные программы. Нужно обновить ядро? Будь добр обнови и инит, и прочий кал чтобы все было друг с дружкой совместимым. И делаться это по хорошему должно автоматически вообще, лучше даже без ведома пользователя.

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

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

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

бу бу бу тупые капейталисты нихотять наш линакс поддерживать

да потому что он ломается от простейших задач)) лол))

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

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

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

Это аргумент в пользу того, что стим — часть ОС, или наоборот? Я немножко запутался, если честно.

Так работает мак, андроид, консоли, стимдек, хромбуки

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

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

ну не внимательный я, ну люблю я квасить за компом

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

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

Выглядит, будто вы хотите превратить линукс в макось

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

Та неее, будем и дальше в %1-3 входить и нам норм. Зато линукс, зато не такой. Предлагаешь решения, тебя в х*й посылают. Ну найс че.

Это аргумент в пользу того, что стим — часть ОС, или наоборот?

Объясню просто.

  • Поставил программу, любую
  • Снес программу
  • Вместо рабочего стола терминал

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

Аргумент в пользу того что пора уже разлепить пользовательские программы, и системные.

Unixson
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.