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)
Ответ на: комментарий от Unixson

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

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

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

Тем что все они либо не работают, либо работают на половину. В chromeOS хорошо решили проблему совместимости запихнув линукс в хитросделанную виртуалку. А у самих A/B обновления прямиком из андроида и стабильная (хоть и очень урезанная (пока что) система).

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

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

Это не интуитивно понятная система для гиков как мы с тобой

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

Так нужна тебе или кому? Что-то я не наблюдаю толп домохозяек протестующих против pacman'а.

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

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

Тем что все они либо не работают, либо работают на половину

Так что ты хочешь-то от них, какой режим совместимости? Система с зафиксированными версиями пакетов?

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

Вот прям вообще для дебилов

Ну вот почему также не сделать?

Вот и ответ. Друг, просто пользуйся тем, чем получается и всё.

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

Ну хорошо, это будет уже не линукс. Хотя если оно крякает как утка, плавает как утка, то скорее всего это гребанная утка. Но у каждого видимо своя интерпретация что такое linux. Ладно, это пофиг. Почему хотя бы один дистрибутив не может быть полузакрытым со своим софтом и методом распространения? Пусть Community Edition пилит сообщество, а Home и Enterprise нормальная контора с программистами на фултайме? Пусть такая система станет флагманом, а все остальные будут получать от нее софт по остаточному принципу.

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

и внезапно кто-то теперь должен сделать тебе «правильный линукс»

Да я и сам могу. Просто я показываю на очевидные каки типичного линукса, и говорю что так быть не должно, на что получаю упругую струю поноса, мол ты «не шаришь, так и должно быть». O really? Просто никто не хочет признавать что это говно?

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

когда можно просто запустить pacman -Syu?

rpm-ostree upgrade или нажать на «Обновить» в менеджере приложений.
При этом система если даже откинет копыта после перезапуска, то всегда можно будет загрузиться в старый образ.

Это в сравнение с арчем, где по умолчанию установлена только 1 версия ядра, как и модулей. Насколько оно ненадёжно, думаю, сам поймёшь.

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

A/B возможно, ostree работает на хардлинках и места особо не жрёт.

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

Отказаться от этого архаизма под названием пакеты. Система должна быть цельная, неделимая, и не изменяемая. А приложения пусть поставляются со всем необходимым сразу. Flatpak так работает, в андроиде apk так работает, на mac .app и .dmg так работают.

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

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

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

Самое близкое наверное убунта. Тут тебе и свой софт (особенно пока юнити жива была), и канал распространения (Snap). И сильно менее проблемной она от этого не стала.

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

Должна кому и что должно входить в систему? Выше по треду задавали вопрос, весьма дискуссионный.

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

я и сам могу

Не смог поставить nixos и думаешь сделать полноценный дистрибутив (а то и получше других)?

O really?

Просто никто не хочет

Слушай, у меня за 16 лет ни разу не было ситуации «я что-то нажал и де пропало».

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

Не стоит забывать, что самая распространённая десктопная ОС — это Windows, а не Mac, где, как ни странно, используется подход «всё валим в кучу», и при этом мы почему-то не видим толп недовольных пользователей.

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

Современный линукс и есть говно, т.к. идёт по пути от глубоко кастомизируемой системы для разработчиков и power user'ов в тот загончик, который описан в посте. К счастью ещё возможно сохранять дух «того самого», но точно не в мейнстримных дистрах и гномах.

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

Кстати ubuntu планирует в скором времени полностью перейти на immutable схему. Если они допилят snap до рабочего состояния (там вроде как V2 намечается) то получится вполне себе цельная система.

https://ubuntu.com/blog/ubuntu-core-an-immutable-linux-desktop

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

но точно не в мейнстримных дистрах

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

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

Не совсем правильно выразился, сорри. Имел ввиду скорее сборки по умолчанию. Если с нуля систему ставить так ненавистными ТСу пакетами, то в принципе можно получить нужное. Но не везде, в убунте например многие пакеты жёстко перенесены в снап, а в deb-репозитории только заглушка.

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

Убунта в последнее время не самый адекватный дистрибутив. В том же дебиане или арче ничего такого не проталкивают.

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

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

Посмотрите как это сделано в OpenWrt

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

видно же куда ветер дует

убунта вытеснила архаичную слакварь. Гикс выныесет архаичную убунту. XXX вынесет архаичный гикс когда-нибудь. Но при этом старенькая простенькая слакварь всё ещё будет с нами.

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

можно хоть песок бедуинам продать.

Занятный факт: пустынный песок слишком гладкий и не годится для бетона. Поэтому речной песок вполне удаётся продавать бедуинам. Правда-правда. Есть реальная потребность → есть торговля и прибыль интересная.

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

Вспомнилось, что натыкался когда-то на Endless OS:

Endless OS использует корневую файловую систему только для чтения, управляемую OSTree и Flatpak для получения и обновления приложений.

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

Рыночек порешал. Не нравится → пишите во всемирную лигу сексуальных реформ.

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

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

не было печали, апдейтов накачали!

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

А тут вдруг и новость на опеннете под него. )

Endless OS относится к числу дистрибутивов, продвигающих инновации среди пользовательских Linux-систем.

Идентичные с Endless OS идеи в последнее время пытаются повторить разработчики Fedora в рамках проекта Silverblue по созданию атомарно обновляемого варианта Fedora Workstation, а также создатели Vanilla OS, tau-OS и Pop!_OS. Инсталлятор и система обновления Endless OS, используются в GNOME OS.

p.s. Похоже, я случайно ткнул пальцем в ‘прародителя’ фич, что так очаровали ТС. :)

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

Не уверен, что nixos можно назвать immutable-дистрибутивом. Подход хотя и позволяет легче откатывать изменения, но сама система вполне себе меняется и её можно сломать неаккуратными действиями.

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

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

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

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

Кстати, контейнеры делают нормальную работу сильно затруднённой или невозможной. Пример — Android, ОС, пригодная исключительно для сидения в интернете и мессенджеров. Нормальная коммуникация между софтом возможна только в системе, легко поддающейся изменениям.

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

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

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

Логика тут такая:

  1. Состояние системы описывается конфигом.

  2. Конфиг неизменен.

  3. Следовательно система выходит тоже неизменной.

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

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

Вот прям вдруг само собой? Такого не помню.

Обычному пользователю практически невозможно привести ОС в состояние

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

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

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

Связка flatpak/distobox полностью удовлетворяет все потребности в софте.

Иди ты????

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

Даже в этом случае обновление может её подломать, например переписав список nix-каналов каким-нибудь мусором (с месяц назад был такой баг в анстейбле).

altwazar ★★★★
()

и с чем это едят?

Пользователи едят, что дали.

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

Но при этом старенькая простенькая слакварь всё ещё будет с нами

Амен

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

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

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

Основная проблема пустынных песков — слишком много пыли, которая забирает на себя много вяжущего. Округлость частный случай, от пустыни зависит. Иногда барханный песок излишне «не круглый», что опять плохо. Вобще, разные размеры частиц песка в смеси хорошо, и бедуины могли бы покупать какой-нибудь крупнозерновой песок и смешивать со своим мелким (после промывки в море). Но, им проще купить...

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

винда сломается если программу которую ты поставил

На моей памяти клиент-банк пару раз ломал винду наглухо. Лицензионный автокад ломал винду чуть полегче. Да и сама винда часто падает в синий экран после апдейтов.

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

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

видел воочию, когда апдейт утащил /data/data

Karrham
()

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

Меня начинает пугать когда она вдруг начинает работать, а не работать это его дефолтное состояние.

sbu_shpigun
()

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

Reset ★★★★★
()

А что? Позитивненько. Сам сидел на NixOS, вполне пойдет (как и другие наверное, не пробовал) для десктопа.

Elibord
()
Ответ на: комментарий от hobbit

Ну извините, такое «Первый комментарий: 17/01/2004» я действительно не застал.

Для меня тут откровением стало недавно, что ЛОР в свое время давал фору двачу. Вот настолько я от всего этого я далек. )

Ресета не знает

Это намек, что в своем комменте он был саркастичен? Тогда sorry. )

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

Немного не понял, зачем такие сложности, если есть прекрасно работающий бесплатный Timeshift ?

Schmax
()
Ответ на: комментарий от Reset

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

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

Но винда превратилась в 💩. Мне даже страшно представить, что будет в Windows 12

Лучше юзать линукс с несколькими костылями, чем терпеть винду, черезж0пность которой ничем не исправишь и уж тем более поддержку «старых» железок не вернёшь

MrCookie ★★
()
Последнее исправление: MrCookie (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.