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

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

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34036
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Автозагрузка модулей при старте системы
« Ответ #60 : 04 Декабрь 2012, 12:31:32 »
Этот блок кода я передрал у Дяди Шурика. Видимо, это неубиваемо-неудаляемая сохраненка. Я не знаю как правильно это использовать и поэтому не использую.

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
Re:Автозагрузка модулей при старте системы
« Ответ #61 : 04 Декабрь 2012, 12:58:07 »
Этот блок кода я передрал у Дяди Шурика. Видимо, это неубиваемо-неудаляемая сохраненка. Я не знаю как правильно это использовать и поэтому не использую.
Тогда наверное лучше это убрать/переделать (если Дядя Шурик не разъяснит подробнее принцип).

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34036
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Автозагрузка модулей при старте системы
« Ответ #62 : 04 Декабрь 2012, 13:42:22 »
В PuppyRus-base-12.12.iso первоначальный вариант. Вроде, Ваш. Там этот код тоже есть

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8637
  • Репутация: +187/-2
  • Старый чайник
Re:Автозагрузка модулей при старте системы
« Ответ #63 : 04 Декабрь 2012, 13:46:47 »
По идее этот код должен быть в init.
Должен. Но не получается. Ума не хватает. При попытке монтировать каталог до chroot вылетает kernel panic. Из rc.sysinit монтирует нормально, :add:0: монтирует каталог в верхний слой, выше сохранёнки и данные сохраняются в каталоге. Но т. к. PUPMODE=5 при выключении ошибочно пишет "сессия не сохранена".
Моноблок 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:Автозагрузка модулей при старте системы
« Ответ #64 : 04 Декабрь 2012, 14:27:51 »
Теперь более или менее понятно. При таком варианте проблемы были очень вероятны...
Но это уже не совсем в тему загрузки софта.

При попытке монтировать каталог до chroot вылетает kernel panic.
Вылетает если монтировать каталог вместо сохранёнки (в той же части init) ?

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8637
  • Репутация: +187/-2
  • Старый чайник
Re:Автозагрузка модулей при старте системы
« Ответ #65 : 04 Декабрь 2012, 17:54:41 »
Вылетает если монтировать каталог вместо сохранёнки (в той же части init) ?
И вместо, и вместе.
Моноблок 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

Оффлайн Pro

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Автозагрузка модулей при старте системы
« Ответ #66 : 05 Декабрь 2012, 01:58:33 »
вопросы userfs давайте позже разберем, хотелось бы уже внести код в rc.sysinit для дальнейшего тестирования
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8637
  • Репутация: +187/-2
  • Старый чайник
Re:Автозагрузка модулей при старте системы
« Ответ #67 : 05 Декабрь 2012, 09:19:10 »
 Попробую модифицировать bootmanager, есть кое какие мысли.
Моноблок 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:Автозагрузка модулей при старте системы
« Ответ #68 : 05 Декабрь 2012, 12:08:52 »
Поэкспериментировал с кодом, вот что получилось:
Код
#########################LOADING SOFT##########################
# Modify: Zay (05.12.2012).

# Create symlinks:
basepfs="`basename "$(echo ${PUPSFS} | cut -d ',' -f3)"`"
ln -s "/initrd/pup_ro2" "/mnt/.${basepfs}"
echo "${basepfs}" >/tmp/permanent_pfs_load.log
zdrvpfs="`basename "$(echo ${ZDRV} | cut -d ',' -f3)"`"
ln -s "/initrd/pup_z" "/mnt/.${zdrvpfs}"
echo "${zdrvpfs}" >>/tmp/permanent_pfs_load.log

# Check vars, mount:
PSUBDIR=$(dirname $(echo $PUPSFS | cut -f3 -d ','))
[ "$PSUBDIR" = "/" ] && PSUBDIR=""
[ "$pfsdir" ] && PFSDIR="$pfsdir" || PFSDIR=packages
MNTPT="$(mount | grep '/initrd/mnt/dev'| cut -f3 -d' ')"
[ $PDEV1 ] || PDEV1=$(echo $PUPSFS | cut -f1 -d ',')
if [ "$MNTPT" = "" ]; then
 busybox mount /dev/${PDEV1} /initrd/mnt/dev_ro2
 MNTPT=/initrd/mnt/dev_ro2
fi
[ "$SAVE_LAYER" = "" ] && PUP_HOME=/mnt/dev_ro2
[ $PUPMODE -ne 13 ] && aufslayer=1 || aufslayer=2

# Loading "userfs.sfs":
if [ "$(echo "$pfix" | grep -F "ram")" = "" ]; then
 if [ -f "${MNTPT}${PSUBDIR}/userfs.sfs" ]; then
  busybox mount -o loop "${MNTPT}${PSUBDIR}/userfs.sfs" /initrd/pup_ro3
  if [ $? -eq 0 ]; then
   busybox mount -o remount,add:${aufslayer}:/initrd/pup_ro3/ /
   if [ $? -eq 0 ]; then
    echo "PRECHOICE='no'" >>/etc/rc.d/PUPSTATE
    ln -s "/initrd/pup_ro3" "/mnt/.userfs.sfs"
    aufslayer=$(expr ${aufslayer} + 1)
   else
    busybox umount -d /initrd/pup_ro3
   fi
  fi
 fi
fi

echo ${aufslayer} >/tmp/.topaufslayer

# Loading PFS and SFS:
if [ "$(echo "$pfix" | grep -F "nosoft")" = "" ]; then

 echo "LOADING PFS & SFS"
 echo -n "Подключение PFS и SFS..." >/dev/console

 ls -1 "${MNTPT}${PSUBDIR}/"*.[ps]fs 2>/dev/null | sort -r |
  while read FSFILE
  do
   SOFT="$(realpath "${FSFILE}")"
   baseFSFILE="$(basename "${FSFILE}")"
   baseSOFT="$(basename "${SOFT}")"
   #if [ "$(echo "${baseFSFILE}" | egrep '^[[:lower:]]')" = "" ]; then
   # pfsramload -l "${SOFT}"
   #else
   # pfsramload -u "${SOFT}"
   #fi
   if [ "$(echo "${baseFSFILE}" | grep -E '^[D|d][-|_].*')" != "" ]; then
    pfsramload -l "${SOFT}"
   else
    if [ "$(echo "${baseFSFILE}" | grep -E '^[U|u][-|_].*')" != "" ]; then
     pfsramload -u "${SOFT}"
    else
     pfsramload "${SOFT}"
    fi
   fi
   [ $? -eq 0 ] && echo "${baseSOFT}" >>/tmp/permanent_pfs_load.log
  done
 
 ls -1 "${MNTPT}/${PFSDIR}/"*.[ps]fs 2>/dev/null | sort -r |
  while read FSFILE
  do
   SOFT="$(realpath "${FSFILE}")"
   baseFSFILE="$(basename "${FSFILE}")"
   baseSOFT="$(basename "${SOFT}")"
   #if [ "$(echo "${baseFSFILE}" | egrep '^[[:lower:]]')" = "" ]; then
   # pfsramload -l "${SOFT}"
   #else
   # pfsramload -u "${SOFT}"
   #fi
   if [ "$(echo "${baseFSFILE}" | grep -E '^[D|d][-|_].*')" != "" ]; then
    pfsload -l -n "${SOFT}"
   else
    if [ "$(echo "${baseFSFILE}" | grep -E '^[U|u][-|_].*')" != "" ]; then
     pfsload -u -n "${SOFT}"
    else
     pfsload -n "${SOFT}"
    fi
   fi
   [ $? -eq 0 ] && echo "${baseSOFT}" >>/tmp/permanent_pfs_load.log
  done
 
 status_func 0
 
fi

Код подключения каталога userfs пока убран.

Метод определения куда подключать файлы (выше/ниже) изменён.
Все PFS по умолчанию подключаются в верхний слой, чтобы подключить в нижний - нужно добавить к названию префикс d- (или D_).
Все SFS по умолчанию подключаются в нижний слой, чтобы подключить в верхний - нужно добавить к названию префикс u- (или U_).
Старый вариант (с регистром) в коде есть, но закомментирован.

Для корректной работы с userfs.sfs требуются некоторые изменения в скриптах PFS, скоро выложу обновление в соотв. теме.

Во вложении файл rc.sysinit c тем же кодом.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34036
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Автозагрузка модулей при старте системы
« Ответ #69 : 05 Декабрь 2012, 12:50:19 »
userfs.sfs - так как у Вас по сохраненке и т.п. - все ок?
Больщие, маленькие - неудобно. D U еще хуже. Может 4 дирректории?. Хорошо бы еще ключ добавить по которому не зависимо от размещения - все через RAM
« Последнее редактирование: 05 Декабрь 2012, 12:52:11 от sfs »

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
Re:Автозагрузка модулей при старте системы
« Ответ #70 : 05 Декабрь 2012, 13:08:12 »
userfs.sfs - так как у Вас по сохраненке и т.п. - все ок?
Если речь про эту проблему - то да, после обновления topaufslayer всё должно быть нормально.

Больщие, маленькие - неудобно. D U еще хуже.
А чем U и D хуже? По крайней мере "ложных срабатываний" не будет (случайно такое в названии не появится).
Регистр префиксов может быть любым, d- D- d_ D_, также и с U (например в ISO могут быть проблемы с регистром).
Есть ещё варианты решения? 4 каталога - ИМХО перегиб...

Хорошо бы еще ключ добавить по которому не зависимо от размещения - все через RAM
Можно это привязать к pfix=copy.
А при pfix=nocopy - наоборот грузить всё без RAM (кстати, pfix=nocopy на загрузку базы сейчас влияет?).

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34036
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Автозагрузка модулей при старте системы
« Ответ #71 : 05 Декабрь 2012, 13:53:54 »
чем U и D хуже?
ищу ^firefox , а он d-firefox  :'(
Есть ещё варианты решения?
sfrugal
Дядя Шурик - через bootconfig делает - на это у меня большие надежды
Хорошо бы еще ключ добавить по которому не зависимо от размещения - все через RAM
Можно это привязать к pfix=copy.
А при pfix=nocopy
Это стандартные ключи для базы - лучше с ними в кучу не мешать
(кстати, pfix=nocopy на загрузку базы сейчас влияет?).
Да. Похоже, Pro включил мои правки в init. Если так - хорошо бы чтоб Вы проверили...

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
Re:Автозагрузка модулей при старте системы
« Ответ #72 : 05 Декабрь 2012, 15:22:54 »
Это стандартные ключи для базы - лучше с ними в кучу не мешать
Вообще это было бы логично. Если указан параметр pfix=copy, то пользователь ждёт что всё будет в RAM, так и надо сделать. А если указывается pfix=nocopy, значит пользователю нужно всё НЕ в RAM (мало памяти или по другой причине).

К этому можно добавить дополнительные ключи только для PFS/SFS.

ищу ^firefox , а он d-firefox
"Firefox" тоже не найдёт (если регистр учитывается).
Кроме того, не так уж много модулей можно подключать, так что не должно быть проблемы поиска. А название встроенных пакетов не связано с названием PFS-файлов (файл можно назвать "d-file.pfs", но внутри всё равно будет пакет "firefox-17.0.1", например).

Оффлайн Pro

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:Автозагрузка модулей при старте системы
« Ответ #73 : 05 Декабрь 2012, 15:23:36 »
код поставлен в систему. всем спасибо.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34036
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Автозагрузка модулей при старте системы
« Ответ #74 : 05 Декабрь 2012, 17:39:22 »
По итогу получилось, что userfs.sfs в ram не загрузить  :'(
И грузится он, похоже, не в самый верхний слой. Так задумано?
« Последнее редактирование: 05 Декабрь 2012, 17:48:31 от sfs »