Концепт режима сохранения в модуль

Для отключения использовать можно, но сперва всеравно выполнятся скрипты из rc.halt и все что у системд положено. То есть быстрее быть не должно, но размонтирует перед отключением в идеале все.
Отменить сохранение можно в конфиге модуля, заменив REBUILD на no.
Если отменяете часто, нужно так:

uird.shutdown=ask

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


Пару фиксов.

  1. Так в этом загрузчике то же пакета /usr/bin/mksquashfs нет
    Пробовал на старой версии загрузчика запускать у себя МагОС

uird.load+=/machines/ uird.mode=toxzm uird.shutdown uird.changes=/machines/93-new.cfg

Сделал /machines/93-new.cfg

XZM0=93-new.xzm
MODE0=copy
REBUILD0=yes
ADDFILTER0=’’
DROPFILTER0=’’
SQFSOPT0=’’
MAXCOPYSIZE0=’’

И формируется пустой 93-new.xzm
Может что упустил ?

  1. Не получается скачать бранч в гит uird - newmode.

git clone --recursive https://github.com/neobht/uird/tree/newmode?files=1
git clone --recursive https://github.com/neobht/uird/tree/newmode

  1. В Магее скачал newmode из гит и сконфигурировал uird
    И магея не запускается. Вроде не может найти путь к ядру

PS

Пока остановился на этапе конфигурирования UIRD

Заходите в папку uird после того как скачали его как обычно git clone --recursive …
git checkout newmode
git pull origin newmode:newmode # эта может даже не нужна

uird.load=+machines не нужно. Пока не нужно.
Конфиг создавать не нужно, он создается сам.
Сейчас активно фиксим с Ильфатом, лучше забирать свежие изменения перед экспериментами. Обсуждаем в телеграме, если хотите присоединиться можем переехать в беседку.

было бы неплохо
хоть знать какие проблемы и что уже решено

Ок, напишу Ильфату.

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

https://yadi.sk/d/DFf73-eFkiWIh
Добавлена обрабока copy2ram, то есть режим можно использовать с фримедиа и режимом mount для модулей.
Починили с Ильфатом исчезновение некоторых теней в модуле при использовании фильтров.
Добавлен параметр silent для uird.shutdown, просто молча работает.
Добавлено логгирование скрипта в шатдоуне в /var/log/uird.shutdown.log, Если фильтрами не зарезать логс сохранится в модуле. Надо там еще подробностей добавить, пока мало чего пишет.
В планах обработка ситуации, когда модуль запаковать не удалось. Есть идеи?

Еще немного фиксов. Работает стабильно в том числе с фримедиа. Есть еще пару нереализованных идей, но можно и походу допилить. Тестить конечно еще надо, но если покрупному косяков не всплывет то думаю готово для перевода в мастер.
Дело за малым - уговорить Антона :)))
Есть вопросы по названиям.
Название режима? Сейчас “toxzm”.
Папка для монтирования слоя (если конфиг не в источниках)? Сейчас “xzmchanges”

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

Совместными усилиями с Ильфатом добили еще пару моментов. Мне кажется получилась очень хорошая штука. Надо брать :slight_smile:
Попробую собрать плюсы и минусы.
Минусы:

  • по большей части повторяет функционал, который уже есть
  • дополнительный конфиг(и)
  • новые параметры, с которыми нужно будет разбираться
  • не работает без системд
  • Что еще?

Плюсы:

  • реализация не связанна с сохранениями в модуль от магос никак, можно спокойно использовать что нравится;
    раньше для использования сохранений с uird.shutdown в магос нужно было блокировать 80-savetomodule
  • можно использовать uird.shutdown для корректного размонтирования в магос и одновременно machines
  • в простейшем случае не требуется рабираться с конфигами, работает малоотличимо от machines и changes в модуль.xzm
  • полностью перекрывает возможности по сохранению в модуль которые есть в магос
  • не требуется ./lock файлов и перемонтирования дисков с udev при freemedia
  • нет ограничения по времени на создание модуля, которое накладывает системд
  • возможность монтировать модули вместо копирования
  • возможность сохранения в два и более модулей с разными фильтрами; при этом модули могут иметь конкретное имя либо
    привязаны к машине (как машинез)
  • возможность сохранения в модули с разными параметрами для mksquashfs
  • возможность задать максимальный размер для модуля при превышении которого, модуль переводится в режим mount
    и больше не пересобирается, изменения будут писаться в новый модуль с прежними настройками; ввиду того, что в этом
    режиме исключается конкатенация модулей проблем с исчезновением теней не будет в оличии от пересборки модулей в режиме mount
  • гибридный режим для работы с несколькими машинами, когда изменения пишутся выборочно в общий и раздельные модули

Как обычно для последнего магоса:
https://yadi.sk/d/DFf73-eFkiWIhQ

Добалена возможность делать секцию с привязкой имени модуля к машине.
Нужно вместо имени передать пустое значение.
XZM1=’’
Мелкие исправления и новый баннер :slight_smile:

1 лайк

Т е придется когда нибудь выбирать и от чего то отказываться
А может функционал получится объединить ?
Традиционная писалка это пользовательские изменения
Если писать модуль от uird, то, как я понял, система отключена и всяких временных файлов и прочей ненужности мало
То это будет запись системных изменений
Весь вопрос как разделить изменения и можно ли их разделить

Нет, работать будет все что работало раньше. Плюс это, если Антона уговорим :slight_smile:

Это и есть объединение. Заменяет и машинез и сохранение в модуль.

По папкам. Вы можете писать в один модуль /root, в другой /home, в третий остальное. При этом /root и /home могут быть общими для всех машин, а.остальное для каждой машины в отдельный модуль. Это просто пример, делите как нравится.

Я тоже так думаю )

Мне понравился подобный вариант. У меня home и root в общий модуль, а сеть, принтеры и fstab в отдельные для каждой машины.

Да, насчет названия надо бы еще подумать. Но у меня пока своих идей нет )

Попробовал !!!
На своей сборке из МагОС(Роса) задал

uird.mode=toxzm uird.shutdown uird.changes=/modules/93-new.cfg

Модуль записался в /memory/layer-base/1/modules
Использование монтирования по /memory/layer-base/ конечно радует
Т к у меня

/memory/layer-base/0 - это загруженный один из трех дистров

/memory/layer-base/1 - это общие модули для всех дистров.
Пока здесь находится мой магос-модуль

Папку MagOS-data (у меня это LS-Data) я использую только при установке на диск

  • т к режимы Machines и Changes на флэшке у меня тормозят систему
  • упрощается поиск MagOS-data.
    Если она одна в системе то uird ее найдет без конкретного указания адреса

Ну и модуль записался. Причем у меня записалось два модуля.
Один старой писалкой(не отключил) и 93-new.cfg

Теперь а как мне задать фильтр ?
Он у меня большой и в одну строчку в 93-new.cfg точно не влезет

Может проще ?

uird.mode=save

Можно в несколько строк:
ADDFILTER0="
/etc/addfilter
/etc/fstab
/etc/cups
/etc/sysconfig/network-scripts
/etc/NetworkManager
/opt/teamviewer/config"

Надо чтоб отражало суть того, что сохранение идет в модуль.

Табы съело.
На самом деле у меня есть еще один финт в фильтрах. Это возможность задать дополнительные фильтры для каждой машины отдельно. Проверил, работает, но пока не применял и не знаю пригодится ли.
image
В файл /etc/addfilter можно писать фильтры для каждой машины отдельно. Можно в одну строку, можно в несколько.

Фильтр у меня лежат в /memory/etc/FILTRES/

Допустим мой base-filtr для mksquashfs

tmp
run
memory
proc
dev
sys
mnt
media
home
etc/resolv.conf
etc/resolv.conf.save
etc/resolv.conf.tmp
etc/hostname
etc/hosts
etc/adjtime
etc/machine-id
etc/X11
etc/sysconfig/autologin
etc/sysconfig/desktop
etc/sysconfig/harddrake2
/etc/MagOS
etc/sysconfig/network
etc/sysconfig/network-scripts
etc/sysconfig/lm-sensors
etc/sysconfig/mouse
etc/sysconfig/i18n
etc/sysconfig/keyboard
etc/alternatives/gl_conf
etc/X11/xorg.conf.d
etc/X11/wmsession.d
etc/X11/xinit.d
etc/X11/xdm
etc/X11/xorg.conf
etc/X11/xorg.conf.old
etc/X11/xorg.conf.intel.bak
etc/fstab
etc/initvars
etc/inittab
etc/ld.so.cache
etc/ppp
etc/info-dir
etc/magos-release
etc/shadow.lock
etc/.updated
etc/.wh.shadow.lock
var/log/magos
var/spool/postfix
var/cache/ldconfig
var/tmp
var/.updated
var/cache/man
var/log/uird.dbg.log
var/log/user.log
var/log/preload.log
var/log/explanations
var/log/msec.log
var/log/security.log
var/log/Xorg.0.log
var/log/Xorg.0.log.old
var/lib/rpm/?RPMLOCK
var/lib/sddm
var/lib/upower
usr/lib/magos
usr/sbin/blkid.real
usr/share/plymouth/themes/lubuntu-text
usr/share/xsessions/default.desktop
usr/share/mga
usr/share/mga/backgrounds
usr/share/apps/ksplash/Themes
usr/share/magos
usr/share/xsessions/lxqt.desktop
run/sendsigs.omit
.autorelabel
dead.letter
.readahead_collect
.Trash-0
.savelist
.savetomodule
.devsearch
.dbus
.cache
.gnupg

Что получается.
К каждому модулю еще и фильтр надо писать ?

Или можно так задать

ADDFILTER0="$(cat /memory/etc/FILTRES/base-filtr)

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

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