
swsusp2 && kernel 2.6.18 && debian sarge 3.1
kif0rt, похоже, что можно. Я ошибси. Дело не в свопе. Я уже не знаю, в чём, собсна дело...
Народ, у кого эта хрень работает, расскажите, как происходит процесс саспенда через swsusp2... hibernate 1.94 у меня теперь работает, но как-то странно. Инициирует процесс саспенда, выплёвывает вот это
А дальше ничего не происходит. Питание с дисков не убирается. Система не отключается, не смотря на powerdownmethod = 5.
В логе hibernate пишет:
Видно, что он не может выгрузить модуль nvidia. Раньше ещё не мог найти компрессор, но компрессор я выставил в none. Вопрос, может ли невыгруженный модуль как-то сильно помешать? Несмотря на аргументы -k -f для hibernate?
Конфиги:suspend2.conf - он у меня используется как метод по умолчанию
Из лога kern.log при загрузке с перегенерированным initrd
оно опять не может прочитать имидж... Возможно, из-за того, что процесс саспеда не был доведён до конца? Но он по ходу и не доходит до конца сам по себе. Останавливается на freezing processes и всё. Жду ~5 минут, успеваю сходить покурить - прихожу - картина 1:1 та же, что была... Помогает только SysRq + O
Народ, у кого эта хрень работает, расскажите, как происходит процесс саспенда через swsusp2... hibernate 1.94 у меня теперь работает, но как-то странно. Инициирует процесс саспенда, выплёвывает вот это
Код: Выделить всё
suspend2: 2.2.8: Initiating a software suspend cycle.
Freezing processes
В логе hibernate пишет:
Код: Выделить всё
Starting suspend at Сбт Ноя 11 02:53:02 EET 2006
hibernate: [01] Executing CheckLastResume ...
hibernate: [01] Executing CheckRunlevel ...
hibernate: [01] Executing LockFileGet ...
hibernate: [01] Executing NewKernelFileCheck ...
hibernate: [10] Executing EnsureSwsusp2Capable ...
hibernate: [11] Executing XHacksSuspendHook1 ...
hibernate: [20] Executing MiscLaunchAuxFunc1 ...
Executing echo "Good night!"...
Good night!
hibernate: [59] Executing RemountXFSBootRO ...
hibernate: [89] Executing SaveKernelModprobe ...
hibernate: [91] Executing ModulesUnloadBlacklist ...
Some modules failed to unload: nvidia
hibernate: [95] Executing XHacksSuspendHook2 ...
hibernate: [97] Executing ChangeToSwsuspVT ...
hibernate: [98] Executing CheckRunlevel ...
hibernate: [98] Executing FullSpeedCPUSuspend ...
hibernate: [98] Executing Swsusp2ConfigSet ...
hibernate: [99] Executing DoSwsusp2 ...
hibernate: Activating suspend ...
Конфиги:suspend2.conf - он у меня используется как метод по умолчанию
Код: Выделить всё
# Example suspend2.conf file.
#
# See hibernate.conf(5) for help on the configuration items.
#
# NOTE: Suspend2 is an improved version of suspend-to-disk which currently
# requires patching your kernel. For more information, see www.suspend2.net
#
# If you do not wish to patch your kernel but still be able to suspend to
# disk, see disk.conf instead.
### suspend2 (for Software Suspend 2)
UseSuspend2 yes
Reboot no
EnableEscape yes
DefaultConsoleLevel 1
#Compressor lzf
Compressor none
Encryptor none
# ImageSizeLimit 200
## useful for initrd usage:
SuspendDevice swap:/dev/hdb5
## Powerdown method - 3 for suspend-to-RAM, 4 for ACPI S4 sleep, 5 for poweroff
PowerdownMethod 5
## Any other /proc/software_suspend setting can be set like so:
# ProcSetting expected_compression 50
## Or traditionally like this:
# Suspend2AllSettings 0 0 2056 65535 5
## Or even from the results of hibernate --save-settings with this:
# Suspend2AllSettingsFile /etc/hibernate/suspend-settings.conf
## For filewriter:
# FilewriterLocation /suspend_file 1000
# VerifyFilewriterResume2 yes
## Specify a userui like this:
# ProcSetting userui_program /usr/local/sbin/suspend2ui_text
# Scale CPU to full speed to make sure we suspend as fast as possible.
FullSpeedCPU yes
Include common.conf
Код: Выделить всё
devel:/home/f0x# cat /etc/hibernate/common.conf
# Configuration options common for suspending to disk or RAM.
# Options are not case sensitive.
#
# See hibernate.conf(5) for help on the configuration items.
##############################################################################
### Some global settings
##############################################################################
Verbosity 1
LogFile /var/log/hibernate.log
LogVerbosity 1
AlwaysForce yes
AlwaysKill yes
##############################################################################
### Scriptlets
### Scriptlets provide support for doing all sorts of things before and after
### suspending. The defaults settings here should work for most people, but
### you may wish to edit these to taste. Consult "hibernate -h" for help on
### the configuration settings.
##############################################################################
### clock
SaveClock restore-only
# see http://bugs.debian.org/317479
RemountXFSBoot yes
### lilo
EnsureLILOResumes yes
### misclaunch
OnSuspend 20 echo "Good night!"
OnResume 20 echo "Good morning!"
### modules
UnloadBlacklistedModules yes
LoadModules auto
SwitchToTextMode yes
Код: Выделить всё
Nov 11 15:52:23 localhost kernel: Suspend2 2.2.8: Swapwriter: Signature found.
Nov 11 15:52:23 localhost kernel: Suspend2 2.2.8: Resuming enabled.
Nov 11 15:52:23 localhost kernel: Suspend2 2.2.8: Normal swapspace found.
Nov 11 15:52:23 localhost kernel: Suspend2 2.2.8: No image found.
Nov 11 15:52:23 localhost kernel: Suspend2 2.2.8: Read image returned -61.
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev
Llama, абсолютно однофигственно - что с nvidia, что без. Пробовал удалять его - такая же херня.
Короче, спасибо ещё раз всем ответившимся, но боюсь, придётся забить и всё это останется тайной для меня, ибо уже не знаю, в какую сторону думать
Короче, спасибо ещё раз всем ответившимся, но боюсь, придётся забить и всё это останется тайной для меня, ибо уже не знаю, в какую сторону думать

Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev
Выяснилось ещё кое-что, впрочем, это всё равно мало на что влияет в моём случае, ибо не понимаю сути происходящего... Так вот, впаял я в ядро PM_DEBUG, потом сделал:
echo 1 > /sys/power/suspend2/freezer_test
echo 6 > /sys/power/suspend2/user_interface/default_console_level
echo > /sys/power/suspend2/do_suspend
В ответ система выдала следующее:Все последующие попытки сказать echo > /sys/power/suspend2/do_suspend приводят к тому же, правда там варьируется число тасков, которые не были заморожены, иногда бывает просто pktgen/0. Из прочитанного в Documentation/power/suspend2.txt я так понял, что если ядру не удаётся заморозить все таски, то имидж памяти просто не сбрасывается на своп и процесс саспенда не происходит. Вот почему ядро не могло найти образ на свопе... Потому что его там никто не сохранял. Странно, что ядро не восстанавливает работоспособный котекст и всё что можно делать, это пытаться и дальше сделать саспенд в надежде, что ядру удастся заморозить все задачи и потоки или сделать шатдаун через SysRq + O. Почему не может быть заморожен syslogd - абсолютно непонятно. Причину нашёл, но как её устранить, уже точно не знаю.
echo 1 > /sys/power/suspend2/freezer_test
echo 6 > /sys/power/suspend2/user_interface/default_console_level
echo > /sys/power/suspend2/do_suspend
В ответ система выдала следующее:
Код: Выделить всё
Suspend2 2.2.8: Initiating sofware suspend cycle.
Freezing processes
Stopping tasks:============================================================Freezing bdev...===========================Freezing threads...=======================
stopping tasks timed out after 20 seconds (2 tasks remaining)
pktgen/0
syslogd
Restarting tasks... <6> Strange, syslogd not stopped
Done
[...]
Restarting tasks... <6> Strange, init not stopped
Done
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev
Поднял эту древнюю тему ибо обнаружил ещё одно занятное обстоятельство. Не хотелось бы делать поспешных выводов, но... Похоже, что xfs (в смысле, ФС, а не фонт-сервер
) не совместима с suspend(2). При попытке сделать саспенд (ядро 2.6.20, патч suspend2 - 2.2.9.10, hibernate - 1.93, файловая система - xfs) получаем жалобу на то, что xfssyncd not stopped. На самом деле, в коде (fs/xfs/linux-2.6/xfs_super.c::xfssyncd() - занимается синхронизацией ФС, как явствует из названия ) этот поток не устанавливает никаких PF_NOFREEZE и не вызывает try_to_freeze(). В общем, не знаю, как отнестись к этой занятной багофиче, но очень похоже, что просто не судьба... 
Есть одна безумная идея - вставить в xfssyncd():Но это уже скорее от безысходности. В принципе, такую правку вполне таки можно сделать, но кто даст гарантию, что поток будет вести себя тихо после слива имиджа системы? И если не будет, то чем это всё может обернуться? Кстати, интересная трабла.
Гугл молчит, как румынский партизан...
Чтобы подтвердить или опровергнуть мои догадки, народ, поделитесь, пожалуйста, статистикой - у кого ФС - xfs и при этом работает suspend или suspend2.


Есть одна безумная идея - вставить в xfssyncd():
Код: Выделить всё
current->flags |= PF_NOFREEZE;
Гугл молчит, как румынский партизан...
Чтобы подтвердить или опровергнуть мои догадки, народ, поделитесь, пожалуйста, статистикой - у кого ФС - xfs и при этом работает suspend или suspend2.
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev
Нет, для начала я бы всё-таки хотел узнать, как оно у народа. А то не очень хорошо выйдет, шуметь попусту. Я ещё до конца не уверен, что это багофича. Но если подтвердится, надо будет тогда скорее на xfs жаловаться, ИМХО, а не на suspend2, т.к. выходит, что это проблема именно xfs из-за того, что она не пускает систему в suspend. Кстати, вот что касается ядрёного потока kpktgend (генератор пакетов - для тестирования сети), то тут уже даже немного странно, ИМХО, что он не поддерживает suspend. Как и следовало ожидать, в net/core/pktgen.c::pktgen_thread_worker() тоже не обнаружено никаких следов работы с заморозкой. Но тут проблема может быть устранена нехитрым workaround'ом - собрать pktgen в модуль и просто грузить его только тогда, когда он нужен (вообще, наиболее разумное решение, ибо нефиг ему на мой взгляд быть статически влинкованным в ядро). А когда не нужен - просто выгружать. Лично я его вообще выкинул, т.к. сейчас он мне уже совсем не нужен.
Ну какая работа со строками может быть в языке, название которого является не строкой, а символом? (c) Sergue E. Leontiev