Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

puppyrus:pr218:pfs3 [2017/03/20 19:35]
puppyrus:pr218:pfs3 [2018/12/03 12:49] (текущий)
Строка 1: Строка 1:
 +====== pfs-utils. Утилиты для работы с модулями squashfs. Версия 3 ======
 +
 +  *Pfs-utils - комплект скриптов полностью покрывающий задачи по работе со squashfs модулями для  любых linux live ( [[setups/full-vs-frugal|frugal]] ) дистрибутивов.
 +  *Утилиты не являются самодостаточными, то есть работоспособность скриптов по отдельности не гарантируется.
 +  *Актуальными на сегодняшний момент являются pfs-utils версии 3.*, которые имеют кардинальные отличия от предыдущих версий как по составу скриптов и ключам так и по алгоритмам работы утилит.
 +  *Утилиты имеют встроенный --help и небольшую общую справку (man pfs-utils).
 +  *[[http://forum.puppyrus.org/index.php?board=172.0|Обсуждение]]
 +  *[[https://github.com/pfs-utils/pfs-utils-cli/|Скачать]]
 +
 +====== Терминология и спецификации формата PFS ====== 
 +
 +  *Модуль - [[setups/howto-squashfs|squashfs]] архив, содержит дерево каталогов и файлов (от корня системы) для одной или нескольких программ.
 +    *При подключениии модуля к корневой aufs (linux live) файлы модуля становятся доступными в системе.  
 +  *PFS-модуль - модуль, собранный утилитой mkpfs. Отличается от модуля наличием служебной информации (метаданных).
 +  *mkpfs собирает pfs-модуль из одного или нескольких источников и содержит метаданные о каждом из них. Источниками могут быть:
 +    -PFS-модули 
 +    -Каталоги
 +    -Файлы, содержащих внутри файловую систему : //dd if=/dev/zero of=File.img bs=1M count=10240 && mkfs.ext4 File.img//
 +  *pfs-модуль собраный из одного источника называем - простым
 +  *pfs-модуль собраный из нескольких источников - составным (контейнером)
 +    * При помощи pfs-util возможно подключение, отключение, сборка - разборка  составного модуля на составляющие
 +
 +**Внимание!!!**   Не рекомендуется использовать в именах файлов и путей пробелы и символы имеющие для sh (bash) специальное значение.
 +
 +===== Конфигурационные файлы =====
 +
 +    */etc/initvars - переменные заданные initrd ( часть спецификации  [[ http://forum.puppyrus.org/index.php?topic=18733.0 | ULRF ]] )
 +    */usr/bin/pfs - устанавливаются переменные, учитывающий специфику конкретного дистрибутива"
 +    */etc/pfs.cfg - устанавливаются переменные, учитывающий специфику дистрибутива или конкретного пользователя
 +==== Переменные  ====
 +
 +    *prefixmp= каталог для промежуточного монтирования модулей (перед монтированием в корень )
 +    *copyramdir= каталог для промежуточного копирования модулей, подключаемых pfsramload
 +    *PFSDIR= каталог для хранения метаданных о pfs-пакетах
 +    *EXT= расширение по умолчанию для pfs-модулей. По умолчанию pfs
 +    *SYSMNT= каталог для монтирования частей системной aufs
 +    *compression= компрессия внутри squashfs. По умолчанию xz
 +    *compression_fast - компрессия внутри squashfs при использовании mkpfs -f . По умолчанию lz4
 +==== Служебная информация внутри модуля.pfs (метаданные) ====
 +Служебная информация хранится внутри модуля отдельно для каждого источника использованного при сборке mkpfs. Каталог для метаданных:
 +  * /$PFSDIR/mount/[Название_pfs-пакета]/ (название пакета соответствует имени источника - каталога, модуля, образа)
 +                  * pfs.files      (Список файлов, относящихся к pfs-пакету)
 +                  * pfs.dirs.empty (Список пустых каталогов в pfs-пакете. Необязательный)
 +                  * pfs.depends    (Список зависимостей. Необязательный)
 +                  * pfs.specs      (Название программы, версия и т.д. Необязательный)
 +            
 +
 +====== Функционал pfs-utils====== 
 +  *Создание PFS-модуля из каталога, списка каталогов, списка простых модулей 
 +  *Разборка простого PFS-модуля в каталог 
 +  *Разборка составного PFS-модуля
 +    *на каталоги 
 +    *на PFS-модули 
 +  *Подключение модуля в корневую aufs
 +    *в верхний слой AUFS (т.е. с перекрытием нижних слоев)
 +    *с копированием в память
 +  *Отключение модуля  
 +  *Инсталляция модуля (распаковка в корень системы)
 +    *инсталляция составляющих составного модуля
 +  *Деинсталляция модуля 
 +
 +====== Зависимости====== 
 +  *squashfs-util
 +  *util-linux
 +  *findutils
 +  *bash
 +  *gawk
 +  *grep
 +  *Для gui : gtkdialog; yad
 +
 +
 +====== Консольные команды ======
 +Утилиты pfs-utils содержат консольные скрипты и графические "обертки" к ним - GUI. 
 +Консольные утилиты являются общими для всех дистрибутивов, а GUI могут отличаться от описанных в данном руководстве либо отсутствовать вовсе.
 +
 +
 +  
 +
 +==== aufs-n==== 
 +Показывает информацию о слоях AUFS
 +
 +=== Параметры (ключи): ===
 +
 +  *aufs-n N - вернет точку монтирования слоя "N"
 +  *--raw - полный вывод в удобном для конвейерной обработки виде
 +  *--raw '$n $source' - вернет значения только указанных переменных (см.--help)
 +==== mountfile==== 
 +Вспомогательный скрипт, монтирует модули
 +=== Использование: ===
 +  *mountfile file.pfs (в /mnt/+...)
 +  *mountfile file.pfs <mount point>
 +==== pfs==== 
 +  *Библиотека функций для pfs-utils; 
 +  *функции могут быть использованы отдельно в консоли или в ваших скриптах
 +=== Использование: ===
 +
 +  *pfs <function> <pars>
 +  *source /path/to/scripts/pfs ; <function> <pars>
 +=== Функции (<function>): ===
 +
 +  *exitmsg - выход из скрипта с сообщением и кодом завершения
 +  *allow_only_root - проверка на root
 +  *mklist - создание списка файлов и пустых каталогов (как в контейнерах)
 +  *checksfsxzb - проверка системы на поддержку squashfs
 +  *fs_type - тип fs файла (squashfs, ext2-4 и т.д.)
 +  *mkaufs - создание aufs для утилит mkpfs, pfsextract
 +  *delaufs - удаление aufs
 +  *addlayer - добавление слоя к aufs
 +  *mksqmod - создание модуля (обертка к mksquashfs)
 +  *pfs_update_caches - обновление кэшей и прочие мелочи, которые необходимо выполнять после подключения и отключения модулей
 +  *lsblocked - показать список модулей, которые невозможно отключить
 +
 +==== pfsload ====
 +  *Подключает файл **.pfs** к корневой файловой системе AUFS.
 +  *Также могут быть подключены любые squashfs модули сжатие которых поддерживает ваша система, разделы **Ext2**/**3**/**4** и каталоги на таких разделах к корневой AUFS.
 +
 +== Параметры (ключи): ==
 +  ***-r** / **--toram** - копировать модуль в tmpfs и монтировать оттуда
 +  ***-u** / **--upper** - монтирование в верхний слой AUFS (по умолчанию).
 +  ***-l** / **-.-lower** - монтирование в нижний слой AUFS.
 +  ***-n** / **--no-update** - Не обновлять кэши иконок и пр.
 +  ***--ro** / **--read-only** - монтировать "только для чтения" (без возможности изменять). Модули без вариантов по умолчанию -r
 +
 +== Использование: ==
 +  ***pfsload  file.pfs**  - pfs-модуль
 +  ***pfsload  file.img**  - образ с fs внутри
 +  ***pfsload  dir**  - каталог 
 +
 +
 +==== pfsunload ====
 +Отключает файл от корневой файловой системы AUFS.
 +== Параметры и ключи ==
 +    ***-n / --no-update **  - не обновлять кэши меню и проч.
 +    ***-s / --saveram **    - не удалять модуль из RAM после отключения ( смотрите pfsload -r )
 +== Использование: ==
 +  ***pfsunload /file.pfs**
 +
 +==== pfsuninstall ====
 +Удаляет pfs из корневой файловой системы 
 +  *файлы, используемые несколькими pfs не будут удалены, пока хотя бы один из этих pfs установлен или подключен.
 +  *действие обратное pfsextract -i модуль
 +
 +==== pfsfind====
 +Информация о том, к какому подключенному или установленному pfs относится указанный файл. Допустимо указывать часть имени файла.
 +
 +== Использование: ==
 +
 +  *pfsfind filename - find "filename" формат удобный для чтения
 +  *pfsfind filename --raw - find "filename" формат для конвейеров
 +  *pfsfind filename --raw '$n $module' - только нужные поля (см.--help)
 +
 +==== pfsinfo ====
 +При запуске **pfsinfo /file.pfs** выводит список pfs в составном.pfs
 +
 +При запуске без параметров выводит список всех pfs в системе.
 +== Параметры (ключи): ==
 +  ***-m** / **-.-mount** - выводить только подключённые pfs.
 +  ***-i** / **-.-install** - выводить только установленные pfs.
 +
 +
 +==== mkpfs ====
 +
 +Создаёт **.pfs**  из каталога (аналогично mksquashfs). 
 +Автоматически создаёт файлы **//pfs.files//**, **//pfs.specs//** и **//pfs.dirs.empty//** (при наличии внутри pfs пустых каталогов).
 +
 +== Использование: ==
 +
 +  ***mkpfs** - создаст **.pfs** из текущего каталога
 +  ***mkpfs /catalog**  - создаст **.pfs** из каталога <</catalog>>.
 +  ***mkpfs -d /catalog** - создаст **составной.pfs** из каталогов внутри <</catalog>>.
 +  ***mkpfs -m /catalog** - создаст **составной.pfs** из **.pfs** внутри <</catalog>>. Вложенные в «/catalog» каталоги не просматриваются.
 +  ***mkpfs /path/1.pfs /path2/2.pfs /path3/3.pfs -o contaner.pfs** - создаст **составной.pfs** из перечисленных с именем **contaner.pfs**  
 +
 +== Параметры (ключи): ==
 +
 +  ***-o** / **--out-file** - указывает название выходного файла **.pfs** (по умолчанию соответствует имени первого источника в списке).
 +  ***-n** / **--not-dirs-empty** - не создавать файл **//pfs.dirs.empty//**.
 +  ***-f** / **--fast** - быстрое сжатие (размер .pfs больше, но создается быстрее).
 +  ***-w** - включать в модуль AUFS тени. Будет работать но только с ключем -l
 +  ***-l** / **-local** - сборка на месте, без использования aufs.
 +  ***-no-progress** - не показывать строку прогресса.
 +  ***-d** / **--dir** - Только каталоги : $(basename $0) -d dir --> $(basename $0)" '$(find dir -maxdepth 1 -mindepth 1 -type d ) -o dir.pfs'
 +  ***-m** / **--mod** - Только модули: $(basename $0) -m dir ---> $(basename $0)" '$(find dir -maxdepth 1 -mindepth 1 -type f ) -o dir.pfs'
 +  ***-comp comp pars** - параметры сжатия для mksquashfs (такие же как у mksquashfs). Внимание, параметр должен быть последним.  
 +
 +
 +
 +Можно объединять до 126 **.pfs** за один проход (если не указывать при загрузке параметр ядра //max_loop// с меньшим значением). Это ограничение AUFS. При большем количестве pfs рекомендуется объединить их в файлы по 126 pfs, потом объединить эти файлы.
 +
 +==== pfsextract ====
 +  *Составной модуль разбирает (извлекает отдельные pfs из составного модуля **.pfs**).
 +  *Не составной - распаковывает
 +
 +== Использование: ==
 +  ***pfsextract /file.pfs** - создать каталог <</file_pfs>> с отдельными файлами **.pfs** из <</file.pfs>>, каждый pfs в отдельном файле. Если file.pfs - не составной - распаковать в каталог ./file
 +  ***pfsextract /file.pfs pack1 pack2** - извлечь из file.pfs только модули pack1 и pack2 
 +  ***pfsextract -i /file.pfs pack1 ** - извлечь из file.pfs пакет pack1 и установить его в систему 
 +
 +== Параметры (ключи): ==
 +  ***-no-progress** - не показывать строку прогресса.
 +  ***-f** / **-.-fast** - быстрое сжатие (размер .pfs больше, но создается быстрее).
 +  ***-d** / **--nopfs** - извлекает отдельные pfs в виде каталогов. Удобно при переупаковке составного модуля вместе с mkpfs -d
 +  ***-i** / **--install** -  распаковать в систему т.е. "установить"
 +  ***-o** / **--out-dir path/dir** - создать каталог dir и распаковывать в него.
 +  ***-comp comp pars** - параметры сжатия для mksquashfs (такие же как у mksquashfs). Внимание, параметр должен быть последним.  
 +  ***-q**  - молча
 +
 +==== pfsrebuild====   
 +Cборка нового модуля по списку файлов из уже подключенного к aufs.
 +  *Пересобирает модуль по спискам файлов. Сами файлы берет из системы. 
 +  *То есть есть у вас к примеру подключенный модуль mate.pfs и вы хотите заменить в нем пару файлов, ну или конфиг какой поправить. Заменяете и правите прямо в системе, и запускаете pfsrebuild mate (или mate.pfs не помню). В текущей папке получите модуль с изменениями.
 +
 +=== Использование: ===
 +
 +  *pfsrebuild <PACKAGE> <args for mkpfs>
 +==== sync2layer====  
 +Переносит файлы из верхнего слоя aufs во второй слой.
 +  *Подключает новый  rw слой (папка или img) и переносит в него файлы из changes. 
 +  *Использовать можно для освобождения RAM при переполнении changes, и для создания модулей с изменениями на ходу.
 +
 +=== Использование: ===
 +  *sync2layer <newlayer> - создать слой и перенести в него файлы из changes
 +  *sync2layer - перенести файлы в существующий второй слой
 +  *<newlayer> - каталог
 +  *<newlayer.rom> - fs in file
 +
 +----
 +
 +====== Графические скрипты (GUI) ======
 +==== open_pfs ====
 +
 +Основной скрипт, позволяет подключить, отключить или установить модули.pfs.
 +
 +Если в подключаемом **.pfs** есть файл <</tmp/.pfs/.command>>, содержащий команду запуска программы (например <<firefox>>) - то после подключения пользователю будет предложено запустить эту команду.
 +
 +После подключения или установки pfs выводится список отсутствующих зависимостей.
 +====uninstall_pfs ===
 +Удаляет выбранные пользователем pfs.
 +                                   
 +==== manager_pfs ====
 +Показывает список всех (постоянно подключённых, временно подключённых и установленных) pfs в системе.
 +
 +
 +==== loader_fs ====
 +Позволяет подключить к корневой файловой системе AUFS файлы **SFS**, **2**/**3**/**4fs** и разделы **Ext2**/**3**/**4** (GUI к //pfsload// | //sfsload// | //extload//).
 +
 +
 +----
 +
 +
 +==== editor_pfs ====
 +
 +Редактор файлов PFS (GUI к //pfsmerge//).
 +== Принцип работы скрипта: ==
 +  *Пользователь указывает отдельные PFS-файлы и/или каталог с PFS-файлами.
 +  *Скрипт читает все отдельные файлы + все файлы каталога и составляет полный список включённых в них pfs.
 +  *Пользователь снимает флажки с каких-то модулей, если нужно.
 +  *Скрипт собирает PFS из всех модулей (кроме тех, с которых были сняты флажки).
 +
 +==== extractor_pfs ====
 +Скрипт позволяет извлечь один или несколько модулей из файла **.pfs** (GUI к //pfsextract//).
 +
 +----
 +[[http://forum.puppyrus.org/index.php?board=172.0|Обсуждение на форуме]].
  
Печать/экспорт