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

Разработки проекта PuppyRus => Разработка PFS и Initrd => Альтернатива PFS => Тема начата: DdShurick от 19 Январь 2017, 10:17:21

Название: layermanager
Отправлено: DdShurick от 19 Январь 2017, 10:17:21
 Набросал макет layermanager (https://github.com/DdShurick/pfs-utils/blob/master/usr/bin/layermanager), в системе ничего не изменяет, выдаёт отчёт со списком команд для выполнения заданного действия. Код не оптимизирован.
Название: Re: layermanager
Отправлено: sfs от 19 Январь 2017, 10:30:29
Из функционала, которого нет в пфс - подключение в указанный слой (вряд ли юзера такое будут делать)
Или я что-то упустил?
Зачем переписывать - лучше доработать pfsload
Название: Re: layermanager
Отправлено: DdShurick от 19 Январь 2017, 12:35:24
Зачем переписывать - лучше доработать pfsload
Дорабатывайте, а мне легче переписать.
Название: Re: layermanager
Отправлено: sfs от 19 Январь 2017, 12:57:57
началось... :'(
Название: Re: layermanager
Отправлено: DdShurick от 19 Январь 2017, 14:34:26
началось... :'(
А вы как хотели? Подождём, что скажет betcher.
Название: Re: layermanager
Отправлено: sfs от 19 Январь 2017, 14:40:11
Неподъемно сейчас имеющимися силами переписывать. То что есть   до ума бы довести
Название: Re: layermanager
Отправлено: betcher от 19 Январь 2017, 14:47:09
А вы как хотели? Подождём, что скажет betcher.
Дядя Шурик, сделайте новый pfsload, чтоб назывался pfsload, делал то же что pfsload (или больше), c теми же ключами как у pfsload (можно с дополнительными). И при этом был чем то лучше и я первый буду настаивать на замене. А все остальное САБОТАЖ чистой воды.
Название: Re: layermanager
Отправлено: DdShurick от 19 Январь 2017, 15:05:35
c теми же ключами как у pfsload (можно с дополнительными)
Ключи абсолютно одинаковые. Дополнительные планирую.
И при этом был чем то лучше
Это покажет только тестирование.
Кстати, вы так хотели, или я неправильно понял?
Код
# ./layermanager /mnt/sda1/219/optional/Tetris.sfs 
Find module                                                            OK
Check free loop                                                        OK
Check module: Squashfs version 4.0                                     OK

Отчёт:
Подключить mkdir -p /initrd/bundles//mnt/sda1/219/optional/Tetris.sfs && mount -o loop /mnt/sda1/219/optional/Tetris.sfs /initrd/bundles//mnt/sda1/219/optional/Tetris.sfs && mount -o remount,append:/initrd/bundles//mnt/sda1/219/optional/Tetris.sfs/ /
                                                                       OK
Название: Re: layermanager
Отправлено: betcher от 19 Январь 2017, 15:17:38
Это интересный функционал, надо подумать где и как использовать. Но если речь о замене pfsload то без ключей он должен подключать модуль и ничего другого.

Кстати, вы так хотели, или я неправильно понял?
Вы  наверное об этом.
-----------------------------------------
Скрипт для самотестирования -  selftest_pfs, чтоб создавал пару модулей, мержил их, pfsload,pfsunload и так далее, и возвращал типо такого:
mkpfs - OK
pfsload - OK
pfsunload - OK
pfsramload - OK
pfsrebuild - FAIL
и так далее.
----------------------------------------
Я имел ввиду отдельный скрипт, он даже может не быть частью проекта. Нужен для удобства тестирования. Например после изменения в функциях libpfs нужно проверить кучу скриптов где эти функции используются. Запускаешь скрипт и он проверяет какие утилиты сработают какие нет.
Название: Re: layermanager
Отправлено: betcher от 19 Январь 2017, 16:34:09
Это интересный функционал, надо подумать где и как использовать.
Может выводить это с ключиком --debug или --verbose? Hу и подключать конечно сразу.
Название: Re: layermanager
Отправлено: betcher от 20 Январь 2017, 03:17:58
Смотрел вчера последние изменения. Ну вообще норм. Правда не проверял еще :). Давайте отделим функционал pfsinstall   обратно в pfsinstall и я не против замены текущего  pfsload на ваш. А к pfsinstall можно еще кое чего полезного прикрутить :)
Название: Re: layermanager
Отправлено: sfs от 20 Январь 2017, 09:14:31
Давайте отделим функционал pfsinstall   обратно в pfsinstall и я не против замены текущего  pfsload на ваш
Если там то же что в pfsload + загрузка в указвнный слой (не особо востребовано, но и не помешает). Ок - давайте тестировать
Только остаемся в тех же рамках и пока упор на доработку универсальности имеющегося. Улучшения потом
Название: Re: layermanager
Отправлено: betcher от 20 Январь 2017, 09:21:35
Ddshurick, проверил скрипт в магос. Пока ничего не работает, надо разбираться. Сработал только ключик -s, я так понял это вроде aufs-n. Идея кстати нормальная, можно во все утилиты этот ключик добавить, а сам код в либу вынести.  Тогда сам aufs-n не нужен будет.Ну это так, мысль просто.
Название: Re: layermanager
Отправлено: DdShurick от 20 Январь 2017, 09:26:59
я так понял это вроде aufs-n.
Это он и есть.
Пока ничего не работает, надо разбираться.
Хорошо, посмотрю.
Название: Re: layermanager
Отправлено: DdShurick от 20 Январь 2017, 14:26:54
надо разбираться
Посмотрел:
 1. Отсутствует losetup, точнее есть losetupenc, который запрятан глубоко и без sudo ничего не выдаёт, а sudo его не видит ($PATH не тот однако)
 2. Почему-то свободны /dev/loop0 и /dev/loop1, хотя следующие далее заняты.
Что сделать с этим пока не знаю.
Название: Re: layermanager
Отправлено: betcher от 20 Январь 2017, 15:12:30
1. Отсутствует losetup, точнее есть losetupenc, который запрятан глубоко и без sudo ничего не выдаёт, а sudo его не видит ($PATH не тот однако)
ThinkPad betcher # which losetup
/sbin/losetup
Название: Re: layermanager
Отправлено: DdShurick от 20 Январь 2017, 21:23:51
# which losetup
/sbin/losetup
А у меня почему-то нет. Правда у меня система неполная.
На заметку: найти в каком модуле файл
Код
# find /initrd/bundles/ -name losetup
/initrd/bundles/base/sbin/losetup
Название: Re: layermanager
Отправлено: betcher от 20 Январь 2017, 21:30:21
find /memory/bundles/ -name losetup
/memory/bundles/88-magos.xzm/usr/lib/magos/bin/losetup
/memory/bundles/88-magos.xzm/usr/lib/magos/bin64/losetup
/memory/bundles/10-core.xzm/sbin/losetup
/memory/bundles/10-core.xzm/usr/share/bash-completion/completions/losetup
Название: Re: layermanager
Отправлено: DdShurick от 20 Январь 2017, 22:22:23
 Разобрался. Система видит losetup только под рутом. Под рутом всё работает, кроме ключа -u , это из-за почему-то свободных loop0 и loop1.
Название: Re: layermanager
Отправлено: DdShurick от 20 Январь 2017, 22:51:00
Если скомандовать /sbin/losetup - работает.
Отчёт:
Код
user@MagOS bin $ ./layermanager /mnt/livemedia/MagOS/optional/01-firmware.xzm
Find module Check free loop: Check module: Squashfs version 4.0
Отчёт:
Подключить mkdir -p /mnt/bundles/01-firmware.xzm && mount -o loop /mnt/livemedia/MagOS/optional/01-firmware.xzm /mnt/bundles/01-firmware.xzm && mount -o remount,append:/mnt/bundles/01-firmware.xzm/ /
user@MagOS bin $ mkdir -p /mnt/bundles/01-firmware.xzm
mkdir: невозможно создать каталог «/mnt/bundles»: Отказано в доступе
user@MagOS bin $ sudo mkdir -p /mnt/bundles/01-firmware.xzm
user@MagOS bin $ sudo mount -o loop /mnt/livemedia/MagOS/optional/01-firmware.xzm /mnt/bundles/01-firmware.xzm
user@MagOS bin $ sudo mount -o remount,append:/mnt/bundles/01-firmware.xzm/ /
user@MagOS bin $ ./layermanager -s
Слои AUFS (the top layer covers anything below)
 N Модуль                                       Путь

 0 changes=rw                                   /mnt/live/memory
 1 utox-0.8.0.xzm=ro                            /mnt/live/memory/images
 2 88-magos.xzm=ro                              /mnt/live/memory/images
 3 40-2-network.xzm=ro                          /mnt/live/memory/images
 4 40-1-drakconf.xzm=ro                         /mnt/live/memory/images
 5 31-x-lxde.xzm=ro                             /mnt/live/memory/images
 6 30-x-icewm-1.3.12.xzm=ro                     /mnt/live/memory/images
 7 21-x-gtk.xzm=ro                              /mnt/live/memory/images
 8 20-x-base.xzm=ro                             /mnt/live/memory/images
 9 10-core.xzm=ro                               /mnt/live/memory/images
10 00-kernel.xzm=ro                             /mnt/live/memory/images
11 01-firmware.xzm=rr                           /mnt/bundles
что в общем то и хотелось.
Название: Re: layermanager
Отправлено: betcher от 21 Январь 2017, 08:02:43
Я что-то не пойму, он у меня ничего не делает только подсказки выводит. Так задумано? А то я жду, что модуль подключится, а он мне:  "сам подключай, команда такая-то" ;)
Название: Re: layermanager
Отправлено: DdShurick от 21 Январь 2017, 08:40:50
только подсказки выводит. Так задумано?
Я же с самого начала написал, что это макет. Когда всё будет отлажено, делаем команды исполняемыми и всё.
Название: Re: layermanager
Отправлено: betcher от 21 Январь 2017, 08:47:33
А ну ясно. Стормозил :)
Что на счет переименования в pfsload и отделения функционала pfsinstall? Или всеже комбайн хотите?
Название: Re: layermanager
Отправлено: DdShurick от 21 Январь 2017, 09:05:37
Что на счет переименования в pfsload
Я это имя не придумывал, не мне и переименовывать. У меня изначально был load_sfs, который теперь load_xzm. Этим я тоже займусь на предмет лишнего.
и отделения функционала pfsinstall?
Чем отличается подключение модуля от подключения файла-контейнера с внутренней файловой системой? Ничем. Зачем плодить сущности?
Или всеже комбайн хотите?
В пределах разумного.
Название: Re: layermanager
Отправлено: sfs от 21 Январь 2017, 12:34:48
На заметку: найти в каком модуле файл
Уже есть https://github.com/pfs-utils/pfs-utils-cli/blob/master/pfs-utils-cli/usr/bin/fileinpack
Название: Re: layermanager
Отправлено: DdShurick от 21 Январь 2017, 16:30:58
Уже есть
Путаете вы всё. У вас ищется pfs.files, а у меня ищется файл. Анализируя dirname можно определить в каком модуле файл даже если это не pfs.
Выхотя-бы обратили внимание, что у меня не учитывается расширение (.pfs, .sfs, .xzm), а сразу определяется squashfs, файл с внутренней ФС ext или directory. По моему это гораздо универсальнее.
Название: Re: layermanager
Отправлено: betcher от 21 Январь 2017, 16:33:56
По моему это гораздо универсальнее.
Соглашусь. Надо брать :)
Название: Re: layermanager
Отправлено: Zay от 21 Январь 2017, 19:58:21
fileinpack показывает имя пакета PFS, а не файла SquashFS или слоя AUFS.
Напомню что файлы *.pfs можно переименовывать, а имя пакета сохраняется после сборки пакета mkpfs'ом навсегда.
Название: Re: layermanager
Отправлено: betcher от 21 Январь 2017, 20:02:12
*.pfs можно переименовывать, а имя пакета сохраняется после сборки пакета mkpfs'ом навсегда.
Значит пусть везде ищет.
Название: Re: layermanager
Отправлено: DdShurick от 21 Январь 2017, 20:19:36
Напомню что файлы *.pfs можно переименовывать, а имя пакета сохраняется после сборки пакета mkpfs'ом навсегда.
Даже дважды: /etc/packages/mount/$modulename и cat /etc/packages/mount/$modulename/pfs.specs
Но я писал совершенно не об этом.
2 betcher, внимание, layermanager теперь не макет!
Название: Re: layermanager
Отправлено: betcher от 22 Январь 2017, 06:40:55
Посмотрел код. Не проверял правда. Пару мыслей.
Точка монтирования /mnt/data - не удачное название, так вполне может быть смонтирован дисковый раздел, надо позаковыристей.
Мне кажется зря вы ориентируетесь на sudo. Лучше, кмк, ругаться на отсутствие прав или перезапускать скриптом самого себя через su. Sudo во многих дистрах не приветствуется и если и есть то настроен как попало.
Есть мысль как использовать Ваш layermanager, уговорю Антона положить его в uird и копировать оттуда в систему по необходимости. А то uird загрузить может любой (почти) обычный дистр, но без скриптов что работают со слоями грустно там. Кроме того, что уже и так есть в layermanager нужно пожалуй только аналог dir2xzm, ну и проверку зависимостей встроить (losetup, unsqushfs и т.д.) , чтоб ругался на то чего не хватает понятным языком.
З.Ы. "Коллективный труд, для моей пользы. Он объединяет".  (Кот Матроскин ® )
 
Название: Re: layermanager
Отправлено: DdShurick от 22 Январь 2017, 12:33:26
Посмотрел код.
Я тоже. Пришёл в ужас. Может быть ещё раз переписать?
Точка монтирования /mnt/data
Наследство от Puppy.
проверку зависимостей встроить
Это запросто:
Код
echo "ума не хватает и руки кривые" && exit 1
:)
Название: Re: layermanager
Отправлено: DdShurick от 23 Январь 2017, 18:23:07
проверку зависимостей встроить
Проверку зависимостей относительно системы или относительно только одной базы?
Относительно системы (пример):
Код
# find /initrd/bundles/apulse-5.0.xzm -type f -exec ldd {} \;; 2>/dev/null | cut -f1 -d\( | sort -u
/lib/ld-linux.so.2
libasound.so.2 => /usr/lib/libasound.so.2
libc.so.6 => /lib/libc.so.6
libdl.so.2 => /lib/libdl.so.2
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0
libm.so.6 => /lib/libm.so.6
libpthread.so.0 => /lib/libpthread.so.0
librt.so.1 => /lib/librt.so.1
linux-gate.so.1
не является динамическим исполняемым файлом
Если добавить grep 'not', получим список отсутствующих зависимостей.
Если относительно базы, можно прогнать полученный список через цикл проверки наличия зависимого файла в базе.
Впрочем, у вас нет монолитной базы.
Название: Re: layermanager
Отправлено: betcher от 23 Январь 2017, 18:30:23
Относительно системы (пример):
О, как Вы серьезно за дело взялись. Мы слегка о разном, как мне кажется. Имел ввиду список бинарников без которых layermanager не сможет работать.
Название: Re: layermanager
Отправлено: DdShurick от 23 Январь 2017, 19:38:38
без которых layermanager не сможет работать.
mkdir, mount, umount, cp, realpath, basename, file, losetup, getopt. Всё это в MagOS есть. Проблема в проверке losetup --find, в MagOS выдаёт /dev/loop0. Это какая-то особенность porteus, надо либо исключить, либо обойти.
О, как Вы серьезно за дело взялись.
Эти приёмы работы давно проверены.
Название: Re: layermanager
Отправлено: betcher от 23 Январь 2017, 19:55:33
mkdir, mount, umount, cp, realpath, basename, file, losetup, getopt. Всё это в MagOS есть. Проблема в проверке losetup --find, в MagOS выдаёт /dev/loop0. Это какая-то особенность porteus, надо либо исключить, либо обойти.
Речь не о МагОС, речь о "непоймичем" загруженном с помощью uird. В магос в такой проверке смысла нет.
Название: Re: layermanager
Отправлено: DdShurick от 23 Январь 2017, 20:41:31
либо обойти.
Обошёл. В MagOS_64 подключил фирмварь во второй слой.
речь о "непоймичем"
"Пойди туда, не знаю куда, принеси то, не знаю что" :(
Название: Re: layermanager
Отправлено: betcher от 23 Январь 2017, 21:13:21
Ага :)
Название: Re: layermanager
Отправлено: DdShurick от 29 Январь 2017, 14:55:37
Переписал layermanager (https://github.com/DdShurick/pfs-utils/tree/master/usr/bin), добавил запуск ссылками. Только для консоли и для разработчиков. Для пользователей остаётся load_xzm (бывший load_sfs, будущий addmodule). Осталось добавить depmod и fixmenus, или не надо?
Название: Re: layermanager
Отправлено: sfs от 29 Январь 2017, 16:12:20
depmod
Зависимые модули?
fixmenus
Будет же DE зависимо

Я правильно понял - функционала об(раз)ъединения и совместимости с составными модулями pfs-util нет?
Название: Re: layermanager
Отправлено: DdShurick от 29 Январь 2017, 16:18:18
Я правильно понял - функционала об(раз)ъединения нет?
Да. Здесь работа со слоями, об(раз)ъединение это совсем другая история, работа с каталогами.
Название: Re: layermanager
Отправлено: sfs от 29 Январь 2017, 16:19:49
об(раз)ъединение это совсем другая история, работа с каталогами.
Это будет?
Название: Re: layermanager
Отправлено: DdShurick от 29 Январь 2017, 16:30:23
Это будет?
Сначала надо допилить то что есть.