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

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

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

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

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

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

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

техника

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Амен

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