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

Автор Тема: "Костыли" в PFS-utils  (Прочитано 3885 раз)

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

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
"Костыли" в PFS-utils
« : 05 Январь 2014, 19:47:02 »
Информация в основном предназначена для разработчиков из команды MagOS, которые не в курсе исторических особенностей PuppyRus.

Код PFS-utils был написан полностью с нуля, с расчетом на доработку в будущем.
Везде, где возможно, старались не использовать "костыльные" решения. Но это, конечно, не всегда удавалось.


В скриптах PFS-utils используется важная команда losetup-FULL.
Дело в том, что исторически в PuppyRus 'losetup' - это симлинк на BusyBox, который не поддерживает нужные параметры. Поэтому позже в систему был добавлен бинарник 'losetup' под именем 'losetup-FULL'.
Возможное временное решение для других систем - симлинк 'losetup-FULL' > 'losetup'.

Симлинки с названиями ***_nomenu были написаны для совместимости с существующими скриптами PuppyRus (SFS_event), в других системах они не нужны.
При использовании в других системах симлинки ***_nomenu можно просто удалить, функционал не изменится.

Скрипт topaufslayer - специфичный для PuppyRus. Он возвращает номер самого верхнего слоя AUFS, после пользовательских RW-слоев.
Это необходимо для монтирования модулей поверх остальных (pfsload -u), чтобы файлы модуля не перекрывали файлы, созданные пользователем.
В PuppyRus номер верхнего слоя определяется по содержанию спец. конфиг. файла, в других системах нужно использовать другие способы.
Т.е. скрипт 'topaufslayer', по идее, в каждом дистрибутиве должен быть свой.
В версии PFS-utils 1.0.0 скрипт 'topaufslayer' отсутствует, он перенесён в базу PuppyRus.

Решение проблемы с правами на файлы, как мне кажется, тоже не самое удачное. Но на сегодня другого нет.


Если у кого-то возникнут ещё вопросы по внутреннему устройству PFS-utils - постараюсь ответить подробно.

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 1031
  • Репутация: +15/-0
Re:"Костыли" в PFS-utils
« Ответ #1 : 05 Январь 2014, 20:00:32 »
Спасибо!
Если будут вопросы, буду задавать. Хотя код утилит достаточно маленький, что сильно облегчает понимание.

Насчет losetup - у нас подобное решение тоже используется внутри initrd.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re:"Костыли" в PFS-utils
« Ответ #2 : 05 Январь 2014, 20:41:34 »
Код PFS-utils был написан полностью с нуля
Вы абсолютно в этом уверены? Когда я писал load_sfs то сослался на первоисточник
Код
#idea jcoder24 20080412
#modified 20090222
#DdShurick modified 20100924 for PuppyRus-2, 20120826 for Richy-217, 20121105 for .pfs
#dim-kut added strings 37-55 edition 2
Моноблок 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
« Ответ #3 : 08 Январь 2014, 22:03:04 »
Вы абсолютно в этом уверены? Когда я писал load_sfs то сослался на первоисточник
Копипаста точно нет.
А некоторые идеи мне встречались в разных местах, но первоисточник не знаю.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re:"Костыли" в PFS-utils
« Ответ #4 : 08 Январь 2014, 22:32:10 »
 Первоисточник Слако, jcoder24.
Копипаста нет, подтверждаю.
Моноблок 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

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re:"Костыли" в PFS-utils
« Ответ #5 : 09 Январь 2014, 13:18:07 »
Давайте уберем все кроме gpl и закроем тему авторства
Убирание костылей другими костылями:
Код
[ "`which losetup-FULL`" ] && losetup-FULL=losetup-FULL || losetup-FULL=losetup

Аналогично с busybox (если его нет в системе).
Код
[ "`which busybox`" ] && busybox=busybox
А нужен ли busybox? Просто mount вроде работает и везде есть...