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

Автор Тема: альтернативная реализация save.sfs в классических puppy  (Прочитано 6970 раз)

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

Оффлайн imago31

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 2835
  • Репутация: +41/-0
  • Автор темы
  • горний арол
Так как я решил для себя уже полностью отказаться от файла сохранения и других вариантов в пользу сохранения в модуль(save.sfs), и пока нет оптимальных вариантов для классических puppy, я решил пока сделать это по своему без какого либо хирургического вмешательства в скрипты системы. Исходя из старых сумасшедших экспериментов, написал скрипт, который делает save.sfs в виде zdrv
модуль работает так, все настройки находятся в отдельной папке, а при загрузке модуля копируются с заменой в нужные места, происходит рестарт иксов, срабатывает все это довольно быстро и автоматически
Прошу помощи, пока кто нибудь не придумает правильный метод save.sfs для puppy
нужно чтобы модуль появлялся возле базы сразу, в моем варианте он появляется в паке root,
  #!/bin/sh
                   #save.sfs for classic puppy    
              #создание дерева директорий и копирование настроек в отдельную папку
mkdir /zz
mkdir /zz/opt
mkdir /zz/opt/ss
mkdir /zz/etc
mkdir /zz/etc/init.d
cp -a /root /zz/opt/ss
cp -a /etc /zz/opt/ss

               #создание исполняемого скрипта boot
echo "#!/bin/sh" >  /zz/etc/init.d/boot              
echo rm -R /usr/sbin/shutdownconfig >> /zz/etc/init.d/boot
echo cp -a /opt/ss/* / >>/zz/etc/init.d/boot
echo rm -R /opt/ss >>/zz/etc/init.d/boot
echo restartwm >>/zz/etc/init.d/boot

                #назначение прав исполнения скрипта boot
chmod +x /zz/etc/init.d/boot

                #сборка модуля в виде zdrv            
mksquashfs /zz zdrv_slacko_5.4.sfs
gtkdialog-splash -text МОДУЛЬ_СОХРАНЕНИЯ_ГОТОВ -timeout 5 fontsize x-large

 краткий видеоролик загрузки http://youtu.be/79nmQd2aIBE
« Последнее редактирование: 09 Январь 2014, 00:55:45 от imago31 »
Врач спасает человека, ветеринар - человечество
 все эксперименты на dual core 2x3.1 GHz/ram-3Gb/gt 440 1gb/WCD 80gb IDE/Samsung 80gb sata/3 флешки с зоопарком линуксов.
  Для работы и игр: Windows 10 снес, поставил 7
  Для души, для скорости и всего остального: Linux(pra, puppy, porteus, ubuntu-подобные)
 
 игровые модули
 программные модули

Оффлайн RoDoN

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6283
  • Репутация: +141/-0
нужно чтобы модуль появлялся возле базы сразу, в моем варианте он появляется в паке root
Попробуй добавить так:
Код
PUPDIR=`cat /proc/cmdline |awk -F dir= '{print $2}' |awk '{print $1}'`
mv zdrv_slacko_5.4.sfs /mnt/home/$PUPDIR/zdrv_slacko_5.4.sfs
или изменить строчку сборки так:
Код
                #сборка модуля в виде zdrv
PUPDIR=`cat /proc/cmdline |awk -F dir= '{print $2}' |awk '{print $1}'`       
mksquashfs /zz /mnt/home/$PUPDIR/zdrv_slacko_5.4.sfs
Lenovo G500 (i3-3110M, 8 Гб, Intel + Radeon HD 8570)
PRA 16.12 JWM, Runtu 22.04 x64 XFCE

Оффлайн imago31

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 2835
  • Репутация: +41/-0
  • Автор темы
  • горний арол
нет, так не работает, модуль не собирается, дело в том что в слако нету /mnt/home
Врач спасает человека, ветеринар - человечество
 все эксперименты на dual core 2x3.1 GHz/ram-3Gb/gt 440 1gb/WCD 80gb IDE/Samsung 80gb sata/3 флешки с зоопарком линуксов.
  Для работы и игр: Windows 10 снес, поставил 7
  Для души, для скорости и всего остального: Linux(pra, puppy, porteus, ubuntu-подобные)
 
 игровые модули
 программные модули

Оффлайн imago31

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 2835
  • Репутация: +41/-0
  • Автор темы
  • горний арол
вот небольшой ролик загрузки и подключения save.sfs на толстом слако  http://youtu.be/79nmQd2aIBE
« Последнее редактирование: 08 Январь 2014, 20:07:27 от imago31 »
Врач спасает человека, ветеринар - человечество
 все эксперименты на dual core 2x3.1 GHz/ram-3Gb/gt 440 1gb/WCD 80gb IDE/Samsung 80gb sata/3 флешки с зоопарком линуксов.
  Для работы и игр: Windows 10 снес, поставил 7
  Для души, для скорости и всего остального: Linux(pra, puppy, porteus, ubuntu-подобные)
 
 игровые модули
 программные модули

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
mksavesfs из Richy
Код
#!/bin/sh
#070713 DdShurick v002 GPL
. /etc/DISTRO_SPECS
mkdir -p /tmp/savesfs-root
OLDSAVE=$(losetup | grep save) && OLDSAVE=$(mount | grep "$(echo "$OLDSAVE" | cut -f1 -d':') " | cut -f3 -d' ')
[ "$(echo "$OLDSAVE" | grep pup_ro)" = "" ] || cp -a ${OLDSAVE}/* /tmp/savesfs-root/
cp -a $(ls -d /initrd/pup_rw/[!dimstv]*) /tmp/savesfs-root/
echo false > /tmp/savesfs-root/etc/.XLOADED
mksquashfs /tmp/savesfs-root/ ${DISTRO_FILE_PREFIX}_save.sfs -comp xz
mv -f ${DISTRO_FILE_PREFIX}_save.sfs /initrd$(dirname $(cat /initrd/tmp/PUPPYFILES))/
Моноблок 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

Оффлайн imago31

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 2835
  • Репутация: +41/-0
  • Автор темы
  • горний арол
ну в ричи есть автозагрузка выше базы и наверное в самой системе многое изменено что ведет к подключению save.sfs, а в классическом пуппи такого нет, да и опыта такого нет что бы изменить скрипты системы на автозагрузку save.sfs,
вот и пришлось прибегнуть к более простому, но костыльному методу без необходимости изменять системные скрипты
  как работает мой скрипт:
1 создаются необходимые дирекитории
2 копируются настройки(root, etc) в отдельную папку
3 создается скрипт в init.d, который при загрузке обратно копирует настройки в нужные директории и делает рестарт иксов
4 и все это собирается в модуль zdrv
Врач спасает человека, ветеринар - человечество
 все эксперименты на dual core 2x3.1 GHz/ram-3Gb/gt 440 1gb/WCD 80gb IDE/Samsung 80gb sata/3 флешки с зоопарком линуксов.
  Для работы и игр: Windows 10 снес, поставил 7
  Для души, для скорости и всего остального: Linux(pra, puppy, porteus, ubuntu-подобные)
 
 игровые модули
 программные модули

Оффлайн Zay

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 1536
  • Репутация: +25/-0
Насколько я помню, сделать ZDRV выше базы можно правкой одной строки в init (там где монтируется AUFS).
Подобный функционал реализован в init для LupuRus Bit. Отличий от Puppy там не так много, как в PR-13.XX.

Оффлайн imago31

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 2835
  • Репутация: +41/-0
  • Автор темы
  • горний арол
init, это тот что  находится в initrd.gz? а что именно нужно поправить?
Врач спасает человека, ветеринар - человечество
 все эксперименты на dual core 2x3.1 GHz/ram-3Gb/gt 440 1gb/WCD 80gb IDE/Samsung 80gb sata/3 флешки с зоопарком линуксов.
  Для работы и игр: Windows 10 снес, поставил 7
  Для души, для скорости и всего остального: Linux(pra, puppy, porteus, ubuntu-подобные)
 
 игровые модули
 программные модули

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Насколько я помню, сделать ZDRV выше базы можно правкой одной строки в init (там где монтируется AUFS).
Нет, в буржуйском инит так просто не получится.
Моноблок 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
init, это тот что  находится в initrd.gz? а что именно нужно поправить?
Да, скрипт init внутри initrd.gz.
Конкретно не подскажу т.к. не помню, см. строку с mount -t aufs.

Нет, в буржуйском инит так просто не получится.
Разве нельзя в строке, где формируется AUFS, просто поменять местами базу и zdrv?
Просто я забыл уже, давно делал...

Оффлайн imago31

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 2835
  • Репутация: +41/-0
  • Автор темы
  • горний арол
то есть получается zdrv загрузится выше базы и все настройки подключаться?! Это классный метод! Надо бы разобраться
Врач спасает человека, ветеринар - человечество
 все эксперименты на dual core 2x3.1 GHz/ram-3Gb/gt 440 1gb/WCD 80gb IDE/Samsung 80gb sata/3 флешки с зоопарком линуксов.
  Для работы и игр: Windows 10 снес, поставил 7
  Для души, для скорости и всего остального: Linux(pra, puppy, porteus, ubuntu-подобные)
 
 игровые модули
 программные модули

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Разве нельзя в строке, где формируется AUFS, просто поменять местами базу и zdrv?
Объясняю. Строка создания aufs
Код
mount -t aufs -o udba=reval,diropq=w,dirs=${UMNTMAIN}${ZLAYER}${UMNTRO} unionfs /pup_new
где переменная ${UMNTMAIN} в которой перечисляется всё, что выше базы и сама база, жёстко задаётся выбором по $PUPMODE
Код
 3)  CREATETMPFS="/pup_rw";CREATEPDEV1="/pup_ro1"
     OLDFILESMNTPT="/pup_ro1";NEWFILESMNTPT="/pup_ro1";UMNTMAIN="/pup_rw=rw:/pup_ro1=ro+wh";;
 5)  CREATETMPFS="/pup_rw";CREATEPUPXXXSFS="/pup_ro2"
     OLDFILESMNTPT="";NEWFILESMNTPT="/pup_ro2";UMNTMAIN="/pup_rw=rw:/pup_ro2=ro";;
 6)  CREATEPDEV1="/pup_rw";CREATEPUPXXXSFS="/pup_ro2"
     OLDFILESMNTPT="/pup_rw";NEWFILESMNTPT="/pup_ro2";UMNTMAIN="/pup_rw=rw:/pup_ro2=ro";;
 7)  CREATETMPFS="/pup_rw";CREATEPDEV1="/pup_ro1";CREATEPUPXXXSFS="/pup_ro2"
     OLDFILESMNTPT="/pup_ro1";NEWFILESMNTPT="/pup_ro2";UMNTMAIN="/pup_rw=rw:/pup_ro1=ro+wh:/pup_ro2=ro";;
 12) CREATEPUPSAVE2FS="/pup_rw";CREATEPUPXXXSFS="/pup_ro2"
     OLDFILESMNTPT="/pup_rw";NEWFILESMNTPT="/pup_ro2";UMNTMAIN="/pup_rw=rw:/pup_ro2=ro";;
 13) CREATETMPFS="/pup_rw";CREATEPUPSAVE2FS="/pup_ro1";CREATEPUPXXXSFS="/pup_ro2"
     OLDFILESMNTPT="/pup_ro1";NEWFILESMNTPT="/pup_ro2";UMNTMAIN="/pup_rw=rw:/pup_ro1=ro+wh:/pup_ro2=ro";;
 77) CREATETMPFS="/pup_rw";CREATEFOLDERS="/pup_ro1";CREATEPUPXXXSFS="/pup_ro2"
     OLDFILESMNTPT="/pup_ro1";NEWFILESMNTPT="/pup_ro2";UMNTMAIN="/pup_rw=rw:/pup_ro1=ro+wh:/pup_ro2=ro";;
за подключение zdrv отвечает
Код
ZLAYER=':/pup_z=ro' 
Просто поменять местами переменные не получится. Будет кернел паник.

Моноблок 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
Ага, вспомнил. Сталкивался с этим, когда модифицировал Init для LupuRus Bit.
Действительно, там немного сложнее, но при желании всё решаемо.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33974
  • Репутация: +231/-0
    • PuppyRus-A
Насколько я помню, сделать ZDRV выше базы можно правкой одной строки в init (там где монтируется AUFS).
Подобный функционал реализован в init для LupuRus Bit. Отличий от Puppy там не так много, как в PR-13.XX.
Раз base.sfs получается выше (это точно?, мне помнится наоборот) zdrv - может совсем просто - переименовать их?

Оффлайн valentin

  • Ветеран
  • *****
  • Сообщений: 562
  • Репутация: +20/-0

Раз base.sfs получается выше (это точно?, мне помнится наоборот) zdrv - может совсем просто - переименовать их?
Ага, заодно и пол init-а перепишем   :) - слишком много переменных опираются на имена файлов
Код
PUPSFSDEV="`echo -n "$PUPSFS" | cut -f 1 -d ','`"
 PUPSFSFS="`echo -n "$PUPSFS" | cut -f 2 -d ','`"
 PUPSFSFILE="`echo -n "$PUPSFS" | cut -f 3 -d ','`"
 basepupsfs="`basename $PUPSFSFILE`"
Система:  Athlon XP 2500+  512RAM  Radeon9600