Сайт | Скачать | Видео | Wiki

Автор Тема: mkpfs v.3 (pfsmerge-dir v.2) Неудобства перепаковки составного модуля  (Прочитано 61976 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
объединил бы мерж и мерж-дир.
У них  разные ключи.
Я для mc написал определятор - мне удобно
Код
m       Pfsmerge текущую директорию
<------>Pwd="`basename %d /`"
<------>Pwd1="`echo $Pwd|sed 's/_pfs$//'`"
<------>pfs="`ls -1 "%d" |egrep '.pfs$'`"
<------>[ "$pfs" ] && m="модулей.pfs:\n\n`ls -1 *.pfs`\n\n" || m="каталогов "
<------>printf "Объединение $mиз\n%d\nв составной модуль.pfs\n\nВведите имя файла (без расширения) [
<------>read sfs
        [ "$sfs" ] && sfs="$sfs" || sfs="$Pwd1"
<------>cd ...
<------>if [ "$pfs" ];then
<------>     pfsmerge "$Pwd" ./$sfs.pfs && echo "../$sfs.pfs создан."
<------>else pfsmerge-dir "$Pwd"<------>&& echo "../$sfs.pfs создан."
<------>fi

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
По итогу http://forum.puppyrus.org/index.php?topic=19698.new#new
переписал pfsmerge-dir - так значительно лучше (ничего не удаляется и не смешивается в кучу) и чуть поправил остальные
Дяде Шурику +
Надо доработать проверки , кавычки , включить  addlayer delaufs mkaufs в libpfs и переписать остальные пфс где монтирование применимо
« Последнее редактирование: 19 Февраль 2017, 13:48:39 от sfs »

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
включить  addlayer delaufs mkaufs в libpfs
А надо?
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Так будет удобно. Туда же просится mkpfs -d - т.е. выделить создание списков
Тогда остальные скрипты упростятся и станут понятнее
И не надо переписывать те части , к которым нет претензий

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
создание списков
Метадата? Вот набросок, но это самый примитив:
Код
#!/bin/sh
## admetadata, DdShurick 19.02.2017, GPL v2.
SYSMNT=$(cut -f2 -d/ /sys/fs/aufs/si_*/br0 | head -n1)
SI=$(grep aufs$N /proc/mounts | cut -f2 -d= | cut -f1 -d' ')
cut -f1 -d= /sys/fs/aufs/si_$SI/br[1-9] | while read P
do
[ -d $P/etc/packages/mount ] && continue
cd $P
NAME=$(basename $P | sed 's/\....$//')
M=/$SYSMNT/aufs$N/etc/packages/mount/$NAME
mkdir -p $M
echo "name=\"$NAME\"" > $M/pfs.specs
find . -type d -empty | cut -b2- > $M/pfs.dirs.empty
[ -s $M/pfs.dirs.empty ] || rm $M/pfs.dirs.empty
find . ! -type d | cut -b2- > $M/pfs.files
done
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Метадата? Вот набросок,
не надо переписывать те части , к которым нет претензий
Надо переписать только гле можно переделать на монтирование
Чем Ваш код лучше имеющегося?

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Чем Ваш код лучше имеющегося?
Не знаю, я ваш код не смотрел, мне свою больную голову жалко.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Sfs, согласен со всеми идеями. Создание списков потом можно еще для install/uninstall dir использовать.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
согласен со всеми идеями.
Тогда проверяйте в магос, доводим addlayer delaufs mkaufs и переносим в гит

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
В магос тест проходит.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
По итогу переписывания на addlayer мы потеряли функционал пересборки в памяти (теперь только на винте). Хорошо ли это...
Для больших модулей это давало ускорение

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Aufs не работает поверх aufs, если создавать новые tmpfs может получится обойти ограничение?

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Похоже - да
В /tmp (который в пра tmpfs) - все работает
Но ведь не везде  /tmp в tmpfs
Если в home (в котором не работает) сделать
Код
mkdir tmp && mount -t tmpfs tmpfs tmp
В этом tmp работает. Только после selftest его не отмонтировать - занят

Не помешало бы сделать
Только ведь в aufs может быть не только память.... Тогда надо еще отследить размер того что туда копировать... Короче целый вагон проблем... Может не запариваться
Или оставить и старый вариант...

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Короче целый вагон проблем...
Сами себе создаёте. mkaufs работает в двух режимах, без аргументов в tmpfs, с аргументами (dev и dir) на указанном разделе.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Смотрю код есть пару вопросов вот в этом месте
 mkpfs -d "$i" && addlayer "$nn" "$i" || exit 1
1. Получается /etc/packages/.... записываются прямо в исходные каталоги? Я думал, что они будут писаться в верхний rw слой.
2. При ошибке нужно сперва зачистить все (delaufs), а потом выходить. Как в selftest мы с вами сделали.