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

Автор Тема: PFS-utils на github  (Прочитано 92388 раз)

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

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 1031
  • Репутация: +15/-0
  • Автор темы
Re:PFS-utils на github
« Ответ #135 : 30 Декабрь 2015, 18:48:23 »
А в /mnt кинул симлинки - /mnt/memory/images и т.д.

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:PFS-utils на github
« Ответ #136 : 31 Декабрь 2015, 01:24:48 »

 ls -1 /sys/fs/aufs/*/br[0-9]*

cat $(find /sys/fs/aufs/*/ -name br[0-9]*) получше будет


Ммм...  А почему find?
cat из цикла вынести - в данном случае логично, поскольку порядок не важен, а вот какие преимущества имеет
cat $(find /sys/fs/aufs/*/ -name br[0-9]*) перед cat $(ls -1 /sys/fs/aufs/*/br[0-9]*) что-то никак не соображу.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re:PFS-utils на github
« Ответ #137 : 31 Декабрь 2015, 09:22:36 »
Найдите отличия
Код
# ls -1 /sys/fs/aufs/*/br[0-9]*
/sys/fs/aufs/si_910d4248/br0
/sys/fs/aufs/si_910d4248/br1
/sys/fs/aufs/si_910d4248/br10
/sys/fs/aufs/si_910d4248/br11
/sys/fs/aufs/si_910d4248/br12
/sys/fs/aufs/si_910d4248/br13
/sys/fs/aufs/si_910d4248/br14
/sys/fs/aufs/si_910d4248/br15
/sys/fs/aufs/si_910d4248/br16
/sys/fs/aufs/si_910d4248/br17
/sys/fs/aufs/si_910d4248/br18
/sys/fs/aufs/si_910d4248/br19
/sys/fs/aufs/si_910d4248/br2
/sys/fs/aufs/si_910d4248/br20
/sys/fs/aufs/si_910d4248/br21
/sys/fs/aufs/si_910d4248/br22
/sys/fs/aufs/si_910d4248/br23
/sys/fs/aufs/si_910d4248/br3
/sys/fs/aufs/si_910d4248/br4
/sys/fs/aufs/si_910d4248/br5
/sys/fs/aufs/si_910d4248/br6
/sys/fs/aufs/si_910d4248/br7
/sys/fs/aufs/si_910d4248/br8
/sys/fs/aufs/si_910d4248/br9
# find /sys/fs/aufs/*/ -name br[0-9]*
/sys/fs/aufs/si_910d4248/br0
/sys/fs/aufs/si_910d4248/br1
/sys/fs/aufs/si_910d4248/br2
/sys/fs/aufs/si_910d4248/br3
/sys/fs/aufs/si_910d4248/br4
/sys/fs/aufs/si_910d4248/br5
/sys/fs/aufs/si_910d4248/br6
/sys/fs/aufs/si_910d4248/br7
/sys/fs/aufs/si_910d4248/br8
/sys/fs/aufs/si_910d4248/br9
/sys/fs/aufs/si_910d4248/br10
/sys/fs/aufs/si_910d4248/br11
/sys/fs/aufs/si_910d4248/br12
/sys/fs/aufs/si_910d4248/br13
/sys/fs/aufs/si_910d4248/br14
/sys/fs/aufs/si_910d4248/br15
/sys/fs/aufs/si_910d4248/br16
/sys/fs/aufs/si_910d4248/br17
/sys/fs/aufs/si_910d4248/br18
/sys/fs/aufs/si_910d4248/br19
/sys/fs/aufs/si_910d4248/br20
/sys/fs/aufs/si_910d4248/br21
/sys/fs/aufs/si_910d4248/br22
/sys/fs/aufs/si_910d4248/br23
Моноблок 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

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
Re:PFS-utils на github
« Ответ #138 : 31 Декабрь 2015, 14:44:17 »
А мне все говорят, зачем --nh да зачем --nh  :)
Как я понял, Дядя Шурик как раз говорил об /mnt/. (с точкой), т.е. то, что сейчас есть в PFS-utils.


А pfsunload правленный при любой точке монтирования найдет, в том числе и то, чего initrd монтировал.
Если это гарантированно работает на всех ядрах - то отлично!
Но при этом "железная стандартизация" именования точки монтирования теряет всякий смысл.

--nh - это полумера. Принципиально считаю, что полумер не должно быть.
Либо точка монтирования должна быть всегда одинаковой, либо - полная свобода выбора.

Тот же initrd может монтировать модули и не в "название модуля", а в любые каталоги.
И потому желательно иметь возможность смонтировать модуль в любой каталог в ФС.

Как-то так:   pfsload /module.pfs --mountto /catalog/12345/

Надо, конечно, теперь по всем остальным скриптам поправить [...]
Это было бы хорошо. Конечно хочется иметь общий стандарт, но похоже это пока не реально, а работать всё должно.


Сам-то pfsload запускается откуда?  Из подключенного pfs-модуля.
Не факт. Скрипты PFS-utils лежат в свободном доступе на GitHub, и могут быть запущены в любой среде.
Но т.к. старые ядра уходят из десктопных дистрибутивов, и делать ретро-версии на ядрах старше 2.6.37, скорее всего, никто не будет, думаю уже можно убрать проверку.
Либо делать проверку только в случае, если подключение завершилось с ошибкой.

Если скопировать в память не удалось - а при таких размерах файловой системы это определяется в основном свободной памятью, подключение не выполняется, pfsload завершается с ошибкой.
Вариант неплохой, но вопрос: Проверяется ли перед копированием наличие свободного места?
Не получится ли так, что скрипт будет долго-долго читать модуль размером 1 GB с медленной флэшки, и свалится в ошибку потому что памяти 900 MB?


0 слой - tmpfs
1 слой - save
Поддерживаю, но без base и kernel.
Гораздо более правильно монтировать все SquashFS модули в каталоги с их названиями по умолчанию.
Напомню что ядро и база могут быть в одном модуле, возможна и куча других вариантов совмещения.

Монтирование выше базы только из командной строки, для тех кто знает что делает.
Так не надо, но можно поставить в GUI чекбокс "безопасное подключение" (т.е. в нижний слой) по умолчанию.


в uird используется /memory/bundles
Жаль что не /mnt/., хотя логику такого размещения тоже могу понять.
Надо тогда научить UIRD сообщать PFS-utils место монтирования, например через конфиг. файл.
Может быть есть смысл сделать общий конфиг., который будут читать и UIRD, и PFS-utils?

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 1031
  • Репутация: +15/-0
  • Автор темы
Re:PFS-utils на github
« Ответ #139 : 31 Декабрь 2015, 14:59:28 »
Конфиг в UIRD или другом initrd по логике должен быть внутри, а это будет негибко для PFS-utils.

Мне пришла идея о том, что скорее всего есть возможность установить переменную системную, типо sysctl*. Надо подумать.

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:PFS-utils на github
« Ответ #140 : 31 Декабрь 2015, 15:37:44 »
Найдите отличия
...

Прикольно, не знал.  Однако, насколько такая сортировка стабильно работает?
Эксперимент:
Код
mkdir tst
for i in $(seq 30); do touch tst/f$i; done
find tst -type f
tst/f30
tst/f29
tst/f28
tst/f27
tst/f26
...
tst/f5
tst/f4
tst/f3
tst/f2
tst/f1

rm tst/*
for i in $(seq 1 2 30); do touch tst/f$i; done
for i in $(seq 2 2 30); do touch tst/f$i; done
find tst -type
tst/f30
tst/f28
tst/f26
tst/f24
tst/f22
...
tst/f9
tst/f7
tst/f5
tst/f3
tst/f1
То есть все зависит от порядка создания файлов.  А в каком порядке они будут создаваться в /sys/fs/aufs/ в разных версиях ядер и вообще от чего этот порядок зависит...  Я бы не очень рассчитывал на правильность такой сортировки, хоть сейчас и работает.
Пропустить через |sort -t'/' --key=6.3n мне кажется понадежнее.

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:PFS-utils на github
« Ответ #141 : 31 Декабрь 2015, 16:20:48 »
Цитата: Zay
Тот же initrd может монтировать модули и не в "название модуля", а в любые каталоги.
И потому желательно иметь возможность смонтировать модуль в любой каталог в ФС.

Как-то так:   pfsload /module.pfs --mountto /catalog/12345/

Смонтировать-то элементарно, а вот размонтировать как?  Сейчас pfsunload просматривает список слоев aufs и ищет по имени модуля.  Найдет в любой директории, но только если точка монтирования имеет то же имя, что и модуль.
Можно, конечно, усложнить поиск и для каждой точки монтирования проверять, не через loop ли она смонтирована, а если через loop, то с каким файлом связана.  Но вот стоит ли?  Не могу придумать примера использования, чтобы обязательно требовалось точку монтирования называть не так, как модуль.
Вот в каких случаях pfsload /module.pfs --mountto /catalog/12345/ будет иметь хоть какие-то преимущества перед pfsload /module.pfs --mountto /catalog/module.pfs/  ?

Цитата: Zay
Проверяется ли перед копированием наличие свободного места?
Не получится ли так, что скрипт будет долго-долго читать модуль размером 1 GB с медленной флэшки, и свалится в ошибку потому что памяти 900 MB?
Код
[ $diskspace -gt $filesize ] \                                                проверили, есть ли место в tmpfs
   && [ $(expr $freeram - $minfreespace) -gt $filesize ] \        проверили, останется ли свободная память
   && cp -a "$fsfile" "$copyramdir" \                                      только тогда стали копировать
   && fsfile="$copyramdir/$fsname" \                                    и подключать в дальнейшем будем копию
   || { echo "No space for copy2ram. $fsfile not loaded." >&2       а если любая из проверок или копирование не прошли, ругательство
        grep -q "$copyramdir" /proc/self/mounts \                        и если tmpfs под copy2ram уже смонтирована
         && [ -z "$(ls -A "$copyramdir")" ] \                                  но при этом пуста
         && umountb "$copyramdir"                                            отмонтировали
        exit 1                                                                         выход
      }

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re:PFS-utils на github
« Ответ #142 : 31 Декабрь 2015, 16:31:53 »
Как я понял, Дядя Шурик как раз говорил об /mnt/. (с точкой), т.е. то, что сейчас есть в PFS-utils.
Вообще-то я имел в виду без точки, но поразмыслив решил,  что с точкой будет лучше.
Но при этом "железная стандартизация" именования точки монтирования теряет всякий смысл.
Смысла нет, зато есть наглядность, всё в одном окне.
0 слой - tmpfs
1 слой - save
Поддерживаю, но без base и kernel.
Гораздо более правильно монтировать все SquashFS модули в каталоги с их названиями по умолчанию.
Напомню что ядро и база могут быть в одном модуле, возможна и куча других вариантов совмещения.
Сейчас initrd монтирует базовые модули в /initrd/pup_rw, /initrd/pup_ro1+wh, /initrd/pup_ro2, /initrd/pup_z при любом их сочетании кроме отсутствия самой базы и от замены абстрактных pup_ro2 и pup_z на понятные base и kernel ничего не изменится.
Монтирование выше базы только из командной строки, для тех кто знает что делает.
Так не надо, но можно поставить в GUI чекбокс "безопасное подключение" (т.е. в нижний слой) по умолчанию.
Защита от дурака обязательна. Я за командную строку.
Может быть есть смысл сделать общий конфиг., который будут читать и UIRD, и PFS-utils?
Мне пришла идея о том, что скорее всего есть возможность установить переменную системную, типо sysctl*. Надо подумать.
Код
echo 'SQMNTPT=/mnt/.' >> /etc/profile
Моноблок 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

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 1031
  • Репутация: +15/-0
  • Автор темы
Re:PFS-utils на github
« Ответ #143 : 31 Декабрь 2015, 17:54:30 »
В файл плохо. Желательно как-то более системно. На уровне какого-то внутреннего механизма. Попробую поисследовать этот момент.

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:PFS-utils на github
« Ответ #144 : 31 Декабрь 2015, 18:56:29 »
Да ну...  Чем в файл плохо-то?  Всегда и везде конфигурационные файлы использовались.
Конечно, в /etc/profile вряд-ли стоит, зачем тащить всюду параметр, который нужен одной-двум утилитам.
Создать какой-нибудь /etc/pfsutils.conf, внутри что-то типа
modules_mount_dir="/mnt/modules"
modules_mountpoint_hide="no"
copy2ram_dir="/tmp/copy2ram"

А в начале того же pfsload
[ -f /etc/pfsutils.conf ] && . /etc/pfsutils.conf

А initrd пусть этот /etc/pfsutils.conf и сформирует.  И будет все подключаться в одном месте, а если в разных дистрибутивах по разному - так это не страшно, прочитал /etc/pfsutils.conf и узнал, что где.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re:PFS-utils на github
« Ответ #145 : 31 Декабрь 2015, 19:00:33 »
В файл плохо.
Почему? /etc/profile задаёт переменные окружения. Самое место.
Моноблок 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

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33974
  • Репутация: +231/-0
    • PuppyRus-A
Re:PFS-utils на github
« Ответ #146 : 01 Январь 2016, 08:59:55 »
Хочу обновить pfs-util в pra. На какой источник ориентироваться?

Предлагаю стандартизировать вывод сообщений пользователю:
1. Мой ntf. На уровне идеи сформировался. легко построить любые диалоги и сообщения
2. Универсально: скрипт обертка типа
Код
msg -i icon -k "заголовок" "текст" 
-k - тип сообщения (всплывающее или нет)
Более сложные сообщения вроде в pfs-util не используются
Из готового - notify-send. Сам привязывается к системе сообщений DE

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:PFS-utils на github
« Ответ #147 : 01 Январь 2016, 21:35:51 »
Да я думаю можно и с гитхаба из ветки testing попробовать.  Надо же когда-то их начинать тестировать.
Только до сообщений пользователю я там еще не добрался, правил только pfsload/pfsunload.
Или могу их просто отдельно прикрепить на форум, чтобы вам с гитхабом не возиться.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33974
  • Репутация: +231/-0
    • PuppyRus-A
Re:PFS-utils на github
« Ответ #148 : 02 Январь 2016, 09:54:31 »
Дайте ссылку на тестинг. zip качнуть не проблема
Или рано - пусть накопятся изменения?

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:PFS-utils на github
« Ответ #149 : 03 Январь 2016, 00:34:59 »
Проблема в том, что я еще ни разу не тестировал все это в полном наборе.  Что правил, то и тестировал отдельно.
Поэтому лучше вот модуль с тем, что более-менее проверено.

Кстати, там в fixmenus я придумал извращенческий метод перезапуска xfce4-panel - если помните, раньше не получалось под
sudo ее перезапустить.  А так выдирается окружение от уже запущенной панели и под ним уже делается релоад.

Вот только хотелось бы вообще панель целиком не трогать, после перезагрузки на ней окна переставляются.  Вот бы заставить ее дергать только whiskermenu...

Модуль pfstest.pfs можно для тестов подключить прямо на горячую.  А вот чтобы отключить, придется скопировать куда-нибудь pfsunload
и запускать ./pfsunload pfstest.pfs
Иначе из aufs не отмонтируется, поскольку файл занят.