Найти в Дзене
Toxblh

Неизменяемый образ системы

Неизменяемый образ системы. Применимо ли это к Домашнему Linux по вашему? Хотел бы высказать своё мнение и услышать ваше по теме. То что я вижу вокруг себя, все системы, за исключением домашних Linux дистрибутивов ведут себя, как Embeeded (встраиваемые) решения. Роутеры, смартфоны, телевизоры, умные колонки, SteamDeck, Windows, MacOS, iOS, Android, да даже докер/кубернетис/VM в серверах именно что используют концепт доставки готового, протестированного, образа в различных условиях и после он доставляется, как есть на устройство в неизменном виде. При этом часто используется система A/B обновления, то есть на диске у нас 2 копии системы, текущая и будущая. При обновлении мы разворачиваем готовый образ системы в соседний раздел и переводим флаг загрузки одноразовый на свежую. При этом, если загрузка оказалось неудачной и по watchdog (обычно аппаратный наблюдатель, который, если не получает сигнал на сброс таймера - перезапустит устройство целиком), а так же если система не закрепила з

Неизменяемый образ системы.

Применимо ли это к Домашнему Linux по вашему?

Хотел бы высказать своё мнение и услышать ваше по теме.

То что я вижу вокруг себя, все системы, за исключением домашних Linux дистрибутивов ведут себя, как Embeeded (встраиваемые) решения. Роутеры, смартфоны, телевизоры, умные колонки, SteamDeck, Windows, MacOS, iOS, Android, да даже докер/кубернетис/VM в серверах именно что используют концепт доставки готового, протестированного, образа в различных условиях и после он доставляется, как есть на устройство в неизменном виде.

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

На сегодня например так работает SteamDeck, обновление системы это распаковка образа и A/B переключение. Именно поэтому там только игры и flatpak приложения выживают.

Меня бы на сегодня сильно устроил бы именно не изменяемый образ с всеми необходимыми библиотеками в системном образе /sys /bin /lib для гарантированной работы самой системы. А так же установка приложений в изменяемую часть /usr. Такой подход в целом, как у Win/Andoird/iOS/MacOS - основная система и есть версия операционки - обновляется раз в год или с патчами по необходимости.

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

Мне больше бы понравился подход отделить системный и пользовательский софт, как того предполагает изначально разбивка в linux. И для гибкости, можно было бы выбрать экспертный режим OSTree, когда сам себе системный собираешь или "домашний" путь, когда за тебя его собрали, возможно объёмный, зато точно рабочий такой LTS подход.

В целом это бы ещё решило проблему Linux смартфонов, так как восстановить ОСь на ПК всё же проще, чем смартфон и часто смартфон на сегодня это единственное и самое персональное устройство где обычно "всё".

Что думаете?