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

Автор Тема: Режим "без сохранения" (pfix=nosave)  (Прочитано 52454 раз)

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

Оффлайн Zay

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Режим "без сохранения" (pfix=nosave)
« : 05 Ноябрь 2011, 20:31:57 »
Если загрузить систему с параметром pfix=nosave система проигнорирует Save-файл (как и c pfix=ram), не будет показывать окна настройки при первой загрузке и при выключении не будет предложено сохранить сессию.

Никакие изменения и настройки, сделанные пользователем, не сохранятся.

Если всё же понадобится сохранить сессию - нужно выполнить команду reboot или poweroff с параметром save. Примеры:
Код
reboot save
poweroff save
По сути это реализация того, что хотел получить автор этой темы.

Реализовано в LupuRus Bit (Beta 2).

Скачать патч (для LupuRus Max):
Patch_NoSave: http://www.mediafire.com/?bbiz8o4s5a3p101
MD5: 4f120c5fbc86e0184521d6bd28a5c863
initrd.gz: http://www.mediafire.com/?s0vg1w1gg1k02et
MD5: f16fbffb780edf076458b3232f6ebb2d


Обновлено, см здесь!


В скрипте init (в initrd.gz) добавлен код (расположение кода важно!)

Код
if [ "$pfix" ];then
 for ONEFIX in `echo -n "$pfix" | tr ',' ' '`
 do
  case $ONEFIX in
   ---------
   nosave) PNOSAVE="yes";;
  esac
 done

---------
[ "$PNOSAVE" = "yes" ] && PRAMONLY="yes";

---------
[ "$PNOSAVE" = "yes" ] && echo "yes" > /pup_rw/etc/rc.d/.nosave

---------
[ "$PNOSAVE" = "yes" ] && echo "off" > /pup_new/tmp/firstrun

Скрипт полностью тут.

В скрипте rc.shutdown код:
Код
if [ $PUPMODE -eq 5 ];then
заменён кодом:
Код
if [ $PUPMODE -eq 5 ];then
 [ -f /etc/rc.d/.nosave ] || SAVEMODE="yes"
fi
if [ "$SAVEMODE" = "yes" ];then

В скрипты reboot и poweroff в начале добавлен код:
Код
[ "$1" = "save" ] && [ -f /etc/rc.d/.nosave ] && rm /etc/rc.d/.nosave -f
« Последнее редактирование: 11 Март 2012, 09:43:21 от Zay »

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8502
  • Репутация: +185/-2
  • Старый чайник
Re:Режим "без сохранения" (pfix=nosave)
« Ответ #1 : 05 Ноябрь 2011, 23:20:36 »
 Гораздо удобнее будет проработать вариант с PUPMODE=13 ( используется при загрузке с флеш-носителя ). При этом содержимое pup_rw находится в оперативной памяти и записывается в save-файл ( pup_ro1 ) один раз в полчаса ( по умолчанию, можно отключить совсем ).
Моноблок 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:Режим "без сохранения" (pfix=nosave)
« Ответ #2 : 06 Ноябрь 2011, 11:07:01 »
Тоже сначала подумал про PUPMODE. Но попытавшись сделать обнаружил сложности.

Как отключить сохранение при выключении (при этом чтобы возможность включения одной командой сохранилась)?

Как отключить запись в Save "каждые полчаса" скриптом? (Или есть смысл это отключить совсем?).

И остаётся вопрос с разными скриптами, которые проверяют PUPMODE. Они будут думать, что система загружена как обычно (с Save, изменения будут сохранены). Всякие "изменение размера Save", менеджер загрузки SFS, и т.д. Эти скрипты будут бодро сообщать пользователю, что изменения сохранены, но при этом ничего не сохранится.

ИМХО, пока у варианта с PUPMODE=13 вижу больше минусов, чем у файла-метки.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8502
  • Репутация: +185/-2
  • Старый чайник
Re:Режим "без сохранения" (pfix=nosave)
« Ответ #3 : 06 Ноябрь 2011, 15:09:22 »
ИМХО, пока у варианта с PUPMODE=13 вижу больше минусов, чем у файла-метки.
Огромный плюс в том, что используется, но не изменяется save-файл. Не надо вбивать каждый раз настройки. А загрузиться pfix=ram и не сохранять можно было всегда.
Моноблок 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:Режим "без сохранения" (pfix=nosave)
« Ответ #4 : 06 Ноябрь 2011, 15:53:32 »
Огромный плюс в том, что используется, но не изменяется save-файл.
Согласен. Вижу два пути решения:

1. Перебрать init более основательно, в случае если Save есть - копировать его в память, но потом всё равно использовать PUPMODE=5.

2. Встроить в дистрибутив скрипт, который будет создавать SFS вместо Save-файла, и грузить этот SFS (например так).

Опыта работы с этим мне конечно не хватает...
Возможно ошибаюсь здесь?
вопрос с разными скриптами, которые проверяют PUPMODE
Много ли таких скриптов? Может быть есть смысл новый режим добавить?

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8502
  • Репутация: +185/-2
  • Старый чайник
Re:Режим "без сохранения" (pfix=nosave)
« Ответ #5 : 06 Ноябрь 2011, 16:22:48 »
 Первый вариант интереснее. Второй вариант давно опробован ("фокус ДядиШурика"). Отличие - настройки добавляются в главный sfs. Такой PuppyRus-200_2-Lenovo усановлен на нетбуке у моей внучки.
Моноблок 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:Режим "без сохранения" (pfix=nosave)
« Ответ #6 : 06 Ноябрь 2011, 18:39:03 »
Отличие - настройки добавляются в главный sfs.
Разница существенна.

ИМХО, самый простой вариант - это SFS вместо Save.
Он может называться, например, user_520.sfs и лежать в разделе вместе с базовым SFS.

Плюсы:
При необходимости легко загрузить чистую систему (если изменения записать в SFS - откатить не получится).
Если файл больше не нужен - его легко удалить. Можно сделать и несколько файлов.
Пользовательские данные будут занимать меньше места в RAM (в SFS неплохое сжатие).
Более простая логика (Save - изменяемый файл, SFS - только для чтения).

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10725
  • Репутация: +113/-2
Re:Режим "без сохранения" (pfix=nosave)
« Ответ #7 : 07 Ноябрь 2011, 05:29:35 »
минусы не написали - sfs размером под гигабайт (да есть такие юзеры, не спорьте) будет перепаковываться долго, не каждый готов столько ждать пока комп выключится (я точно не готов).

Текущий sfs размером 80 мб пакуется у меня около 20-30 сек, конечно сжимается в него много, но сам факт....
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн RoDoN

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6181
  • Репутация: +138/-0
    • RoDoN X
Re:Режим "без сохранения" (pfix=nosave)
« Ответ #8 : 07 Ноябрь 2011, 09:24:21 »
минусы не написали - sfs размером под гигабайт (да есть такие юзеры, не спорьте) будет перепаковываться долго
Может быть я что-то не так понял, но
Более простая логика (Save - изменяемый файл, SFS - только для чтения)
т.е. sfs c настройками один раз сделал и не перезаписываешь и не перепаковываешь, а?

Lenovo B590 (i3-3110M, 8 Гб, GeForce 720M)
PRA 16.12 JWM, Runtu 20.04 x64 XFCE

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 32970
  • Репутация: +225/-0
    • PuppyRus-A
Re:Режим "без сохранения" (pfix=nosave)
« Ответ #9 : 07 Ноябрь 2011, 09:50:23 »
user_520.sfs
Тоже об этом думал - смотрю уже написали :) Т.е тема увеличения модульности интересна....
А о чем собственно спор?
Для  user_520.sfs - в s-frugal уже все есть
Единственное - поскольку база будет сверху (ее файлы не изменятся) - надо накладывать патчем
Альтернатива - вырезать из базы в user_520.sfs с обязательной загрузкой (хотя если просто вырезать - наверное все подставится по умолчанию)
Будем это включать в LupuRus-520-?-B2.iso?

Оффлайн Zay

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Режим "без сохранения" (pfix=nosave)
« Ответ #10 : 07 Ноябрь 2011, 11:22:33 »
т.е. sfs c настройками один раз сделал и не перезаписываешь и не перепаковываешь, а?
Всё верно.

Собрал новый initrd.gz с загрузкой user_520.sfs (название можно менять параметром).
По ходу работы переделал и загрузку WM.

Теперь и user* и wm* загружаются поверх базового SFS (костыли с распаковкой в корень не нужны).

Сейчас тестирую, если багов не обнаружится - скоро выложу.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 32970
  • Репутация: +225/-0
    • PuppyRus-A
Re:Режим "без сохранения" (pfix=nosave)
« Ответ #11 : 07 Ноябрь 2011, 12:46:44 »
user* и wm* загружаются поверх базового SFS
круто!
я сначала s-frugal так делал - не получалось
Если у Вас получилось - может сразу сделать не user - а любые .sfs поверх из директории, указаной в параметрах загругки ядра?
т.е тот же automountsfs , только поверх
« Последнее редактирование: 07 Ноябрь 2011, 12:49:19 от sfs »

Оффлайн RoDoN

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6181
  • Репутация: +138/-0
    • RoDoN X
Re:Режим "без сохранения" (pfix=nosave)
« Ответ #12 : 07 Ноябрь 2011, 12:53:38 »
скоро выложу
Ждем, интересно!

Lenovo B590 (i3-3110M, 8 Гб, GeForce 720M)
PRA 16.12 JWM, Runtu 20.04 x64 XFCE

Оффлайн Zay

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1536
  • Репутация: +25/-0
  • Автор темы
Re:Режим "без сохранения" (pfix=nosave)
« Ответ #13 : 08 Ноябрь 2011, 14:01:57 »
Новый initrd.gz (вариант не последний, возможны исправления/доработки):
http://www.mediafire.com/?1tj96dhpbn2rzwp (MD5: 9ef836dc849f63185f1938e2aaff73b6)

Добавлена загрузка пользовательского SFS поверх всех остальных модулей (но ниже Save-файла).
По умолчанию - user_520.sfs, название (user*) можно изменить параметром usersfs=.

Загрузка всех SFS из указанного подкаталога (s-frugal).
По умолчанию отключено. Включается параметром sfsdir=.
Эти модули монтируются ниже wm*.sfs и базового SFS.

С параметром pfix=ram пользовательский SFS (user*) и Save-файл игнорируются.
С параметром pfix=nosave игнорируется только Save-файл, пользовательский SFS подключается.
SFS из подкаталога подключаются всегда, когда указан параметр sfsdir=.

В случаях, когда базовый SFS копируется в RAM, все дополнительно загружаемые SFS также копируются. Это зависит от режима загрузки и параметров pfix=copy/pfix=nocopy.

Обратите внимание! initrd теперь ищет файл lupusave.2fs/3fs (без приставки с названием WM!).
Чтобы подхватить имеющийся Save от M1 или Max нужно его соответственно переименовать.
« Последнее редактирование: 08 Ноябрь 2011, 14:03:43 от Zay »

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 32970
  • Репутация: +225/-0
    • PuppyRus-A
Re:Режим "без сохранения" (pfix=nosave)
« Ответ #14 : 08 Ноябрь 2011, 15:44:23 »
Загрузка всех SFS из указанного подкаталога (s-frugal).
т.е s-frugal уже встроен в initrd 520max?
Круто! +
Насколько это переносимо в "любой" puppy initrd ? (думаю о будущем...)
Изменения можно увидеть diff init init(520max) или структура сложнее?