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

Автор Тема: Скрипт по автоматическому переносу "горячих модулей" в базу (modules)  (Прочитано 23470 раз)

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

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
Скрипт делал в первую очередь для себя, может воспользуюсь раз в полгода - зато удобно. Ещё хорошо бы вести историю перемещённых модулей, и в случае чего - отменять изменения (удалять скопированные модули из папки modules). Вообщем для меня это было бы очень удобно. Вообщем куча идей, как сделать работу с пра комфортней  :) Вот вам пример - в груб4досе пролезаешь через три уровня меню, прежде чем загрузить систему, а можно сделать скрипт, который вытаскивает параметры загрзуки ядра и делает первый пункт меню в груб4досе с этими параметрами - то есть определился один раз с какими параметрами грузишь систему и тыкаешь первый пункт в меню загрузки (а я сижу за одним компом и изредка возникает необходимость загрузиться на другом компьютере). Вообщем идей полно  :)
UPD: обозвал скрипт "copy_cold_modules" и положил в домашнюю папку - пусть будет под рукой  :)
« Последнее редактирование: 05 Июнь 2020, 13:23:52 от Neyel »

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33989
  • Репутация: +231/-0
    • PuppyRus-A
груб4досе пролезаешь через три уровня меню, прежде чем загрузить систему, а можно сделать скрипт, который вытаскивает параметры загрзуки ядра и делает первый пункт меню в груб4досе с этими параметрами - то есть определился один раз с какими параметрами грузишь систему и тыкаешь первый пункт в меню загрузки
http://forum.puppyrus.org/index.php?topic=22772.msg168062#msg168062
Как видите интереса ноль. Соответственно писать подобное и не хочется
 
идей полно
И энтузиазм пока есть :) Не растеряйте...

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
писать подобное и не хочется
Я бы для себя сделал. А так пусть юзеры решают - нужно это им или нет  :)

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8636
  • Репутация: +187/-2
  • Старый чайник
И энтузиазм пока есть :) Не растеряйте...
У меня тоже был, пока тебя не было.
"/mnt/home/`egrep -o "(^| )dir=[^ ]+" /proc/cmdline | cut -d= -f2`"
А что, /etc/initvars, стандарт на который мы совместно с MagOS утверждали уже не??
Вот ещё вариант, не прибитый к /mnt/home:
Код
basepath=$(busybox losetup -a|awk '/base/ {print $3}'|sed 's/base.*//'|sort -u)
Моноблок 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

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
А что, /etc/initvars, стандарт на который мы совместно с MagOS утверждали уже не??
Вот ещё вариант, не прибитый к /mnt/home:
Ваши варианты в LFA не работают:
Код
live@pra6408:~$ busybox losetup -a|awk '/base/ {print $3}'|sed 's/base.*//'|sort -u
losetup: invalid option -- a
BusyBox v1.21.1 (2015-02-08 23:47:00 UTC) multi-call binary.

Usage: losetup [-r] [-o OFS] LOOPDEV FILE - associate loop devices
losetup -d LOOPDEV - disassociate
losetup [-f] - show

-o OFS Start OFS bytes into FILE
-r Read-only
-f Show first free loop device

live@pra6408:~$ losetup -a|awk '/base/ {print $3}'|sed 's/base.*//'|sort -u
live@pra6408:~$ cat /etc/initvars
cat: /etc/initvars: Нет такого файла или каталога
live@pra6408:~$
Пока буду думать над скриптом, который делает дефолтный вариант загрузки в груб4досе :)

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8636
  • Репутация: +187/-2
  • Старый чайник
BusyBox v1.21.1
Старый busybox. Можно использовать бинарный losetup, но там отличается выхлоп.
Код
# ./losetup -a
/dev/loop1: [2049]:82031 (/mnt/sda1/BB_64/base/Richy64F-save.xzm)
..............
Моноблок 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

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
/mnt/sda1/BB_64/base/Richy64F-save.xzm)
Если при загрузке указать параметр copy2ram, то losetup будет ссылаться на память, а не на устройство:
Код
live@pra6408:~$ losetup -a
/dev/loop1: [0015]:155 (/mnt/live/memory/copy2ram/001-a-1801-sf18.pfs)
...
То есть вариант с /mnt/home/ - то, что нужно :)

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8636
  • Репутация: +187/-2
  • Старый чайник
То есть вариант с /mnt/home/ - то, что нужно
Правильный вариант - /etc/initvars
Код
# cat /etc/initvars 
PDEV='sda1'
PDIR='BB_64'
DISTRO_FILE_PREFIX='Richy64F'
DEVHOME='/dev/sda3'
"egrep -o "(^| )dir=[^ ]+" /proc/cmdline | cut -d= -f2" тоже не вариант, ибо подразумевает присутствие параметра "dir" в /proc/cmdline, а его может и не быть. /mnt/home тоже далеко не везде, у меня например нет.

Специально перезагрузился без параметра dir, "egrep -o "(^| )dir=[^ ]+" /proc/cmdline | cut -d= -f2" на выходе пусто, а в /etc/initvars - PDIR='BB_64'
Вот так-то
« Последнее редактирование: 06 Июнь 2020, 09:29:10 от DdShurick »
Моноблок 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

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
Правильный вариант - /etc/initvars
К сожалению, этот файл в LFA отстуствует, но есть /var/log/porteus-livedbg, где присустствуют следующие строки:
Код
...
# Модули дистрибутива найдены в:
/mnt/sdb4/lf01
...

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8636
  • Репутация: +187/-2
  • Старый чайник
К сожалению, этот файл в LFA отстуствует
Что говорит о нарушении принятых стандартов. Ау, sfs!
Моноблок 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

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
Вопрос к sfs. При завершении работы мы видим две (помимо прочего) кнопки - "Перезагрузка" и "Выключение". Я хотел бы повесить на них скрипт (по переносу горячих модулей). То есть с вопросом "Обнаружены модули, подключенные на горячую. Перенести их в modules? и далее скрипт copy_cold_modules, а после передавать управление стандартным скриптам пра, которые отвечают за перезагрзку или завершение работы. Подскажите что/где копать, какие скрипты подправить? Вообщем получилось бы мега-удобно  :)

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5336
  • Репутация: +139/-1
/usr/local/bin/sfs-shutdown с переходом на основной скрипт /usr/local/bin/sfs-shutdown-f

Посмотреть содержимое основного скрипта leafpad `which sfs-shutdown-f`

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
Нет, не так, сорри. При выборе Пуск->Завершить сеанс всплывает окно "Обнаружены горячие модули" и открывается свёрнутым скрипт copy_cold_modules и желательно, чтобы он "мигал" на панели задач. Если его не трогать - то ничего не происходит.
И тут появляется вопрос - в скрипте за гуи отвечает ntf - 1)как запустить его свёрнутым и 2)как заставит его мигать на панели задач.
Вообщем так было бы вообще супер  :)
upd То есть при выборе "Завершить сеанс" параллельно запускается два процесса - основной и copy_cold_modules. Как запускать процессы параллельно или как запусттить в скрипте программу и не дожидаясь её рузультатов передать управление дальше?
Вообщем такие вопросы  :)
« Последнее редактирование: 06 Июнь 2020, 14:20:23 от Neyel »

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
А вообщем понесло меня  :D Оставлю всё как есть, фиг с ним  :D

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
  • Автор темы
Отредактировал шапку