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

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

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

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:PFS-utils на github
« Ответ #105 : 20 Декабрь 2015, 13:53:43 »
Цитата: Zay
Странно, я так понял что Merge был полный.
Может быть Pull Request не полный получился?

Нет, все нормально, просто я же новые коммиты помаленьку добавляю.

Цитата: Zay
А вот это спорное решение. Занимать место "на диске" (в "сохранёнке") не желательно, такого эффекта пользователь не ожидает.
Идея была именно "1 модуль - 1 tmpfs". Есть свободная память - монтируем. И гарантия освобождения памяти после отключения.
Кстати, если включать этот функционал в pfsload, то надо ещё предусмотреть случай, когда RAM не хватает.

Хорошо.  Переделал так:
если для copy2ram используется директория по умолчанию
и на ней еще не смонтирована tmpfs, то tmpfs монтируется сразу с размером
freememory минус 128M, но только если этот размер окажется больше, чем подключаемый файл.
Если tmpfs уже смонтирована, или указана директория, отличная от
директории по умолчанию, то подключаемый файл просто туда копируется, если
там достаточно места и свободная память более чем на 128M
превышает размер файла.  То есть если пользователь сам указал, куда копировать - значит,
ожидает, что там файл и окажется, без всяких дополнительных tmpfs.
Если файл по любой причине в память не копировался, ключ --memory
просто проигнорируется и файл будет подключен как обычно.

pfsunload проверяет расположение отключаемого файла.
Если он располагался на tmpfs - файл удаляется.
Если на директории, в которой располагался файл, смонтирована
tmpfs и эта директория теперь пуста - tmpfs размонтируется.

Отдельную tmpfs на каждый модуль смонтировать, конечно, можно, но больно уж громоздко получается когда куча файловых систем.  Сам не вдруг поймешь, где что лежит.

Цитата: Zay
А вот простой возможности загрузки по файлов .pfs по сети в PFS-utils действительно не хватает.

А как это должно выглядеть, если описать просто человеческим языком?
« Последнее редактирование: 20 Декабрь 2015, 15:12:55 от ander »

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re:PFS-utils на github
« Ответ #106 : 20 Декабрь 2015, 14:28:13 »
 Я такой фокус делал
Код
# curlftpfs ftp://mirror.yandex.ru/puppyrus/puppyrus/repository/ /mnt/data/ && rox /mnt/data
Но нужен хороший интернет.
Моноблок 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

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:PFS-utils на github
« Ответ #107 : 20 Декабрь 2015, 15:23:58 »
И потом прямо оттуда и подключить?  В принципе, конечно, можно.  Тут как раз, пожалуй, тот редкий случай, когда действительно нужен copy2ram.  Но вот будет ли это удобно, как-то не уверен.  По мне, так лучше все делать явно - скачал, положил, куда надо, подключил.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re:PFS-utils на github
« Ответ #108 : 20 Декабрь 2015, 16:14:21 »
И потом прямо оттуда и подключить?  В принципе, конечно, можно.
Я подключал. Без copy2ram.
По мне, так лучше все делать явно - скачал, положил, куда надо, подключил.
Любой браузер + инструкция.
Моноблок 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

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:PFS-utils на github
« Ответ #109 : 20 Декабрь 2015, 21:44:23 »
Цитата: DdShurick
Цитата: ander
Свежие дополнения: подключение/отключение с копированием в память может делаться той же парой утилит
pfsload/pfsunload, для чего pfsload понимает дополнительный ключ -m или --memory
Смысл? Разве что при загрузке по сети.
Да я тоже особого смысла в copy2ram не вижу, просто хочу избавиться от лишних утилит.  А то есть pfsload/pfsunload,
да кроме того еще и pfsramload/pfsramunload+pfsramfree - ну вот зачем такой зоопарк?  Уж лучше пусть все делается одной
парой утилит.

Цитата: DdShurick
К сожалению не имею возможности работать с github после замены жёсткого диска, не пускает  :(
А что, ssh ключи генерировали?  Я так вообще не заморачивался, работает оно через https,
в том числе с командной строки, и пусть себе работает.
Может и у вас через https пойдет?  А пароль на аккоунт можно и через почту восстановить.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re:PFS-utils на github
« Ответ #110 : 21 Декабрь 2015, 10:42:17 »
автообновление всех автозагруженных модулей
Моё мнение - автообновление любого ПО это безусловно плохая идея.
Чем плохо иметь скрипт, который выводит список устаревавших модулей? Это стандартный функционал любого ПМ

Чем для поиска и загрузки функционально не устраивает sfs-get? Юзаю. Мне удобно

Что теперь делать с доработками на гитхаб?
1. Отдельный модуль - никто не будет тестировать
2. В исо - стремно без тестирования
Вероятно отдельным модулем в исо. Если что-то пойдет не так - отключить

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:PFS-utils на github
« Ответ #111 : 21 Декабрь 2015, 10:47:08 »
Чем плохо иметь скрипт, который выводит список устаревавших модулей? Это стандартный функционал любого ПМ
ты не путаешь "выводит список устаревавших модулей" и "автообновление"? разные вещи однако.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
Re:PFS-utils на github
« Ответ #112 : 23 Декабрь 2015, 12:34:18 »
Нет, все нормально, просто я же новые коммиты помаленьку добавляю.
А, тогда все в порядке.
Делайте Pull Request чаще, я постараюсь минимум раз в неделю сливать.
Сам в ветку "testing" без согласования не полезу.


Про copy2ram: Прочитал внимательно описание, и думаю это хорошая идея. Только:
...tmpfs монтируется сразу с размером freememory минус 128M...
При работе возможно не только уменьшение свободного места, но и его освобождение.
Может тогда вычислять объем для диска не по freememory, а например "размер RAM минус 256MB"?
Главное - всегда строго проверять freememory потом, при копировании модулей в этот tmpfs.

...если пользователь сам указал, куда копировать...
Что-то я тут не успел... Это как делается, и зачем?

Отдельную tmpfs на каждый модуль смонтировать, конечно, можно, но больно уж громоздко получается когда куча файловых систем.  Сам не вдруг поймешь, где что лежит.
В целом - согласен, думаю Ваш вариант лучше.

Если файл по любой причине в память не копировался, ключ --memory просто проигнорируется и файл будет подключен как обычно.
Хорошо ли это? Пользователь подключил модуль "в память", хочет вынуть флэшку, но - нельзя!
Как минимум надо в таком случае выдавать предупреждение WARNING! Но пользователи GUI его не увидят. Кстати, GUI надо будет тоже поправить!
Мне кажется, лучше в случае нехватки RAM не монтировать и выдавать ошибку, но со спец. параметром (например --force) - делать как сейчас.

А как это должно выглядеть, если описать просто человеческим языком?
Это, во многом, зависит от дистрибутива и его принципа сборки. Чуть позже постараюсь описать подробнее, как я это вижу, а там уже можно будет подумать, востребован ли будет такой функционал.


После просмотра Ваших коммитов с комментариями, отметил некоторые детали:

pfsload:  Если отказаться от создания loop-ов в скрипте - надо обязательно проверить, как это будет работать с busybox'ом (из того же PuppyRus).
Как вариант (если не заработает) - можно перенести функционал создания loop-ов в скрипт /usr/bin/mountb (по условию использования busybox).

Не понял в чем смысл параметра "--nh", тогда уж логичнее было бы дать возможность монтировать в любую директорию (не только "[.]название_модуля").

Т.е. можно было бы заменить MOUNTDIR и --nh одним параметром с двойным функционалом, например:
mountdir /mnt/  (с '/' в конце) - изменить только корневую директорию.
mountdir /mnt/catalog1  (без '/' в конце) - указать произвольную точку монтирования.

И ещё важный момент: такие функции, пока что, очень не желательно вносить в Help, потому что другие скрипты PFS ожидают модули именно в /mnt и с точкой в начале. Поэтому изменение точки монтирования можно предложить как продвинутый функционал, но не для обычных пользователей.

topaufslayer:  Был задуман именно как дистрибутив-специфичный скрипт.
Он не должен присутствовать в пакете, т.к. при его отсутствии pfsload не должен ругаться, а просто работать как будто так и надо.

В перспективе можно сделать такой скрипт для / в UIRD. Оттуда же можно передавать и путь для монтирования по умолчанию.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re:PFS-utils на github
« Ответ #113 : 23 Декабрь 2015, 13:09:34 »
Если файл по любой причине в память не копировался, ключ --memory просто проигнорируется и файл будет подключен как обычно.
Хорошо ли это? Пользователь подключил модуль "в память", хочет вынуть флэшку, но - нельзя!
Как минимум надо в таком случае выдавать предупреждение WARNING! Но пользователи GUI его не увидят.
Поддерживаю Zay
Не понял в чем смысл параметра "--nh",
На мой взгляд - ненужное усложнение. Если это поменять - в других скриптах могут появиться проблемы
В перспективе можно сделать такой скрипт для / в UIRD. Оттуда же можно передавать и путь для монтирования по умолчанию.
Не понял суть замысла...

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re:PFS-utils на github
« Ответ #114 : 23 Декабрь 2015, 13:17:53 »
Если отказаться от создания loop-ов в скрипте - надо обязательно проверить, как это будет работать с busybox'ом (из того же PuppyRus.
Код
$sudo mount -o loop "$SQMOD" "$mount_point" 
У меня в load_sfs давно работает.
другие скрипты PFS ожидают модули именно в /mnt и с точкой в начале. Поэтому изменение точки монтирования можно предложить как продвинутый функционал, но не для обычных пользователей.
Изменение точки монтирования не имеет смысла, это промежуточный этап, на конечный результат не влияет. А вот определиться со стандартом надо.
Моноблок 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

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:PFS-utils на github
« Ответ #115 : 24 Декабрь 2015, 17:43:57 »
...если пользователь сам указал, куда копировать...
Что-то я тут не успел... Это как делается, и зачем?

Не понял в чем смысл параметра "--nh", тогда уж логичнее было бы дать возможность монтировать в любую директорию (не только "[.]название_модуля").

А вот захочется, чтобы все было в одном месте и единообразно -
то есть смонтировать туда же и так же без точки, как initrd монтирует, и копирование делать, куда initrd копирует:
pfsload --nh -m /mnt/home/pra1511g/optional/Libreoffice-p-5.0.0-s01.pfs  /mnt/live/memory/images  /mnt/live/memory/copy2ram

Задается только каталог, в котором будет создана точка монтирования.  Имя самой точки монтирования пусть и дальше совпадает с именем pfs, иначе путаницы будет много.

Мне кажется, лучше в случае нехватки RAM не монтировать и выдавать ошибку, но со спец. параметром (например --force) - делать как сейчас.
Хорошо, чуть позже так и сделаю.

pfsload:  Если отказаться от создания loop-ов в скрипте - надо обязательно проверить, как это будет работать с busybox'ом (из того же PuppyRus).
В pra работает, и именно с busybox mount.
DdShurick тоже пишет, что у него все сделано через mount -o loop

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re:PFS-utils на github
« Ответ #116 : 24 Декабрь 2015, 17:58:08 »
А вот захочется, чтобы все было в одном месте и единообразно -
Кому и для чего такое может захотеться... Разве что под разные инитрд пилить... (не уверен)
В pra работает, и именно с busybox mount.
Не трогал для совместимости
Без busybox ухудшений нет. У меня одно время было
Код
#busybox
#!/ash
"@"
 :)

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
Re:PFS-utils на github
« Ответ #117 : 26 Декабрь 2015, 15:11:36 »
А вот захочется, чтобы все было в одном месте и единообразно -
то есть смонтировать туда же и так же без точки, как initrd монтирует, и копирование делать, куда initrd копирует:
pfsload --nh -m /mnt/home/pra1511g/optional/Libreoffice-p-5.0.0-s01.pfs  /mnt/live/memory/images  /mnt/live/memory/copy2ram

Задается только каталог, в котором будет создана точка монтирования.  Имя самой точки монтирования пусть и дальше совпадает с именем pfs, иначе путаницы будет много.
Так, как сейчас, уже путаницы много.
Любое изменение пути к точке монтирования ломает в скриптах некоторые функции.

Что касается монтирования "туда же, куда монтирует initrd" - такие планы были с самого начала.
Как мне кажется, должен быть выработан общий стандарт, как для initrd так и для PFS-utils.

Как вариант, можно сделать конфиг. файл, и пусть все скрипты берут оттуда префикс монтирования.
Значение по умолчанию тогда будет '/mnt/.'

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re:PFS-utils на github
« Ответ #118 : 26 Декабрь 2015, 15:44:59 »
Как мне кажется, должен быть выработан общий стандарт, как для initrd так и для PFS-utils.
Вот и я о том же, а в ответ тишина. Мне кажется правильно будет /mnt/*
Моноблок 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

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:PFS-utils на github
« Ответ #119 : 26 Декабрь 2015, 17:06:55 »
Вот и я о том же, а в ответ тишина. Мне кажется правильно будет /mnt/*
pfsload --nh /mnt/home/pra1511g/optional/Libreoffice-p-5.0.0-s01.pfs
Как раз и смонтирует в /mnt/Libreoffice-p-5.0.0-s01.pfs
А мне все говорят, зачем --nh да зачем --nh  :)
А pfsunload правленный при любой точке монтирования найдет, в том числе и то, чего initrd монтировал.
Надо, конечно, теперь по всем остальным скриптам поправить, чтобы тоже от точки монтирования поменьше зависили, помаленьку надеюсь руки дойдут.