swsusp2 && kernel 2.6.18 && debian sarge 3.1

Здесь обсуждаются все вопросы, не попадающие под другие категории
Аватара пользователя
red f0x
Неотъемлемая часть форума
Сообщения: 338
Зарегистрирован: 08 мар 2004, 01:41

swsusp2 && kernel 2.6.18 && debian sarge 3.1

Сообщение red f0x »

Такая сложилась ситуация с swsusp2 на Debian Sarge 3.1 с самосборным ядром 2.6.18 - не могу
заставить работать гибернэйт. Накатил на ядро патч swsusp2 2.2.8. Тем не менее, при попытке воспользоваться скриптом hibernate тот кричит, что возможность, якобы, не активна:

Код: Выделить всё

devel:/sys/power/suspend2# hibernate
Your kernel does not have any recent Software Suspend 2 support compiled in.
Please follow the HOWTO linked from http://softwaresuspend.berlios.de/ for
instructions on how to compile Software Suspend into your kernel.
hibernate: Aborting.
Если сказать echo > /sys/power/suspend2/do_suspend, то система как бы уходит в нирвану. Т.е., имеем состояние кота Шрёдингера - клиент находится в суперпозиции по отношению к состояниям "работает"/"не работает". С одной стороны, коммандная строка работает, но с другой при попытке прочитать какой-либо файл система надолго задумывается и впадает в транс. Складывается парадоксальная ситуация - как бы оно вкомпилено и даже что-то делает, а с другой стороны, как бы ничерта не работает.
В берлиозовском факе говорится о том, что в linuxrc на initrd.img надо прописать строку echo > /proc/suspend2/do_resume, но в /proc у меня нет ничего подобного, зато есть в /sys/power/suspend2.

Из статьи на opennet.ru:
Проверка.
---------

После перезагрузки смотрим содержимое /proc/acpi/info
Если в строке "states:" присутствует S4 (swsusp), то все в порядке, иначе
смотрим причину неработы swsusp в /var/log/messages

Пробуем заснуть:
echo 4 >/proc/acpi/sleep


Для информации, S? режимы бывают следующие:
- S1 (Stopgrant, Standby) - Временное засыпание, без выключения.
На CPU подается питание, но инструкции не выполняются.

- S2 - не используется.

- S3 (Suspend to RAM) - отключение питания CPU, дамп регистров хранится в ОЗУ

- S4 (Suspend to Disk, Hibernate) - полное выключение, дамп памяти и регистров CPU
сбрасывается на диск.

- S5 - программное выключение питания.

Подробнее об ACPI можно почитать http://www.columbia.edu/~ariel/acpi/acpi_howto.txt
Опять же, в /proc/acpi/info у меня только строка version: 20060707 и никаких state. Известно ли кому-нить что-нить по этому поводу? Надо ли патчить ядра 2.6.18 на предмет правки мозгов по поводу АСПИ? Файл sleep там так же отсутствует.

Вот что ещё...

Код: Выделить всё

f0x@devel:~$ cat /sys/power/suspend2/debug_info
Suspend2 debugging info:
- SUSPEND core   : 2.2.8
- Kernel Version : 2.6.18-rf0
- Compiler vers. : 3.3
- Attempt number : 0
- Parameters     : 0 16384 0 0 0 0
- Overall expected compression percentage: 0.
- Compressor is 'lzf'.
- Swapwriter inactive.
- Filewriter inactive.
- No I/O speed stats available.
- Extra pages    : 0 used/500.
В lilo.conf прописано среди прочих параметров ядра

Код: Выделить всё

append="resume2=swap:/dev/hdb5"
Короче, "ниччего не понимаю..." (с) Винни Пух.

ПиЭс: содержимое hibernate.conf с поскипанными закомментированными строками:

Код: Выделить всё

UseSwsusp2 yes
Reboot no
EnableEscape yes
DefaultConsoleLevel 1
SuspendDevice swap:/dev/hdb5
UseSysfsPowerState disk
PowerdownMethod shutdown
Verbosity 0
LogFile /var/log/hibernate.log
LogVerbosity 1
Distribution debian
SaveClock restore-only
UnloadBlacklistedModules yes
LoadModules auto
и в /var/log/messages я не нашёл никаких объяснений неработе всей этой... гм, игрушки :)

Всем ответившим заранее спасибо. (Всё это дело хотелось бы заставить работать на стационарной персоналке, а не ноуте...)
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev

Аватара пользователя
red f0x
Неотъемлемая часть форума
Сообщения: 338
Зарегистрирован: 08 мар 2004, 01:41

Сообщение red f0x »

Да, чуть не забыл, планируется сохранять имидж на своп - /dev/hdb5 в моём случае. Он же используется как системный своп для работающей системы. В доках я не нашёл ничего, что запрещало бы так делать, за исключением того, что своп должен быть как минимум на 30% больше объёма моска (что в моём случае выполняется - 512Мб моска и 1Гб свопа). Т.е. хочется настроить суспенд-то-диск (своп)
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev

Аватара пользователя
kif0rt
Неотъемлемая часть форума
Сообщения: 1371
Зарегистрирован: 03 ноя 2004, 01:49
Откуда: Минск

Сообщение kif0rt »

Где-то год назад у меня эта штука работала на Сардже... Даже прикрутил SplashScreen ... Хотел блин напиасть мануал по этой теме ... но поленилсся, а теперь и не всмпомню как делал. Помню в /etc/mkinitrd/ клался какой-то файл с название типа swsusp. Там умный скрипт был .. который и помогал работать hibernate. А так больше пока и не вспомню ...
Ненасилие ещё никому не помогало
Trying is the first step towards failure (c) Homer Simpson

Аватара пользователя
red f0x
Неотъемлемая часть форума
Сообщения: 338
Зарегистрирован: 08 мар 2004, 01:41

Сообщение red f0x »

Мда, плохо, конечно, что поленился. Но тут дело в том, что я не допираю, а что у меня в системе не так? Вроде и патч присобачил к ядру и даже реакция какая-то есть на echo > /sys/power/suspend2/do_suspend. Не пойму вот. Или всё же дело в том, что и на предмет АСПИ нужна промывка мозгов? Не хотелось бы, по правде - надоело ядра пересобирать...
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev

michael
Неотъемлемая часть форума
Сообщения: 434
Зарегистрирован: 12 апр 2004, 11:00
Откуда: г. Владивосток
Контактная информация:

Сообщение michael »

В том же /sys/power/suspend2/ есть куча параметров, управляющих этим суспендом. У меня, допустим, была проблема в том, что по умолчанию было включено сжатие образа.

P.S. А ванильный суспенд не пробовал?

Аватара пользователя
red f0x
Неотъемлемая часть форума
Сообщения: 338
Зарегистрирован: 08 мар 2004, 01:41

Сообщение red f0x »

Так всё с того и началось, что ванильный как бы не работал. Потому я и накатил патч - подумал, что это что-то изменит. Сжатие, кажется, не используется...

Ещё немного информации: с /proc/acpi/sleep я разобрался. По умолчанию эта опция в конфиге ядра помечена как deprecated и не установлена. Вылечилось правкой конфига и пересборкой ядра.

Далее: если сказать echo -n "4" > /proc/acpi/sleep (/proc/acpi/sleep можно с таким же успехом заменить на echo disk > /sys/power/suspend2/state, как я понял), то происходит следующее:

Код: Выделить всё

suspend2: 2.2.8: Swapwriter: Signature found.
suspend2: 2.2.8: Resuming enabled.
suspend2: 2.2.8: Initiating a software suspend cycle.

Message from syslog@localhost at <date> ...
localhost kernel: Freezing processes
Система уходит в спячку.

Если попытаться её разбудить таким макаром - echo > /sys/power/suspend2/do_resume, то выплёвывается следующее:

Код: Выделить всё

suspend2: 2.2.8: Normal swapspace found.
suspend2: 2.2.8: No image found.
suspend2: 2.2.8: Read image returned -61
hibernate по-прежнему не видит suspend2 в упор. Ядро при загрузке говорит вот что:

Код: Выделить всё

Suspend2: Initrd lacks echo > /proc/suspend2/do_resume
Дело оказалось не в АСПИ, как я думал... Про то, что /suspend2/do_resume в /proc нет - я уже молчу :) Может всё-таки нельзя использовать суспенд на рабочий своп? Но если и так, почему гибернейт в упор не видит суспенд2 в ядре? Ниччё ни понимаю... :?

Да, чуть не забыл. Аппендикс, на всякий случай: всё из дистрибутива (Sarge 3.1 r0a + security updates) - и гибернейт и сопутствующее, только ядро самосборное ванильное с накаченным патчем для suspend2
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev

Аватара пользователя
kif0rt
Неотъемлемая часть форума
Сообщения: 1371
Зарегистрирован: 03 ноя 2004, 01:49
Откуда: Минск

Сообщение kif0rt »

red f0x писал(а):Мда, плохо, конечно, что поленился. Но тут дело в том, что я не допираю, а что у меня в системе не так? Вроде и патч присобачил к ядру и даже реакция какая-то есть на echo > /sys/power/suspend2/do_suspend. Не пойму вот. Или всё же дело в том, что и на предмет АСПИ нужна промывка мозгов? Не хотелось бы, по правде - надоело ядра пересобирать...
Я вот тоже помню.. Всё вроде как надо, а не работает ... Ты посмотри dmesg | grep suspend. Может что-то полезное там будет. Ещё жне в ядре нужна поддержка LZA сжатия кажется для работы суспенда.

В hibernate.conf всё вроде правильно по умолчанию и должно работать, ну разве что мелкие свистелки там настроить и black-list модулей.

http://wiki.suspend2.net/DistroAndHardw ... bianInitrd
Скачай initr script и положи в /etc/mkinitrd , после чего собери initrd. У меня вроде только после этого всё заработало.

Ещё почитай это:
http://lists.suspend2.net/lurker/messag ... da.en.html
Ненасилие ещё никому не помогало
Trying is the first step towards failure (c) Homer Simpson

Аватара пользователя
red f0x
Неотъемлемая часть форума
Сообщения: 338
Зарегистрирован: 08 мар 2004, 01:41

Сообщение red f0x »

kif0rt, спсб, буду вечером разруливать... Может чего и выйдет.
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

Тупой вопролс: ядру ли передан параметр resume=/dev/hdxY ?
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
red f0x
Неотъемлемая часть форума
Сообщения: 338
Зарегистрирован: 08 мар 2004, 01:41

Сообщение red f0x »

Как бы да... Через append в lilo.conf. Оть таким макаром resume2=swap:/dev/hdb5
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev

Аватара пользователя
rain
Неотъемлемая часть форума
Сообщения: 219
Зарегистрирован: 02 июл 2006, 20:56
Контактная информация:

Сообщение rain »

red f0x писал(а):Как бы да... Через append в lilo.conf. Оть таким макаром resume2=swap:/dev/hdb5
Кхм... А почему именно так? Правильно все-таки resume=/dev/hdxY. По крайней мере, в GRUB писал именно так. В принципе, этот параметр нужен в загрузчике, насколько понимаю, если он не указан в ядре в Power management options (ACPI, APM) ---> Default resume partition

Кстати, ядро не патчил и, по большому счету, ничего особо не настраивал... дистр - Debian Etch.

Аватара пользователя
red f0x
Неотъемлемая часть форума
Сообщения: 338
Зарегистрирован: 08 мар 2004, 01:41

Сообщение red f0x »

resume=/dev/hdxY.

А почему так? В доке на suspend2 параметр именно resume2 или предлагаете пользовать suspend? (resume - это для suspend, я так понял) В принципе, если оно у меня заработает, то почему бы и нет?
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev

Аватара пользователя
lizard
Интересующийся
Сообщения: 64
Зарегистрирован: 18 сен 2004, 01:36
Откуда: Речица
Контактная информация:

Сообщение lizard »

А нвидиевских дров не стоит? Они, по идее, указаны /etc/hibernate/blacklist-modules, но всё же (интересно, чем там не угодил psmouse?). Я сам долго бился, не мог понять почему не работает, пока какой-то faq не прочитал. Правда, пробовал не hibernate, а echo disk > /sys/power/state, а затем resume=/dev/hdaX на ванильном ядре 2.6.13, debian sarge 3.0r0 (дистрибутивное 2.6.8.2 не очень-то захотело суспендиться), без всяких патчей. С загруженным модулем nvidia версии 7667 система при засыпании подвисала то ли после сброса буферов, то ли после sleeping tasks. Без него - засыпала. Может, и здесь аналогично. (Материнка на Intel440BX, что интересно, acpi во время экспериментов у меня был в биосе отключен, уже и не помню, с какого перепугу)
Но вообще в swsusp мне не понравилось, что при засыпании/просыпании оно сначала отключает hdd, потом включает, скидывает/читает содержимое памяти, снова отключает, и уже окончательно засыпает/просыпается. Не получалось большого выигрыша по скорости загрузки. Вот как-то в Win2k сделали, что оно шустренько так грузится! Там ускорение заметно. Правда, по секундам не замерял, но всё же.

Аватара пользователя
red f0x
Неотъемлемая часть форума
Сообщения: 338
Зарегистрирован: 08 мар 2004, 01:41

Сообщение red f0x »

Стоит. Указаны даже в БЛ. Короче, результаты предварительного расследования показали, что дистровый гибернейт-скрипт ничерта не знает об и-фейсе /sys/power/suspend2. Хотя, со свопом похоже тоже косяк. Очевидно, системный своп нельзя использовать для саспенда. (Или чего оно тогда пишет при попытке зарезюмиться, типо не могу прочитать имидж, найдено нормальное своп-пространство?) Думаю, проблему можно решить заменой гибернейт-скрипта на более новый (я вытянул 1.94). В мкинитрд, как и советовали, закинул скриптик, найденный по линку и слегка доработанный мною с помощью напильника. Система пытается зарезюмиться при загрузке, но не резюмится (см. выше). Т.о., полноценно проверить пока не удастся, ибо свободным местом на венике под ещё один своп не располагаю. Хотя, можно попробовать саспенд в файл. Но там будет видно. Всем ответившим - басое человеческое пасиба :)
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

red f0x, просто отключи своп свой на время экспириментов ;)
Опыт растет прямо пропорционально выведенному из строя оборудованию

Ответить