Со свежей версией toxzm подвижки.
Появилось сообщение mount: mounting aufs on /tmp/aufs filed: invalid arguments
Может у меня получится.
Но с модулем записи все равно проблема. Не отмонтируется и все тут.
Но хоть режим copy работает.
А Ubuntu выложу несколько позже, т к выяснилось сборка сыровата и не все пакеты установил.
Может что то не установлено. Хорошо бы список пакетов что именно нужно для МагОС
И какой то установочный скрипт бы не помешал.
А то вручную делать долго
Это если в toxzm использовать функцию shell для выхода в терминал при записи модуля.
Так в Ubuntu этот терминал без истории команд. Как бы неудобно.
В системе все ок
Я сейчас работаю над сборкой где тоже не работает mount+wh. Но причина не в toxzm, а в том что поддержка монтирования SHWH не включена в ядре. Посмотрите как у вас, может таже проблема. Просто грепом поищите SHWH в конфиге ядра.
Там один и тот же шелл во всех вариантах, он не из дистрибутива, а из бизибокса, который в UIRD. Между сессиями хранить историю слишком сложно будет, нет смысла так усложнять.
Надо в конфиге ядра смотреть.
cat /boot/config-(имя-ядра) |grep SHWH
или
zcat /proc/config.gz |grep SHWH
или
cat /lib/modules/имя-ядра/build/.config |grep SHWH
В разных дистрах в разных местах может конфиг лежать
Да вы голова !
Заработал mount+wh в toxzm в Убунту с ядром от Магеи
Причем с родным ядром
root@ubuntu:~ cat /boot/config-5.4.0-37-generic |grep SHWH
CONFIG_AUFS_SHWH is not set
root@ubuntu:~ zcat /proc/config.gz |grep SHWH
gzip: /proc/config.gz: No such file or directory
root@ubuntu:~ cat /usr/lib/modules/5.4.0-37-generic/build/.config |grep SHWH
CONFIG_AUFS_SHWH is not set
Помогли списки пакетов для сборки Магеи. Сборку веду на базе urpmi и списки у меня гораздо короче чем в МагОС а urpmi по зависимостям до устанавливает нужные пакеты.
По функционалу apt-get install это тот же urpmi
Имена пакетов в Магее и Убунту в основном совпадают
Проблема пропала. Теперь все чисто.
С ядром от Mагеи в Убунте все ок !
Может так и оставить ?
PS
Видимо aufs в ядре Убунту надо патчить актуальной версией
Может конфигуратор загрузчика uird дополнить функцией обновления aufs в активном ядре ?
Ну как для busybox и dracut
А то похоже что ядра в дистрах это очередное минное поле
У меня не работал еще режим mount.
Режим none+wh работал если модуль сохранения не монтировался в систему при загрузке
Если модуль от none+wh был смонтирован, допустим записан в папку base, то он не писался Работал только режим copy
Хорошо бы в конфигуратор uird дополнить прогой тестирования ядра
Что бы не было лишней работы
Из всех путей где может быть конфиг ядра при сборке уирда надежно доступен только /lib/modules/ядро/build/.config, так как без модулей ядра уирд не собрать текущее ядро может быть совсем другим. Если этот путь является обязательным для всех дистров (в чем я не уверен) то можно его парсить на предмет нужных настроек. Но изменить ведь все равно ничего не получится. Просто писать предупреждение? Есть ли смысл?
Ну хотя бы предупреждение.
Уже знаешь, что режимы mount с родным ядром работать не будут.
Я с неделю крутил uird. А оказалось что виновно ядро.
И главное что ваше время экономится. Юзеры не будут задавать лишних вопросов
Проверил на свежей uird. Режим mount с родным ядром в Убунту действительно у меня работает.
Видимо или старая версия uird была виновна или ошибка. Но это уже не важно
В общем то все не так страшно.
С ядром от Магеи Убунту работает и даже Plymouth в uird запускается
Но это с загрузчиком сконфигурированным а Магее
Если загрузчик для ядра от Магеи сконфигурировать для uird в Убунту то Plymouth запускается только из системы
С родным ядром от Убунту uird делает загрузчик ок
Но в стр 32 в /usr/share/uird/mkuird.cfg
Снова переписан разбор ADDFILTER и DROPFILTER c устранением ошибок с папками. Просьба проверить. Еще разок напоминаю логику. Если в фильтре указана строка которая начинается со слэша, то проверяться она будет только от корня, если с любого другого символа то проверяется как шаблон для grep по полному списку файлов и папок. Сделано это чтоб при указании к примеру /bin не зацепило и /usr/bin тоже.
Михаил, фильтр который получился работает намного быстрее чем то что в 80-savetomodule, может и там поменять? В скрипте для toxzm выглядит так:
[ -f /tmp/allfiles ] || find $SRC/ | sed -e 's|^'$SRC'||' -e '/^\/$/d' > /tmp/allfiles
: > /tmp/savelist.black
: > /tmp/savelist.white
for item in $ADDFILTER ; do
if [ -d "$SRC$item" ] ; then
echo "^$item" >> /tmp/savelist.white
else
echo "$item" >> /tmp/savelist.white
fi
done
grep -q . /tmp/savelist.white || echo '.' > /tmp/savelist.white
for item in $DROPFILTER ; do
if [ -d "$SRC$item" ] ; then
echo "^$item" >> /tmp/savelist.black
else
echo "$item" >> /tmp/savelist.black
fi
done
(cat /tmp/allfiles | grep -f /tmp/savelist.white \
| awk -F"/" '{ A = $1 ;{for (i=2; i<=NF; i++) { A = A "/" $i ; print A} } }' \
| sort -u | cat - /tmp/allfiles |sort |uniq -u
grep -q . /tmp/savelist.black && cat /tmp/allfiles | grep -f /tmp/savelist.black ) \
|sort -u >> /tmp/$n/excludedfiles
Здесь DROPFILTER и ADDFILTER это списки того что добавить удалить, а SRC это /memory/changes
if [ -z "$ADDFILTER" ] ;then
echo "/.cache" >> /tmp/$n/excludedfiles
echo "/.dbus" >> /tmp/$n/excludedfiles
echo "/run" >> /tmp/$n/excludedfiles
echo "/tmp" >> /tmp/$n/excludedfiles
echo "/dev" >> /tmp/$n/excludedfiles # maybe it is not necessary
echo "/proc" >> /tmp/$n/excludedfiles # maybe it is not necessary
echo "/sys" >> /tmp/$n/excludedfiles # maybe it is not necessary
echo "/mnt" >> /tmp/$n/excludedfiles # maybe it is not necessary
else
cleaner_root
fi
Что не разрешено в ADDFILTER то из корня удаляется
Мало ли что может оказаться в корне. И в разных дистрах ADDFILTER может отличаться
Для случая если ADDFILTER пустой то будет работать ваш код.
Разделил я DROPFILTER.
Теперь у меня в DROPFILTER фильтр только со слэшем
/etc/.updated
/etc/mtab
/etc/hostname
/etc/initvars
/etc/fstab
и так далее
А для поиска файлов и папок для удаления сделал фильтром SEARCHFILTER
>/tmp/search.black
for item in $SEARCHFILTER ; do echo "$item" >> /tmp/search.black ; done
grep -q . /tmp/search.black && grep -f /tmp/search.black /tmp/allfiles >> /tmp/$n/excludedfiles
Изменения тестировались уже больше месяца
Поиск ведется быстро и зависаний нет
Допустим теперь все файлы и папки где есть слово MagOS удаляются из образа для записи модуля сохранения. А это сократило DROPFILTER что несомненно удобно.
PS
А что теперь /tmp/savelist.white и /tmp/search.black теперь не удаляются после формирования excludedfiles ?
Что-то не пойму чего вы добиваетесь этими изменениями. Давайте словами опишу как все задумано, может мы по разному понимаем как должно быть.
Фильтры ADDFILTER и DROPFILTER идейные последователи savelist для 80-savetomodule и логика их работы максимально похожа. Если в savelist пусто, то сохраняется все не удаляется ничего. Аналогично и тут.
Если в ADDFILTER пусто, то его значение заменяется на ‘.’, а под “греп точка” подходят любые строки. То есть - разрешаем все. Иными словами дефолтное значение ADDFILTER=’.’
DROPFILTER проверяется как есть, то есть если пусто то ничего не удалять.
Список файлов и папок который получился после прохождения полного списка из /memory/changes через эти фильтры записывается в файл /tmp/НомерСекции/excludedfiles, который используется mksquashfs при запаковке. Кроме этого в этот файл дописываются папки, которые однозначно не нужно сохранять /proc, /sys, /tmp, а также рутимены aufs из корня.
Если что-то работает не так или вам не хватает в этой логике чего-то, давайте обсуждать. Из файла с вашими правками я не понял чего вы добивались.
Удаляются перед обработкой следующей секции.
Если записать все в дропфильтр работать будет также. Имею ввиду добавить в дропфильтр все что у вас в searchfilter.
Циклы в баш работают крайне медленно, именно убрав циклы получилось ускорить в несколько раз обработку фильтров.
Да. Был косяк. Не сразу обнаружился, потому, что с моими фильтрами не проявлялся.