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

Проверил формироваие двух модулей
Мой uirdsave.cfg - расположил в /memory/layer-base/0
Преимущество здесь в том, что я могу отправить модуль в любую папку сборки

XZM0=base/43-uirdadmin.xzm
MODE0=‘none+wh’
REBUILD0=‘yes’
ADDFILTER0=‘/etc /root /usr /share /var’
DROPFILTER0=“$(cat /memory/layer-base/0/optional/base-filtr)”
SQFSOPT0=‘’
MAXCOPYSIZE0=‘’

XZM1=toxzm/home.xzm
MODE1=‘mount+wh’
REBUILD1=‘yes’
ADDFILTER1=“/etc /home /var”
DROPFILTER1=“$(cat /memory/layer-base/0/optional/home-filtr)”
SQFSOPT1=‘’
MAXCOPYSIZE1=‘’

Т е Формируется последовательно base-модуль и home-модуль

Только в XZM0 появлялась папка /home, хотя она была не разрешена в ADDFILTER0
Ну запретил ее в DROPFILTER0
Теперь бы с фильтрами до конца разобраться .

Надо вычислить как /home сквозь фильтр пролез. У меня таких косяков не было.
И еще момент, однако с mount+wh не обрабатываются тени папок. Надо чинить.
По поводу удаления файлов похоже вы были правы и удалять их не нужно. Создать ситуацию чтоб файлы появились у меня не получилось, а ДядяШурик не пишет зачем у него этот код.

C вашим wh_exclude() в режиме mount+wh тени у меня удалялись но логов не было
Почему нет логов непонятно
Попробовал мой модифицированный DdShurick там появились и логи и тени удалялись

Помню что автор проги ДядяШурик вроде не монтировал /memory/changes а копировал в образ
Может отсюда и получается что

file + .wh.file != .wh.file
а
file + .wh.file = file + .wh.file

Т е file возможно снигелируется только при монтировании

Тени папок? С тенями к файлам то все норм.
По логам вечерм гляну не помню уже на чем остановился. Wh_exclude по идее сохранять не обязательно. Он целиком копируется в excludedfiles, там и смотрите. В начале файла.

С папками все нормально.

Сохраняется.

Немного изменил создание новой секции. Первый старт то есть. Теперь после создания секции функция себя перезапускает. Это нужно когда у вас модуль с сохранениями уже есть, а конфига еще нет. Например если хотите перейти с machines на toxzm. В противном случае модуль перезаписывался новыми ченджез, а теперь склеится.

P.S. Сделал none+wh. Но проверить не успеваю. Ингваро, посмотрите? Как-то подозрительно просто вышло :slight_smile:

Проверил.

XZM0=base/44-uirdadmin.xzm
MODE0=‘none+wh’
REBUILD0=‘yes’
ADDFILTER0=‘/boot /etc /opt /root /usr /shares /var’
DROPFILTER0=“$(cat /memory/layer-base/0/optional/base-filtr)”
SQFSOPT0=‘’
MAXCOPYSIZE0=‘’

XZM1=toxzm/home.xzm
MODE1=‘mount+wh’
REBUILD1=‘yes’
ADDFILTER1=‘/etc /home /var’
DROPFILTER1=“$(cat /memory/layer-base/0/optional/home-filtr)”
SQFSOPT1=‘’
MAXCOPYSIZE1=‘’

Все работает !!!
Только стр 169

           if [ "$MODE" == "mount+wh" ] ; then
  	wh_exclude $SRC ${AUFS}-bundle 
  	cat /tmp/wh_exclude >> /tmp/$n/excludedfiles
  	mv /tmp/wh_exclude  /tmp/$n/
  fi

Чуть изменил

  if [ "$MODE" = "mount+wh" ] ; then
  	wh_exclude $SRC ${AUFS}-bundle 
  	[ -f '/tmp/wh_exclude' ] && cat /tmp/wh_exclude >> /tmp/$n/excludedfiles
  	[ -f '/tmp/wh_exclude' ] && mv /tmp/wh_exclude  /tmp/$n/		
  	rm -rf /tmp/wh_files /tmp/wh_exclude
  fi

Было что при первом запуске toxzm ругалась на отсутствие /tmp/wh_exclude

rm -rf /tmp/wh_files /tmp/wh_exclude

Это были проблемы при записи двух модулей.
вроде во втором мод писались логи с первого модуля

С фильтрами все ок!
Это у меня двойные кавычки были и некорректно задал папку в ADDFILTER

/tmp/wh_files удаляется в функции wh_exclude
/tmp/wh_exclude удаляется строчкой выше

Проверки можно добавить. Или просто 2>/dev/null.

Починил подругому. Перенес этот кусок в другое место.

  • Использую toxzm у себя

XZM0=base/40-uirdsave.xzm
MODE0=‘none+wh’
REBUILD0=‘yes’
ADDFILTER0=‘/boot /etc /opt /root /home /usr /shares /var’
DROPFILTER0=“$(cat /memory/layer-base/0/optional/base-filtr)”
SQFSOPT0=‘’
MAXCOPYSIZE0=‘’

XZM1=toxzm/home.xzm
MODE1=‘mount+wh’
REBUILD1=‘yes’
ADDFILTER1=‘/etc /home /var’
DROPFILTER1=“$(cat /memory/layer-base/0/optional/home-filtr)”
SQFSOPT1=‘’
MAXCOPYSIZE1=‘’

  • Проверил на Lubuntu. Неожиданностей не было . Все работает
  • Параметры uird.shutdown

uird.shutdown=haltonly,log

Очень подошли.
Если при загрузке системы дать команду на перезагрузку то ничего не пишется
Может их сделать параметрами по дефолту ?

  • Тестил режим увеличения памяти за счет swap

uird.rootfs=“tmpfs::SIZE=auto”

На компе своя память 2 Гб и увеличенная за счет swap ~6 Гб
Установил пакетов ( /memory/changes=1.9 Гб) и toxzm при выключении просто завис.
Ждал вроде достаточно долго, но напрасно.
Оно и ожидаемо, т к система swap то отключает
Можно ли это поправить ?
Может toxzm сам будет swap включать и отключать ?

Спасибо за тесты.
Своп отключает еще системд скорее всего, если там не отключится, то будет отключаться скриптами дракута из /run/initramfs, которые отрабатывают до нашего шатдауна. Не хотелось бы туда лезть. В вашем случае наверное правильнее делать изменения порциями чтоб помещались в RAM. Либо как вариант делать sync2layer перед выключением, а потом мержить полученный слой с модулем с изменениями, ну или так монтировать сам img файл как модуль.

Не думаю, но у себя можете внести в конфиг uird и это будет по умолчанию.

Попробую все же вариант с системд т к это вроде проще
В принципе systemd для 81-savetomodule я настроил и он пишет большие объемы из swap

Действительно не так просто
Выяснил только что если обнулить /etc/fstab то toxzm уже не зависает а пытается запустить паковку но swap обнулен
А как noxzm запустить из системы?

Боюсь он под это не заточен. Если хотите “наживую” делать модуль с сохранениями посмотрите в сторону скрипта дяди Шурика.

У меня и 81-savetomodule работает. Только медленнее пакует чем toxzm.
Тогда придется делать паковку сис-модуля (base/40-uirdsave.xzm) на 81-savetomodule
А хомяк на toxzm
В принципе то же вариант
Мне сейчас паковка из swap не особо то нужна, но в системе, по идее, ничего не должно зависать.

Если сисмодуль это апдейты к базе, то я бы вообще на другие инструменты смотрел.
Sync2layer, chroot2pfs, pfsrebuild что-то пробовали из этого?
Сохраненки, как мне кажется, для другого. Настройки в первую очередь, что-то доустановить по мелочи, особенно если в репах нет. А обновления надо продумывать иначе.

И вот еще. В рам можно запихать больше если вместо tmpfs использовать zram. Если с tmpfs максимум процентов 80 можно выставить для рутфс от рам, то со зрам можно пробовать и 120.
uird.rootfs=zram::SIZE=120
Можно еще с алгоритмами поиграться, по умолчанию у нас lzo. У паппирусов свежее ядро там другой, вчера смотрел.

На нетбуке (4 Гб памяти) у меня и стоит zram
Но на слабых компах (2 Гб памяти) zram не помогает и даже, со временем, комп начинает повисать
Тестил правда давно, но как ни крути памяти мало

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

uird.rootfs=“tmpfs::SIZE=auto”

При использовании toxzm использовать получается нельзя
С systemd у меня ничего не вышло.

Что то многоходовка вроде получается
А если объем swap будет 5 Гб и весь заполнен ?

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

ЗЫ
Как то получается, что uird инициализирует swap а выключает его система.
Вроде непорядок ???
Монтировал я swap в uird он после отключения в systemd пустой
Можно было бы и при запуске системы swap обнулять
И по идее не система swap запустила и не ей его удалять
может что то с правами доступа сделать ?

Запускал

uird.swap=my.swap uird.rootfs=tmpfs::SIZE=200%

Выяснилось что swap в файле не поддерживает увеличении памяти за счет swap
Тестил копированием в корень образа в 1.6 Гб
Память кончается и все зависает.

PS
Только swap на разделе диска реально у меня увеличивает память за счет swap
Запуск

uird.swap=auto uird.rootfs=tmpfs::SIZE=auto

В итоге решил до лучших времен, для однообразия, пока блокировать эту фичу

uird.swap=auto uird.rootfs=tmpfs::SIZE=70%