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

Я проверял по вашей схеме с файлом. Удалял /usr/bin/leafpad несколько раз перегружал файл не появлялся. Вернул на место пару раз перегрузил - файл на месте. Но тестить еще надо конечно.
test -e должно работать, возможно не правильно сработала замена с sed, надо разбираться.

Еще я фильтр загрузил

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

Ругнулся при старте но заработал
И /memory уже присутствует в uird. Удобно наладить взаимодействие с системой
Добавить только формирование /memory/etc в uird

Вопрос по uird.toxzm_mode
Режим
if [ “$MODE” = “mount” -o “$MODE” = “mount+wh” ] ; then

Может работу строк

mount -o $OPTIONS $FS “$MODNAME” “$3/$BUN”
mount -o remount,add:1:"$3/$BUN"=ro+wh aufs “$4”
[ $? -eq 0 ] && echolog " $blue–>" $purple"$MODNAME"$green" [Mount mode] "$default

задать через опцию ?
Пробовал я их закоментировать и работа ничем не отличается от обычного МагОС
А режим none получается уже, в этом случае, лишний

Сервис cups сбоил

systemctl stop cups
systemctl disable cups

выключиться с сохр
Загрузить систему

systemctl enable cups

выключиться с сохр
Загрузить систему

systemctl start cups

Сервис должен быть активный

PS
Проверил и сервис cupc сбоит
Т е if [ -e из трех теней для сервиса cups удаляет одну. Вот логи

WH=/etc/systemd/system/sockets.target.wants/.wh.cups.socket
WH=/etc/systemd/system/multi-user.target.wants/.wh.cups.path

WH=/etc/systemd/system/.wh.printer.target.wants
F >=/etc/systemd/system/printer.target.wants
WH=/etc/systemd/system/.wh.printer.target.wants (Delete)

Причем в системе этот же код работает
Может это толькр в Магее ?

Положите фильтр рядом с конфигами от toxzm.

Откуда он у вас берется этот мемори/етк?

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

Формируется /usr/lib/magos/rc.preinit/01-inifile при старте
В /memory/etc у меня

  • ссылка на /etc/MagOS/config
  • /memory/etc/sysflash - адрес активного раздела флэшки. Теперь его не надо вычислять.
  • копируются фильтры для писалки
    Их можно теперь безопасно редактировать т к /memory в модуле записи не запоминается
  • /memory/etc/reginfo - инфa о режиме работы (admin, homo)

Удобнее заходить на /memory/etc и как оказалось вся эта инфа и в uird присутствует
Как то toxzm сбойнул и вышел в терминал uird и там была моя /memory/etc

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

Провел тест с mout+wh и cups в магос.
Если перед выключением статус enabled, то и после рестарта - enabled. С disabled - аналогично. То есть все как и ожидалось.
Непонятно только с active. После первого старта статус active. Если выключить в disabled, перезагрузить и снова сделать active, то после перегрузки будет enabled. Так чтоб после перегрузки сразу было active уже не получается сделать. Но тут может тонкости системд, я в нем не силен. Или вклиниваются скрипты магос.
Всеже правльно тестить тени нужно на независимых файлах и желательно разных типов. Ссылки, папки, сокеты и проч. На системд файлы слишком многое может влиять, чтоб однозначно грешить на моунт+вх.

Ветка с toxzm слита в мастер. Бранч newmod удалил. То есть теперь toxzm в UIRD, и к следующей сборке будет в магос. Мои поздравления э… мне :slight_smile:
Переделал логгирование. По умолчанию логов нет. Включаются uird.shutdown=log, и сам лог будет записан рядом с конфигом от toxzm, а не в /var/log в ченджез. Надо подумать что добавить в лог. Лог для каждого конфига свой, предыдущий лог сохраняется с добавленным расширением .old на случай если нужно сравнить.
З.Ы. К следующей сборке магос нужно чтоб toxzm стабильно работал. Хотябы в самом магос :). Так что по возможности тестим.

Название утвердили?

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

Закрутил я на mount+wh сервис cups https://cloud.mail.ru/public/4dnk/n5s3MaEhF
И кто его придумал. Один сервис и три тени генерирует.
shutdown-uird.sh

Сам

wh_exclude() {
echo ‘’ > /tmp/wh_exclude
find $1 -name ‘.wh.*’ |sed “s:$1::” | while read WH ; do
F=$(echo $WH | sed ‘s/.wh.//g’)
FS=$( find “${SYSMNT}/changes”"$F" -print 2>/dev/null )
#. if [ -e ${SYSMNT}/changes/$F ] ; then
if [ -n “$FS” ] ; then
echo $WH >> /tmp/wh_exclude
echo “FS=$FS” >> “$LOGUIRD/wh_exclude.log”
echo “WH=$WH(delete)” >> “$LOGUIRD/wh_exclude.log”
else
echo ‘’ >> “$LOGUIRD/wh_exclude.log”
echo “WH=$WH” >> “$LOGUIRD/wh_exclude.log”
#. elif [ -e $2/$F ] ; then
#. echo $F >> /tmp/wh_exclude
fi
done
}

  • Поиск файлов к теням сделал опять же на find

FS=$( find “${SYSMNT}/changes”"$F" -print 2>/dev/null )

  • Исключил

elif [ -e $2/$F ] ; then

Уже обсуждали.

Если встречается
file + .wh.file = .wh.file
То file автоматически нигелтруется в aufs

  • Запуск wh_exclude перенес стр 178

[ “$MODE” == “mount+wh” ] && wh_exclude $SRC

В вашей позиции он при первом чистом запуске в /memory/changes ищет зависшие тени
Опять ==
Будет ли работать в Убунту

  • добавил

echo “/mnt” >> /tmp/excludedfiles # maybe it is not necessary

Опять в Магее появлялась эта папка.
Если ее запретить в фильтрах, то она во всех вложенных папках фильтрует все имена на mnt*
Задавал во вложенных папках файл mnt1 и он не записался в модуль
Это же относится к папке /sys и наверно к /dev /proc

  • Остальное логи. Записываю в

LOGUIRD=’/memory/layer-base/0/optional/uird-log’

Моя сборка и отличается что я, как положено в любом дистре, включаю логи
И без логов и не знаю как разбираться с системой

Поздравляю и я. Вполне заслуженно.
Как у вас только сил хватило на отладку и на обсуждения ?

Тут Убунта еще у меня не отметилась
Своя логика

Писать в лог каждую строчку при обработке теней не вижу смысла достаточно иметь в логе полный список файлов из ченджез и весь список wh_exclude и excludefiles. Что и сделано. Путь для логов который вы предлагаете может и не существовать, старайтесь думать абстрагируясь от своей сборки и от магос, кстати, тоже.
/mnt в экслуды добавлю, не должно мешать.
== работать будет везде. Тут ash из стокового бизибокса, а не оболочка из дистра.
По переносу поиска в другую строку посмотрю. На память не соображу, вероятно вы правы.
По остальному буду проверять, пока оставлю слегка модифицированный вариант ДядиШурика, он у паппирусов давно работает, странно что у вас сбоит. Возможно проблема не там где вы ищете.

Логи кот я включил дают возможность посмотреть все тени в модуле.
По результатам анализа логов уже уже один баг нашел.
Так что вроде вещь нужная

Не работает именно условие if [ -e
Одну то тень удаляет. Скорее всего сам bash в uird у меня урезанный получился
Но повторюсь.
В Магее ваш вариант и с if [ -e работает

А как их посмотреть из системы.
Выключение у меня идет настолько быстро, что прочесть ничего нельзя
Поэтому и делаю логи
На старом варианте перед паковкой дал задержку в 10 сек и 5 сек
Так тени в модуль не прошли
Но старом варианте я тени просто удалял

имея allfiles и wh_exclude можно все это найти. А без allfiles, вы даже не знаете были ли эти линки в ченджез. Может системд удалил при выключении :). По этому сохраняем списки и сравниваем.

Собрать свежий уирд и uird.shutdown=log, лог ищите рядом с конфигом. За одно посмотрите чего не хватает в самом логе.

Пока названия не устоялись, мне просто интересно – переменная WHDELL как расшифровывается? Имеет ли отношение к фирме Dell, производителю компьютеров одноименной марки?

Меня тоже смущает двойная ‘L’.

Не переживайте, в коде uird ее нет. Это Ингваро просто примеры шлет.

WHDELL - wh delete - удаленные тени ( ‘.wh.’ )

Сильно не смотрел но вроде нормально
Но только имя ~.lod ??

  • Не понял строки в /run/initramfs/usr/lib/dracut/hooks/shutdown/99-shutdown-uird.sh

grep -f /tmp/savelist.white /tmp/allfiles | grep -vf /tmp/savelist.black > /tmp/includedfiles
grep -q . /tmp/savelist.black && grep -f /tmp/savelist.black /tmp/allfiles >> /tmp/excludedfiles

Что то много они всякого находят

  • Применительно к теням у вас просто список заблокированных теней
    А у меня все найденные тени в модуле и какие из них заблокированы к записи.
    Это мне было необходимо что бы разобраться с сервисом cups

Не, не нормально. Сохранялось для одной секции только. Сейчас переделал, сохранятет в _log.tar.gz, а в нем все нужные для дебага файлы.
lod исправил, спасибо.

Особо не разбирался, спер у Михаила как было. Будут проблемы - буду смотреть, пока вроде работает как ожидаешь.

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