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

Автор Тема: Сохраненка (не .pfs) , changes=EXIT  (Прочитано 37044 раз)

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

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:Шифрованная сохраненка и вообще шифрование
« Ответ #60 : 20 Январь 2016, 22:58:03 »
Написал же - это рецепт для конкретной системы PRA03 1512 middle.
При выполнении этих поправок - работает.

Другие дистрибутивы не смотрел, во всех может быть сделано по-разному.

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:Шифрованная сохраненка и вообще шифрование
« Ответ #61 : 21 Январь 2016, 17:01:16 »
Поэкспериментировал в 1512 game c systemd.
Чтобы changes=EXIT:/mnt/sda2/save/pra-save.dat нормально сохранял изменения при выходе,
в дополнение к правке /etc/rc.local.shutdown так же, как под 1512 middle,
создал директорию /usr/lib/systemd/system-shutdown/
и в ней ссылку на /etc/rc.local.shutdown

live@pra:~$ ls -l /usr/lib/systemd/system-shutdown/
lrwxrwxrwx 1 root root 22 янв 20 23:37 rc.local.shutdown -> /etc/rc.local.shutdown

Получил-таки ошибку с root root /home/live, которой под middle так и не увидел и все гадал, как же oermolaev ее добился.
Короче говоря над этой ошибкой на пару поработали chrome и небольшой косячок в initrd
Там в 267 строке linuxrc есть такое:
Код
for x in `find /memory/changes -name ".wh.*"`; do cp -a --parents $x /var; done
umount /memory/changes; mount -nt tmpfs -o size=$RAMSIZE tmpfs /memory/changes; mv /var/memory/changes/* /memory/changes 2>/dev/null; CHANGES=memory
Все бы ничего, но если .wh.* принадлежит root (а от хрома такое осталось), то все --parents создадутся тоже принадлежащими root - такова уж особенность cp -a --parents.  Обычно эта особенность никак не мешает, но тут специфика слоеных файловых систем - каталоги /home/live/.config/chrome существуют, но на другом слое, поэтому в changes пересоздались при таком копировании уже
под root и перекрыли существующие.  Отсюда вывод - со слоями aufs при помощи cp -a --parents лучше не работать, поскольку могут вылезти неожиданные глюки.

Предлагаю: копирование теней на changes вообще отсюда убрать.  А чтобы они не пропадали в строке 448
Код
mount -no remount,add:1:/memory/images/changes=rr aufs /union
заменить на
Код
mount -no remount,add:1:/memory/images/changes=ro+wh aufs /union

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 34036
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Шифрованная сохраненка и вообще шифрование
« Ответ #62 : 21 Январь 2016, 17:47:22 »
т.е. 576 строку убрать, 448 переделать
Это повлияет только на changes=EXIT ?

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:Шифрованная сохраненка и вообще шифрование
« Ответ #63 : 21 Январь 2016, 18:12:40 »
т.е. 576 строку убрать, 448 переделать
Это повлияет только на changes=EXIT ?
не 576, а 267, где цикл for - весь цикл убрать, он в одной строке.
В следующей 268 строке убрать mv
В 448 заменить =rr на =ro+wh
Вроде бы должно влиять только на changes=EXIT, судя по условным операторам.

Честно говоря, сам еще не пробовал, только вот недавно докопался до этого места.

И еще мне не нравится костыль в dump-session строка 52:
Код
###костыль
for x in `find $MNAME/home/live -name ".wh.*" 2>/dev/null | sed s/.wh.//g`; do echo x2=$x && rm -rf /`dirname $x`/.wh.`basename $x` && touch /$x; done
Не пойму, что он делает-то?  Удаляет тень и тут же ее создает (но уже под root)?
Так что хром, похоже, только тень оставил, а владельца ей поменял этот костыль непонятного назначения.
« Последнее редактирование: 21 Январь 2016, 18:35:46 от ander »

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 34036
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Сохраненка (не .pfs) , changes=EXIT
« Ответ #64 : 22 Январь 2016, 11:25:34 »
По итогу - лучше Вам выложить пропатченный фал - иначе запутаемся
Костыль с touch - похоже какое-то мое творение  ;) Что хотел - уже не помню
Там есть dump-session0 - исходный (из портеуса)
initrd и dump-session в пра сделан на базе Porteus2. Если надо - могу выложить из Porteus2 и Porteus3
По хорошему надо бы ознакомиться как это работает в первоисточнике
« Последнее редактирование: 22 Январь 2016, 11:28:13 от sfs »

Оффлайн paulus

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 1732
  • Репутация: +24/-0
Re:Сохраненка (не .pfs), changes=EXIT
« Ответ #65 : 22 Январь 2016, 14:04:51 »
Что-то не совсем разобрался. У меня changes=pra (это /dev/sdb1 с ext). Но чтобы на выходе сохранялось один раз надо прописать
changes=EXIT:/mnt/sdb1/pra/pra-save.dat или просто changes=EXIT:/pra?

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 34036
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Сохраненка (не .pfs) , changes=EXIT
« Ответ #66 : 22 Январь 2016, 14:20:14 »

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:Сохраненка (не .pfs) , changes=EXIT
« Ответ #67 : 22 Январь 2016, 23:51:46 »
По итогу - лучше Вам выложить пропатченный фал - иначе запутаемся
Костыль с touch - похоже какое-то мое творение  ;) Что хотел - уже не помню
Там есть dump-session0 - исходный (из портеуса)
initrd и dump-session в пра сделан на базе Porteus2. Если надо - могу выложить из Porteus2 и Porteus3
По хорошему надо бы ознакомиться как это работает в первоисточнике
Вот, все что менял.
В dump-session убрал костыль, в rc.local.shutdown добавлен полный путь к dump-session и sync после него, ссылки на rc.local.shutdown сделаны для minirc и для systemd, в initrd в linuxrc убрано копирование теней и изменен режим монтирования в aufs.

В общем-то, изменения минимальные.
Сейчас все это гоняю в 1512 game с шифованной сохраненкой changes=EXIT:/mnt/sda2/save/pra-save.dat, sda2 - ntfs.
Пока глюков не обнаружил.

А насчет ссылки про добавление костыля, там возможно проблема была как раз из-за копирования теней при помощи cp -a --parents  - как только тень копировалась, родительские папки, в том числе /home/live, оказывались принадлежащими root.
Кстати, я раньше неправильно написал, что cp -a --parents портил владельца только если тень принадлежит root,
на самом деле cp -a --parents /a/b/c/d/e/f.txt dest всегда создаст в dest папки /a/b/c/d/e/ принадлежащими тому, кто его запустил, и только f.txt сохранит владельца.  Вообще, я что-то не вижу простого пути скопировать из глубины иерархии один файл вместе с предшествующими каталогами, чтобы каталоги при этом сохранили владельца и время модификации - только заковыристую рекурсивную функцию писать.
Код
rccp(){ # копирование файла со всеми предшествующими подкаталогами: rccp src dst
  [ ! -d "$2" ] && echo "2 аргумент должен быть каталогом" && return
  local dn=$(dirname "$1")
  [ ! -d "$2/$dn" ] && rccp "$dn" "$2"
  echo "$1" |cpio -pmu --quiet "$2"
  # восстановление mtime каталога
  [ "${dn#/}" ] && touch -d "$(ls --full-time -d "$dn" |cut -d' ' -f6-7 )" "$2/$dn"
}
« Последнее редактирование: 29 Март 2016, 17:45:57 от sfs »

Оффлайн paulus

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 1732
  • Репутация: +24/-0
Re:Сохраненка (не .pfs) , changes=EXIT
« Ответ #68 : 23 Январь 2016, 00:51:40 »
Сейчас все это гоняю в 1512 Пока глюков не обнаружил.
Буду пробовать с твоим патчем.

sfs, спб за инфу

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 34036
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:Сохраненка (не .pfs) , changes=EXIT
« Ответ #69 : 23 Январь 2016, 09:28:07 »
В initrd надо было надо было версию (v= ) поменять чтобы не путаться

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:Сохраненка (не .pfs) , changes=EXIT
« Ответ #70 : 23 Январь 2016, 17:21:18 »
В initrd надо было надо было версию (v= ) поменять чтобы не путаться
В этом и не запутаться?  ;D  Нереально.  Хорошо, на будущее учту, а пока это так, на потестить.
Но все же под git бы его загнать было полезно.  Можно было бы снести кучу закомментированного кода.

Обнаружил один глючок в такой конфигурации.
Если стереть файл, который виден из нижних слоев, то он затеняется.  Теперь перегружаемся - тень по EXIT ушла в сохраненку.  Создаем на том же месте новый файл с тем же именем, перегружаемся, файл ушел в сохраненку, лежит рядом со своей тенью, а aufs недоумевает, что же этим хотели сказать, в результате показывает название файла, а доступа не дает.
Полез было править работу с тенями в dump-session, нашел, какое место гадит, поправил, а потом заглянул в dump-session0 - а там уже все правильно сделано.  :)
Так что взял dump-session0, поправил там только путь к сохраненке и добавил IFS=$'\n', а то цикл for спотыкается на путях с пробелами, которые хром очень любит создавать.

Ссылка на рассуждения, как правильно работать с тенями на сохраненке, шесть возможных комбинаций:http://forum.puppyrus.org/index.php/topic,16596.msg109827.html#msg109827

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8637
  • Репутация: +187/-2
  • Старый чайник
Re:Сохраненка (не .pfs) , changes=EXIT
« Ответ #71 : 23 Январь 2016, 18:30:58 »
 У меня сделано так (строки 18 - 27).
Моноблок 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

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:Сохраненка (не .pfs) , changes=EXIT
« Ответ #72 : 24 Январь 2016, 00:51:07 »
Ну, в dump-session в общем-то то же самое немного в других выражениях.

Оффлайн paulus

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 1732
  • Репутация: +24/-0
Re: Сохраненка (не .pfs) , changes=EXIT
« Ответ #73 : 16 Июль 2016, 13:11:43 »
Запускаю pra с флешки (microcd) с changes=EXIT:/pra32 (или EXIT:/%d% на ext) и при выключении ничего не сохраняется :( ЧЯДНТ? C hdd без EXIT, по этому не сразу заметил. Вернее было не до этого, а сейчас как бы надо.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 34036
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re: Сохраненка (не .pfs) , changes=EXIT
« Ответ #74 : 18 Июль 2016, 11:09:03 »
Кто нибудь еще использует EXIT: ?
Не очень понимаю смысл использовать такое, если есть возможность сохраниться в модуль и папку...