Bug 17741

Summary: Не происходит восстановления образа памяти после перехода в suspend2disk
Product: Branch 4.1 Reporter: Лаврущенко Александр <kpykcb>
Component: suspendAssignee: Nobody's working on this, feel free to take it <nobody>
Status: CLOSED WONTFIX QA Contact: qa-4.1 <qa-4.1>
Severity: blocker    
Priority: P2    
Version: unspecified   
Hardware: x86   
OS: Linux   
Attachments:
Description Flags
логи, грепы логов, инфо о системе, необходимые конфиги none

Description Лаврущенко Александр 2008-10-30 17:14:44 MSK
Created attachment 3029 [details]
логи, грепы логов, инфо о системе, необходимые конфиги

Ноутбук ACER TravelMate 4720 (Linux предустановлен). Винчестер Hitachi, остальное железо Intel, кроме наверное памяти, тачпада, экрана, кард-ридера dvd-rw. 

Переход в suspend2disk происходит нормально.  Однако после включения системы восстановления образа памяти не происходит. В логаг сообщения не остаётся, но выглядит оно ~ как resume image not found:
kinit: name_to_dev_t(/dev/sda6) = dev(8,6)
kinit: trying to resume from /dev/sda6
kinit: No resume image, doing normal boot...
И дальше загрузка продолжается как обычный старт системы. swap не активируется.
Причём, если отменить запуск очистки образов hibernate-cleanup, то можно запустить:
/lib/mkinitrd/klibc/bin/resume /dev/sda6
и появляется индикатор выполнения восстановления образа.
Я пытался переделывать скрипты initramfs, результата не вышло, но есть нюанс использования
правил udev которые отсутствуют в системе напрочь:
/etc/udev/rules.d/99-root.rules
/etc/udev/rules.d/99-resume.rules

До недавнего перехода на ALTLinux пользовался Debian Lenny, где подобной проблемы не возникало вообще, начал использовать ноутбук с 2.6.22(точнее 2.6.18, сначала был etch, потом обновился).

Вся информация которая показалась мне важно в архиве.
Comment 1 Sergey Vlasov 2008-10-30 18:29:03 MSK
Как именно вы запускаете suspend2disk?

Попробуйте удалить пакет suspend, или хотя бы закомментировать строку

  TryMethod ususpend-disk.conf

в /etc/hibernate/disk.conf (если suspend2disk запускается через hibernate).

Файлы 99-root.rules, 99-resume.rules не нужно искать в системе - они создаются только в initramfs в процессе загрузки, и в дальнейшем уничтожаются вместе с остальным содержимым initramfs, загруженным в память. Кроме того, эти файлы создаются только при использовании root=LABEL=... или resume=LABEL=...; при использовании других форм задания устройств (в том числе UUID) дополнительные файлы не создаются даже в initramfs.
Comment 2 Лаврущенко Александр 2008-10-30 21:55:46 MSK
(In reply to comment #1)
> Как именно вы запускаете suspend2disk?
s2disk

> Попробуйте удалить пакет suspend, или хотя бы закомментировать строку
>   TryMethod ususpend-disk.conf
> в /etc/hibernate/disk.conf (если suspend2disk запускается через hibernate).

Попробовал. Resume произошёл, но отправить систему в suspend2disk больше не получается.
Точнее не получается до нормального завершения, т.е. после reboot/poweroff снова можно, но
только один раз. + не заводится usb мышь (Genius NetScroll+Mini Traveler).
Заметил в системном логе надпись, что какой-то девайс не может уснуть. 
Откомментировал опцию  UnloadAllModules yes, появилась возможность отправлять в сон снова. Мышь заводится.
Однако теперь "некорректно восстанавливаются" acerhk/acer-wmi/iwl3945(какой точно не скажу), но
перестаёт работать индикатор wlan и на кнопку (rfkill switch) уже не реагирует.
Возможно не правильные параметры модулям передаются.
Но это уже собственно точно не проблема klibc-utils-initramfs, мне думается.

> Файлы 99-root.rules, 99-resume.rules не нужно искать в системе - они создаются только в
> только при использовании root=LABEL=... или resume=LABEL=...; при использовании других
пробовал и эти варианты.
> форм задания устройств (в том числе UUID) дополнительные файлы не создаются
> даже в initramfs.
Понятно.

Comment 3 Sergey Vlasov 2008-10-30 23:06:28 MSK
Проблема даже не klibc-utils-initramfs, а mkinitrd - отсутствие поддержки s2disk (userland swsusp); сейчас там поддерживается только swsusp из ядра (запускаемый через echo disk >/sys/power/state; код для сохранения образа в этом случае находится в ядре). К сожалению, в области suspend расплодилось слишком много различных реализаций и утилит для поддержки, каждая со своим набором багов.

Хотя можно попробовать перегенерировать initrd, добавив в вызов mkinitrd опции:

  -a /lib/ld-linux.so.2=/lib/ld-linux.so.2 \
  -a /lib/libc.so.6=/lib/libc.so.6 \
  -a /lib/liblzo2.so.2=/usr/lib/liblzo2.so.2 \
  -a /bin/resume=/usr/lib/suspend/resume

(при установленном пакете suspend; на x86_64 пути будут другие). При загрузке с таким initrd должно произойти возобновление после использования s2disk из пакета suspend (а вот поддержка swsusp из ядра, вероятно, сломается).
Comment 4 Лаврущенко Александр 2008-10-31 11:38:52 MSK
(In reply to comment #3)
>/sys/power/state; код для сохранения образа в этом случае находится в ядре). К
> сожалению, в области suspend расплодилось слишком много различных реализаций и
> утилит для поддержки, каждая со своим набором багов.
Согласен uswsup,swsup,tuxonice. Буду надеятся, что выживет сильнейший :).
> Хотя можно попробовать перегенерировать initrd, добавив в вызов mkinitrd опции:
> 
>   -a /lib/ld-linux.so.2=/lib/ld-linux.so.2 \
>   -a /lib/libc.so.6=/lib/libc.so.6 \
>   -a /lib/liblzo2.so.2=/usr/lib/liblzo2.so.2 \
>   -a /bin/resume=/usr/lib/suspend/resume
при установленном suspend, у меня:
-a /lib/ld-linux.so.2=/lib/ld-linux.so.2 \
-a /lib/libc.so.6=/lib/libc.so.6 \
-a /lib/liblzo2.so.2=/usr/lib/liblzo2.so.2 \
-a /bin/resume=/usr/sbin/resume
> suspend (а вот поддержка swsusp из ядра, вероятно, сломается).
Не проверял, но uswsup заработало. Мне показалось засыпает\просыпается быстрее, может из-за компрессии, мышь после первого просыпания отвалилась, после второго нет (видимо потому, что заснул через hibernate во второй раз, т.е. с выгрузкой всех модулей).
Однако забыл отметить, что в обоих случаях uswsup,swsup иногда отваливаются настройки клавиатурных раскладок в иксах. Помогает перезапуск иксов.

В общем по-сути баг мне кажется решён, или его не было :). Тикет закрывать что-ли?

Comment 5 Лаврущенко Александр 2008-11-06 14:54:06 MSK
> Однако забыл отметить, что в обоих случаях uswsup,swsup иногда отваливаются
> настройки клавиатурных раскладок в иксах. Помогает перезапуск иксов.
Ответить как часто не могу, но таки часто.
Внесение конфигурации в xorg.conf не помогает, порылся в системе понял, что в ALT сделано
несколько иначе.
Восстановление раскладки возможно так как сделано в alterator-xkb:
setxkbmap -option && setxkbmap $(cat /etc/X11/xinit/Xkbmap)
было-бы неплохо заставить эту команду выполнятся при resume.
Кто-нибудь подскажет как это кошерно сделать?
Запуск s2disk производится из меню klaptop, и у меня есть подозрение, что он вызывает напрямую
s2disk т.к. не выполняется xbacklight, запуск которогого прописан в конфиге
kpykc/~> sudo cat /etc/hibernate/common.conf | gr -A 1 xba
### xbacklight
 BackLight yes
Если надо на это другой баг открыть подкажите, а то я сомневаюсь.

Comment 6 Michael Shigorin 2014-11-05 20:41:09 MSK
В 4.1/branch исправления не будут вноситься уже технически (заглушена очередь на сборку), поэтому прошу ошибки, актуальные для sisyphus/p7/t7, перевесить на текущие ветки или сизиф.