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

Автор Тема: Автозагрузка модулей при старте системы  (Прочитано 46017 раз)

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
http://forum.puppyrus.org/index.php/topic,12953.msg69726.html#msg69726
Цитата
- проверить код загрузки pfs модулей должны обеспечиваться следующие возможности:
1. По умолчанию из каталога packages должны подключаться пакеты и pfs и sfs при загрузке системы.
2. При заданном значении pfsdir - пакеты pfs подключаются из каталога заданного этим параметром (packages игнорируется)
3. При заданном значении sfsdir - пакеты sfs подключаются из каталога заданного этим параметром.
1. из каталога packages pfs подключаются всегда ниже базы. sfs - нет

При размещении модулей рядом с базой, без *fsdir : pfs подключаются выше и ниже. Выше - если имя модуля с заглавной буквы
Остальное допишу по мере экспериментов. Кто знает - не молчите

Онлайн RoDoN

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6282
  • Репутация: +141/-0
Re:Автозагрузка модулей при старте системы
« Ответ #1 : 24 Ноябрь 2012, 18:27:58 »
Модули sfs ниоткуда автоматически не грузятся, а pfs все выше базы независимо от того большая или маленькая буква в начале имени, исключением у меня оказались только дрова Uvesa-pr218.pfs, нормально заработали только с большой буквой в начале.
Lenovo G500 (i3-3110M, 8 Гб, Intel + Radeon HD 8570)
PRA 16.12 JWM, Runtu 22.04 x64 XFCE

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Автозагрузка модулей при старте системы
« Ответ #2 : 25 Ноябрь 2012, 02:23:40 »
Почитал rc.sysinit
Автозагружаются командой pfsload выше базы обратно алфавиту
.pfs из psubdir и из директории packages или pfsdir (если указано)
(строка 127)
Код
ls -1 "${MNTPT}${PSUBDIR}"/*.pfs "${MNTPT}/${SFSDIR}"/*.pfs 2>/dev/null | sort -r |.
Если надо и .sfs - можно
Код
ls -1 "${MNTPT}${PSUBDIR}"/*.[sp]fs "${MNTPT}/${SFSDIR}"/*.[sp]fs 2>/dev/null | sort -r |.

Кроме того монтируется выше базы save.sfs из psubdir или pfsdir
Регистр имени модуля нигде не учитывается

На мой взгляд неудачно.
Лучше бы:
a. по первой букве имени - выше\ниже, по алфавиту (2 цикла)
Код
 |egrep '^[[:upper:]]'
и lower
b. PSUBDIR и SFSDIR в кучу не мешать
c. убрать двойное монтирование http://forum.puppyrus.org/index.php/topic,13110.msg69999.html#msg69999 Например , вообще убрать автомонтирование из PSUBDIR. Зачем одно и то же из разных папок?

Онлайн RoDoN

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6282
  • Репутация: +141/-0
Re:Автозагрузка модулей при старте системы
« Ответ #3 : 26 Ноябрь 2012, 08:39:55 »
b. PSUBDIR и SFSDIR в кучу не мешать
c. убрать двойное монтирование
Попробовал сделать, может не очень изящно, но работает. Внес изменения в блок строк 107-132 rc.sysinit:
Код
#load_soft Version 06, GPL, DdShurick
#modify 17.10.2012, Zay
PSUBDIR="$(dirname $(echo $PUPSFS | cut -f3 -d ','))"
[ "$PSUBDIR" = "/" ] && PSUBDIR=""
[ "$sfsdir" ] && SFSDIR="$sfsdir"
[ "$pfsdir" ] && PFSDIR="$pfsdir" || PFSDIR=packages
if [ "$SAVE_LAYER" = "" ]; then
  PUP_HOME=/mnt/dev_ro2
  MNTPT=/initrd/mnt/dev_ro2
else
  MNTPT=/initrd/mnt/dev_save
fi
if [ -f "${MNTPT}${PSUBDIR}/save.sfs" ]; then
  mount -o loop "${MNTPT}${PSUBDIR}/save.sfs" /initrd/pup_ro3
  mount -o remount,add:1:/initrd/pup_ro3/ /
  echo "PRECHOICE='no'" >> /etc/rc.d/PUPSTATE
elif [ -f "${MNTPT}/${SFSDIR}/save.sfs" ]; then
  mount -o loop "${MNTPT}/${SFSDIR}/save.sfs" /initrd/pup_ro3
  mount -o remount,add:1:/initrd/pup_ro3/ /
  echo "PRECHOICE='no'" >> /etc/rc.d/PUPSTATE
fi
ls -1 "${MNTPT}${PSUBDIR}"/*.pfs "${MNTPT}/${PFSDIR}"/*.pfs "${MNTPT}/${SFSDIR}"/*.sfs 2>/dev/null | sort -r |
while read SOFT
do
  if [ "$(basename "${SOFT}")" != "${basepfs}" ]; then
  pfsload "${SOFT}"
  [ $? -eq 0 ] && echo "$(basename "${SOFT}")" >>/tmp/permanent_pfs_load.log
  fi
done
Например , вообще убрать автомонтирование из PSUBDIR.
Я против, кладу туда только модуль с драйвером видео и еще пакет test-pfs-2-2.pfs, в результате система всегда работоспособная.

Автозагружаются командой pfsload выше базы обратно алфавиту
А почему не по алфавиту, а обратно?
« Последнее редактирование: 26 Ноябрь 2012, 09:25:43 от RoDoN »
Lenovo G500 (i3-3110M, 8 Гб, Intel + Radeon HD 8570)
PRA 16.12 JWM, Runtu 22.04 x64 XFCE

Оффлайн Pro

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Автозагрузка модулей при старте системы
« Ответ #4 : 26 Ноябрь 2012, 08:43:15 »
Цитата
#load_soft Version 06, GPL, DdShurick
#modify 17.10.2012, Zay
В связи с тем что существующий вариант используется в модификации Zay, окончательный вариант оставляю за ним.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
Re:Автозагрузка модулей при старте системы
« Ответ #5 : 26 Ноябрь 2012, 10:17:32 »
Вопрос как лучше подключать .pfs при загрузке - обсуждается.
У кого есть идеи - предлагайте, только конкретно и чётко. Например так:

Порядок подключения:
  Все .pfs из каталога системы по алфавиту (без учёта регистра).
  Базовый файл .pfs.


Потом обсудим, как лучше предложенное реализовать.

c. убрать двойное монтирование
См тут. http://forum.puppyrus.org/index.php/topic,12727.msg69785.html#msg69785

А почему не по алфавиту, а обратно?
Чтобы порядок слоёв получился по алфавиту (последний по порядку файл подключается в самый верхний слой).

Оффлайн Pro

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Автозагрузка модулей при старте системы
« Ответ #6 : 26 Ноябрь 2012, 10:28:15 »
У кого есть идеи - предлагайте, только конкретно и чётко. Например так:

- проверить код загрузки pfs модулей должны обеспечиваться следующие возможности:
1. По умолчанию из каталога packages должны подключаться пакеты и pfs и sfs при загрузке системы.
2. При заданном значении pfsdir - пакеты pfs подключаются из каталога заданного этим параметром (packages игнорируется)
3. При заданном значении sfsdir - пакеты sfs подключаются из каталога заданного этим параметром.

Для исключения двойного монтирования, сделать игнорирование pupm файла.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Автозагрузка модулей при старте системы
« Ответ #7 : 26 Ноябрь 2012, 10:34:42 »
Предлагаю:
Порядок подключения:
a. init. Базовый файл .pfs. и zdrv
b. rc.sysinit. Все .pfs и .sfs из каталога системы по алфавиту (по регистру выше\ниже базы) с копированием в RAM.
c. rc.sysinit. Все .pfs и .sfs из packages (или pfsdir) по алфавиту (по регистру выше\ниже базы) без RAM.
Таким образом имеем все 4 варианта без длинных строк menu.lst и прочих усложнений

Если делать "всё в RAM' хорошо бы иметь возможность в menu.lst отключать swap
« Последнее редактирование: 26 Ноябрь 2012, 10:40:20 от sfs »

Оффлайн Pro

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Автозагрузка модулей при старте системы
« Ответ #8 : 26 Ноябрь 2012, 10:39:57 »
a. init. Базовый файл .pfs. и zdrv
b. rc.susinit. Все .pfs и .sfs из каталога системы по алфавиту (по регистру выше\ниже базы) с копированием в RAM.
c. rc.susinit. Все .pfs и .sfs из packages (или pfsdir) по алфавиту (по регистру выше\ниже базы) без RAM.
подойдет
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
Re:Автозагрузка модулей при старте системы
« Ответ #9 : 26 Ноябрь 2012, 11:04:41 »
С предложением sfs согласен, но:

Все .pfs и .sfs ... по алфавиту (по регистру выше\ниже базы)
Думаю что вместо регистра всё же лучше использовать расширение (.pfs - выше базы, .sfs - ниже).

Файлы .pfs теоретически более безопасны, т.к. собираются из проверенных пакетов. А SFS - это может быть всё что угодно, в т.ч. из других систем (шансов случайно сломать систему намного больше).

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Автозагрузка модулей при старте системы
« Ответ #10 : 26 Ноябрь 2012, 11:13:18 »
вместо регистра всё же лучше использовать расширение (.pfs - выше базы, .sfs - ниже).
Ну вот- столько бодались за s(p)fs и опять...
Раз уж определили , что pfs это sfs с /etc/packages - давайте этому следовать. Т.е. "называть вещи своими именами"
pfsmerge съест переименованный_pfs.sfs ?
.pfs теоретически более безопасны, т.к. собираются из проверенных пакетов. А SFS - это может быть всё что угодно
Теоретически - да. Но практически можно сделать и наоборот. Т.е. не аргумент
« Последнее редактирование: 26 Ноябрь 2012, 11:15:39 от sfs »

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
Re:Автозагрузка модулей при старте системы
« Ответ #11 : 26 Ноябрь 2012, 11:31:07 »
Можно вообще грузить все модули выше базы, теоретически это будет правильно.

Загрузка ниже базы - это исключительно функция для защиты системы. Если пакет, который подключён выше базы, ломает систему - это плохой пакет.
При использовании нормальных пакетов - возможность штатными средствами (без переименований) подключать при загрузке PFS ниже базы - не нужна (ИМХО).

Но с учётом того, что уже существует много SFS и нужна обратная совместимость - для SFS-файлов такая защита актуальна.

Кроме того, эта логика (PFS выше, SFS ниже) уже используется в системе при подключении файлов в процессе работы.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Автозагрузка модулей при старте системы
« Ответ #12 : 26 Ноябрь 2012, 11:41:01 »
Можно вообще грузить все модули выше базы, теоретически это будет правильно.
C точки зрения модульности - это не правильно. В Байт изменяя последовательность и выше-ниже загрузки модулей удавалось получать разные результаты, не меняя самих модулей

Если есть возможность загружать и .sfs и .pfs и выше и ниже - зачем искусственно урезать функционал?
Если юзер не понимает что делает - систему от него все равно не спасти. Сломал - юзай стандартные конфиги и модули или монолит

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
Re:Автозагрузка модулей при старте системы
« Ответ #13 : 26 Ноябрь 2012, 12:18:12 »
В Байт изменяя последовательность и выше-ниже загрузки модулей удавалось получать разные результаты, не меняя самих модулей
ИМХО - это неправильный подход.
Возможность подключения PFS ниже базы - это всё же костыль. Функция только для тех, кто понимает зачем это нужно.
Если при создании модулей учитывать необходимость подключения выше/ниже - в результате можно получить очень трудноуловимые баги.
К тому же это усложняет понимание пользователем механизма работы системы.

Если есть возможность загружать и .sfs и .pfs и выше и ниже - зачем искусственно урезать функционал?
Возможность подключения PFS ниже базы при загрузке - не вижу смысла (во время работы - да, смысл есть, это уже реализовано в т.ч. из GUI).
Возможность подключения SFS выше базы - желательно, но так чтобы это никогда не происходило случайно (только потому, что название файла начинается с большой буквы).

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re:Автозагрузка модулей при старте системы
« Ответ #14 : 26 Ноябрь 2012, 12:28:36 »
.pfs - выше базы, .sfs - ниже
Вот этого не надо. Лично я для подключения выше базы использую префикс Up.
В связи с тем что существующий вариант используется в модификации Zay, окончательный вариант оставляю за ним.
А ты уверен, что это лучший вариант?
 Кроме того все забыли про bootconfig. Давайте его судьбу тоже решим.
Если юзер не понимает что делает - систему от него все равно не спасти.
Для этого и делается "неубиваемый и неудаляемый" Richy.
Моноблок 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