Форум проекта PuppyRus Linux

Разработки проекта PuppyRus => Разработка PFS и Initrd => Альтернатива PFS => Тема начата: DdShurick от 12 Февраль 2017, 08:59:23

Название: Редактирование модуля, идея betcher
Отправлено: DdShurick от 12 Февраль 2017, 08:59:23
Проверил идею редактирования модуля в aufs. В данном случае к базе Richy добавляется dhcpcd из сборочного каталога.
Код
# mount -t aufs -o dirs=/home/dev_modules/dhcpcd-6.9.4_XZM=rw:/initrd/bundles/base=ro aufs /mnt/data
# mksquashfs /mnt/data Richy-219-base.xzm -comp xz -Xbcj x86
Parallel mksquashfs: Using 4 processors
Creating 4.0 filesystem on Richy-219-base.xzm, block size 131072.
[===========================================================\] 11632/11632 100%

Exportable Squashfs 4.0 filesystem, xz compressed, data block size 131072
compressed data, compressed metadata, compressed fragments, compressed xattrs
duplicates are removed
Filesystem size 68727.80 Kbytes (67.12 Mbytes)
29.90% of uncompressed filesystem size (229866.53 Kbytes)
Inode table size 112300 bytes (109.67 Kbytes)
22.93% of uncompressed inode table size (489793 bytes)
Directory table size 130956 bytes (127.89 Kbytes)
38.40% of uncompressed directory table size (341046 bytes)
Number of duplicate files found 1203
Number of inodes 14364
Number of files 10679
Number of fragments 828
Number of symbolic links  2181
Number of device nodes 87
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 1417
Number of ids (unique uids + gids) 3
Number of uids 2
root (0)
live (500)
Number of gids 3
root (0)
live (500)
messagebus (489)
# umount /mnt/data
Пояснения нужны?
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 12 Февраль 2017, 10:24:24
/home/dev_modules/dhcpcd-6.9.4_XZM - каталог?
Монтировали его в другой каталог и сжали?
Не понял смысла затеи...
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 12 Февраль 2017, 10:31:06
/home/dev_modules/dhcpcd-6.9.4_XZM - каталог?
Да.
Монтировали его в другой каталог и сжали?
В данном случае создал двухслойную aufs с точкой монтирования /mnt/data и всё вместе сжал в squashfs.
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 12 Февраль 2017, 10:48:26
двухслойную aufs
Теперь замысел понятен
home/dev_modules/dhcpcd-6.9.4_XZM=rw:/initrd/bundles/base=ro
В rw есть какой-то смысл...
Я правильно понял - эксперименты к теме переделки pfsmerge-dir ?
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 12 Февраль 2017, 11:11:37
В итоге:

Сборка двухслойного (можно больше) aufs из каталогов /dir1 /dir2 в /mnt/2layer
Код
mount -t aufs -o dirs=/dir1=rw:/dir2=ro aufs /mnt/2layer
без хотя-бы одного слоя rw aufs не смонтируется.

Какой тогда смысл в ro?
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 12 Февраль 2017, 11:48:51
Какой тогда смысл в ro?
Если монтировать каталоги, то смысла нет, всё можно монтировать rw, в данном случае ro потому что /initrd/bundles/base - точка монтирования модуля Richy-219-base.xzm
Пока не могу придумать, как автоматически генерировать команду монтирования aufs, набирать такую команду вручную....бр-р-р  ???
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 12 Февраль 2017, 12:01:02
не могу придумать, как автоматически генерировать команду монтирования aufs, набирать такую команду вручную....бр-р-р  ???
В консоле никак это будет не удобно. Сделать монтирование всех папок в корне указанной или из конфига со списком папок
Выбирать будет удобно только в гуй.
Юзерам  такое не надо -> гуй не нужен
За перевод идеи в макет +
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 12 Февраль 2017, 12:36:38
В консоле никак это будет не удобно.
Это минус.
Зато экономим место и можем добавлять, тасовать или удалять слои по желанию.
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 12 Февраль 2017, 12:38:33
Да.  Осталось только переписать pfsmerge-dir на этой основе
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 12 Февраль 2017, 13:38:37
переписать pfsmerge-dir
Тут не только dir но и модули, подключенные и неподключенные. Переписывать надо pfsedit. Разбирать модули таким образом тоже можно.
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 12 Февраль 2017, 14:57:07
Пока не могу придумать, как автоматически генерировать команду монтирования aufs, набирать такую команду вручную....бр-р-р  ???
Посмотрите мой squashfs тестер. Там это как раз сделано.
http://files.magos-linux.ru/betcher/squashtest (http://files.magos-linux.ru/betcher/squashtest)
За одно может у себя погоняете :) там только путь к bundles поменять надо. Пока жестко вписан.
Где тут нажать что + добавить :) ?
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 12 Февраль 2017, 16:53:26
Где тут нажать что + добавить :) ?
Слева. Под "Репутация"
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 12 Февраль 2017, 17:39:42
Там это как раз сделано.
Нет, это не то. Я имел в виду команду создания новой aufs.
Код
# mount -t aufs -o dirs=/mnt/$dev/edit/=rw:/path/dir1/=ro:/path/dir2/=ro aufs /initrd/aufs 
Пока "щупаю руками", примериваюсь.
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 12 Февраль 2017, 17:44:14
Чем не устраивает перечисление папок? Последняя точка монтирования. Легче не придумать
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 12 Февраль 2017, 17:50:04
Нет, это не то. Я имел в виду команду создания новой aufs.
Там именно новая aufs при том что количество и имена папок заранее не известны. То что надо. Разве нет?
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 12 Февраль 2017, 19:02:40
То что надо.
В моём init сделано похоже, только с разделением выше|ниже. У вас подразумевается, что все точки монтирования|каталоги в одном месте. На практике обычно приходится добавлять в модуль извне. Пока мысль такая:
- создать новую aufs из двух слоёв, пустой каталог edit и выбранный для редактирования в bundles модуль.
- добавляем командой mount -o remount,add:1:$moduledir $aufs2_mntpt другой модуль или несколько модулей.
- послойно, кроме нижнего, создаём pfs.files
- пакуем новый модуль
- отмонтируем.
В сухом остатке edit со всеми изменениями.
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 12 Февраль 2017, 20:13:33
создать новую aufs из двух слоёв, пустой каталог edit и выбранный для редактирования в bundles модуль.
А если мы не из bundles берем? Вообще aufs из одной папки тоже работает.
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 12 Февраль 2017, 20:22:25
А если мы не из bundles берем?
Тогда сначала монтируем, а потом берём.
Вообще aufs из одной папки тоже работает.
Знаю. Можно и так. Вариантов море.
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 13 Февраль 2017, 09:32:38
  Обнаружил очень большой плюс, не искажаются права на файлы и каталоги. Это важно для таких модулей как cups.
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 13 Февраль 2017, 14:06:44
Обнаружил очень большой плюс, не искажаются права на файлы и каталоги.
Плюсы в общем очевидны, главное, чтоб серьезных минусов не всплыло :)
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 13 Февраль 2017, 16:40:53
 Минус пока один, верхний слой либо tmpfs, либо физический раздел.
 Давайте стандартизируем точки монтирования aufs и edit.
 $SYSMNT/aufs ?
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 13 Февраль 2017, 19:49:50
Давайте стандартизируем точки монтирования aufs и edit.
 $SYSMNT/aufs ?
Не уверен, что нужно.  Это же временная точка, после работы надо удалять все временное включая и точки монтирования. Может что-то типа /tmp/aufs$$, за одно застрахуемся от проблемы с двумя параллельно запущенными pfsmerge
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 13 Февраль 2017, 21:24:41
 Извлечение пакета из составного модуля на примере пакета Print.xzm:
Код
# mkdir /initrd/aufs
# mkdir /mnt/data
# mount -t tmpfs tmpfs /mnt/data
# mount -t aufs -o dirs=/mnt/data/=rw aufs /initrd/aufs/
# mount -o remount,append:/initrd/bundles/Print.xzm/ /initrd/aufs
# cp /initrd/bundles/Print.xzm/etc/packages/mount/cups-2.1.0/pfs.files /tmp/
# cp /initrd/bundles/Print.xzm/etc/packages/mount/cups-2.1.0/pfs.dirs.empty /tmp/
# cat /tmp/pfs.files | while read F; do cp -a /initrd/bundles/Print.xzm$F /initrd/aufs$F; done
# cat /tmp/pfs.dirs.empty | while read D; do echo 0 > /initrd/aufs$D/null; rm /initrd/aufs$D/null; done
# umount /initrd/aufs
# mksquashfs /mnt/data /home/cups-2.1.0.xzm -comp gzip
# umount /mnt/data
В результате получаем модуль cups-2.1.0.xzm и что особенно важно без искажения прав на каталоги и файлы.
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 14 Февраль 2017, 06:49:59
А добавить pfs в контейнер.pfs  по тому же принципу похоже еще проще :)
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 14 Февраль 2017, 09:36:11
А добавить pfs в контейнер.pfs  по тому же принципу похоже еще проще :)
Да. Монтируем два слоя, из точки монтирования запаковываем.
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 14 Февраль 2017, 09:43:13
Минус пока один, верхний слой либо tmpfs, либо физический раздел.
Тут ничего не сделать, но наверное надо это детектить и выдать ошибку
/tmp/aufs$$ - хорошо бы , но если /tmp НЕ верхний слой либо tmpfs, либо физический раздел.
tmpfs - а если модуль большой, а памяти мало
/tmp/aufs$$

Надо пересмотреть как сейчас и переделать так
Извлечение пакета из составного модуля на примере пакета Print.xzm:
без искажения прав на каталоги и файлы.
Сейчас в pfsextract адские костыли для этого

В итоге по инфе из этой темы надо пересмотреть:
1. pfsmerge-dir
2. pfsmerge
3. pfsextract
Кто когда и чем готов заняться (надо договориться - чтобы не в делать  двойную работу)
Я готов pfsmerge-dir сейчас
Есть еще добровольцы?
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 14 Февраль 2017, 10:09:30
Pfsmerge и pfsmrge-dir при такой реализации одно и тоже процентов на 80.
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 14 Февраль 2017, 10:11:11
 Здесь принцип другой и проще написать новое с нуля, чем разбираться в "адских костылях"
Я готов
Накорябать новых костылей :)
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 14 Февраль 2017, 10:30:08
Pfsmerge и pfsmrge-dir при такой реализации одно и тоже процентов на 80.
Не вопрос.  Главное чтобы хотя бы имеющийся функционал не урезать

Здесь принцип другой и проще написать новое с нуля
Если ключи будут те же - переписывайте (т.е. в рамках пфс)
Что конкретно готовы переписать и когда?
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 14 Февраль 2017, 11:11:58
Какой итог - поговорили и разошлись?
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 14 Февраль 2017, 11:49:19
Какой итог - поговорили и разошлись?
Добью squashtest возьмусь за что скажете. Не хочется бросать на пол пути.
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 14 Февраль 2017, 11:51:08
поговорили и разошлись?
Если я разойдусь, мало не покажется :D
Какой итог
Итог ещё не вызрел...
Делать скрипт на каждое действие "от и до", обязательно где-то будет неудобно, и костылики могут потребоваться.
Мне кажется надо отдельно сделать создание временной aufs, отдельно монтирование слоёв в эту aufs, отдельно сжатие.
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 14 Февраль 2017, 12:00:14
Мне кажется надо отдельно сделать создание временной aufs, отдельно монтирование слоёв в эту aufs, отдельно сжатие.
Функциями в Libpfs и потом использовать везде - хорошая идея. Только много переделок
Возможно по итогу переписать с нуля будет проще....
Как бы не стало долгостроем
Может для начала хотя бы pfsmerge-dir переделаем - убедимся насколько все хорошо и потом дальше...?
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 14 Февраль 2017, 12:00:21
Итог ещё не вызрел...
Делать скрипт на каждое действие "от и до", обязательно где-то будет неудобно, и костылики могут потребоваться.
Мне кажется надо отдельно сделать создание временной aufs, отдельно монтирование слоёв в эту aufs, отдельно сжатие.
Мне кажется надо свести все описанные действия к двум скриптам pfsmerge pfsextract, если нарисуются общие куски (временный aufs например) их в libpfs, сборку модуля всегда делать mkpfs ключи сжатия одинаковые для всех трех будут.
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 14 Февраль 2017, 12:01:57
свести все описанные действия к двум скриптам pfsmerge pfsextract
да
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 14 Февраль 2017, 12:32:57
свести все описанные действия к двум скриптам pfsmerge pfsextract
Попробуйте, у меня как-то не вытанцовывается. Но в любом случае начинать надо с создания aufs, это общая часть, поэтому mkaufs лучше отдельным скриптом.
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 14 Февраль 2017, 12:50:43
все описанные действия к двум скриптам pfsmerge pfsextract
Я понял "все описанные действия " - это что связано с составными модулями, а не вообще все
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 14 Февраль 2017, 13:32:22
Да. Составные.
Pfsmerge - собрать составной из простых, из папок, добавить модуль в составной. Возможно заменить простой внутри составного на новый.
Pfsextract - разобрать составной на простые, на папки, вытащить конкретный модуль или модули.
Что еще упустил?
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 14 Февраль 2017, 13:41:08
Что еще упустил?
вроде нет
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 14 Февраль 2017, 14:36:02
Кстати, в pfsextract aufs ни к чему там все будет как сейчас практически. Он может понадобиться только если делать еще редактирование модуля без полной распаковки. Ну то есть еще одна утилита :) Нужна ли? Чтобы ничего не ломать и не страдать от "долгостроя" можно бранч под эти изменения завести.
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 14 Февраль 2017, 14:41:24
Нужна ли?
Если и да - не в первую очередь
Чтобы ничего не ломать и не страдать от "долгостроя"
Я был готов заняться pfsmerge-dir. Теперь по итогу в непонятках - толи ждать Дядю Шурика толи чего
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 14 Февраль 2017, 14:46:13
pfsextract aufs ни к чему
А вы пересоберите cups, будет ли он после этого работать?
ждать Дядю Шурика
И ловить идеи на лету.
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 14 Февраль 2017, 14:49:58
Я был готов заняться pfsmerge-dir. Теперь по итогу в непонятках - толи ждать Дядю Шурика толи чего
Так то все есть и никуда не спешим. Можно писать медленно, с чувством  с толком  с расстановкой, не заменяя пока в мастер ветке.
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 14 Февраль 2017, 14:51:21
А вы пересоберите cups, будет ли он после этого работать?
А что произойдет с правами если смонтирую модуль и распакую на ext3  к примеру? Я может не догоняю чего.
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 14 Февраль 2017, 15:21:57
если смонтирую модуль и распакую на ext3
1) Если распаковывать, зачем монтировать?
2) Я про то, что извлечь пакет из составного модуля не поломав права не очень просто. Надо или распаковывать всё и потом удалять лишнее, а это потребует много места, или приделывать "адские костыли" для корректировки прав, особенно empty.dirs.
Думаете я просто так в вашу идею вцепился?
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 14 Февраль 2017, 15:28:09
2 - да я именно это имел ввиду. Можно бы rsync, но очень бы не хотелось
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 14 Февраль 2017, 15:32:44
1) Если распаковывать, зачем монтировать?
А если мне не все файлы нужны, а только один пакет по списку из /etc/packages?
Видимо что-то все же не понимаю. Я смонтировал модуль, взял список файлов из /etc/packages и копирую (rsync -a например) из точки монтирования, на фс что поддерживает юниксовые права. Когда возникают проблемы?
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 14 Февраль 2017, 15:39:23
rsync -a например
Можно бы rsync, но очень бы не хотелось
Аргументируйте.
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 14 Февраль 2017, 15:50:01
Аргументируйте.
rsync не хотелось бы т.к. жирный и больше ни для чего не используется
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 14 Февраль 2017, 15:54:53
Ну если не rsync, разве у cp  с правами проблемы? Там тоже ключей хвататет.
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 14 Февраль 2017, 16:02:03
 Основная беда cp и rsync то, что копируется только конечный файл, без промежуточных каталогов. В aufs получается сразу как надо.
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 14 Февраль 2017, 16:03:14
Уже не помню всех деталей. Где-то на форуме есть
Сам костыль в районе 122 строки pfsextract
Без него с голым cp не получалось. Костыль плохой - дополнительные операции и замедление. Если c mount получится от него избавиться - отлично
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 14 Февраль 2017, 16:20:00
Спасибо, допер в чем дело. Буду думать.
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 14 Февраль 2017, 16:43:06
Если c mount получится
Почему в будущем времени? Оно вчера уже получилось.
Название: Re: Редактирование модуля, идея betcher
Отправлено: sfs от 14 Февраль 2017, 17:27:04
Оно вчера уже получилось.
В моем понимании "получилось" - это переделанные на гите pfsextract|merge и пр.
Я так и не понял Вы впрягаетель в переделку или опять альтернатива
Название: Re: Редактирование модуля, идея betcher
Отправлено: betcher от 14 Февраль 2017, 17:39:44
Я так и не понял Вы впрягаетель в переделку или опять альтернатива
Не волнуйтесь, ежели чего украдем :)
Gpl он такой :)
Название: Re: Редактирование модуля, идея betcher
Отправлено: DdShurick от 14 Февраль 2017, 17:47:34
опять альтернатива
Ага, артельнапиво :)