В Systemd-243 поломана гибернация на swap-раздел

Ответить
bsvsf
Сообщения: 23
Зарегистрирован: 07 июн 2018, 04:40
Operating system: ROSA Desktop Fresh 8.1 KDE, 10 Plasma

В Systemd-243 поломана гибернация на swap-раздел

Сообщение bsvsf » 24 апр 2020, 04:28

При вызове /lib/systemd/systemd-sleep hibernate выходит ошибка (видна только в режиме отладки):

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

systemd-sleep[xxxx]: Error reading from /sys/power/resume_offset: No such file or directory
В результате, гибернация не происходит, сервис systemd-hibernate.service становится в статус failed с сообщением об ошибке:

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

systemd-sleep[xxxx] Failed to prepare for hibernation: No such file or directory
Анализ исходного кода sleep.c показал место, где возникает ошибка:

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

static int configure_hibernation(void) {
...
        r = read_one_line_file("/sys/power/resume_offset", &resume_offset);
        if (r < 0)
                return log_debug_errno(r, "Error reading from /sys/power/resume_offset: %m");
...
Причина в том, что гибернация производится в раздел (не в файл) и файла /sys/power/resume_offset не существует.
Как обходное решение можно было рекомендовать создание пустого или содержащего "0" файла /sys/power/resume_offset, но ядро этого не делает при задании параметра resume_offset=0 (вместо нуля пробовал различные числа). Проверено на ядрах 4.9.155 и 4.9.124
Ещё как вариант, установить другую версию systemd, но не уверен, какие шаги необходимо предпринять для корректного отката/обновления systemd.

P.S. В коде sleep.c от systemd-242 функция configure_hibernation() отсутствует, а код, связанный с усыплением, в systemd-244-245 значительно переработан. Во всех этих версиях описанной проблемы не существует, она есть только в systemd-243.

keleg
Сообщения: 5508
Зарегистрирован: 15 сен 2011, 01:58

В Systemd-243 поломана гибернация на swap-раздел

Сообщение keleg » 24 апр 2020, 10:15

только что проверил на релизном ядре 5.4, ошибка не воспроизводится.
/lib/systemd/systemd-sleep hibernate
Suspending system...
System resumed.

bsvsf
Сообщения: 23
Зарегистрирован: 07 июн 2018, 04:40
Operating system: ROSA Desktop Fresh 8.1 KDE, 10 Plasma

В Systemd-243 поломана гибернация на swap-раздел

Сообщение bsvsf » 24 апр 2020, 12:50

Приведите плиз вывод команд:

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

systemctl --version
cat /proc/cmdline
cat /proc/swaps
ls /sys/power/

Аватара пользователя
VictorR2007
Сообщения: 7252
Зарегистрирован: 12 сен 2011, 13:00
Operating system: ROSA 2023.1

В Systemd-243 поломана гибернация на swap-раздел

Сообщение VictorR2007 » 24 апр 2020, 14:04

bsvsf писал(а):
24 апр 2020, 12:50
Приведите плиз вывод команд:
У меня на ядре 5.6 это выглядит так

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

victor@asus ~ $ systemctl --version
systemd 243 (243)
+PAM +AUDIT -SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN -PCRE2 default-hierarchy=hybrid
victor@asus ~ $ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-5.6.4-generic-1rosa-x86_64 root=UUID=9790901a-e43a-4b55-b2d4-439c6e28e291 ro splash=silent logo.nologo quiet resume=UUID=7eddbbf7-19c0-4d04-85ad-650520f5ad70
victor@asus ~ $ cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/sda3                               partition       17181692        1024    -2
victor@asus ~ $ ls /sys/power/
disk        mem_sleep  pm_debug_messages  pm_print_times  pm_trace            pm_wakeup_irq  resume         state           sync_on_suspend  wake_unlock
image_size  pm_async   pm_freeze_timeout  pm_test         pm_trace_dev_match  reserved_size  resume_offset  suspend_stats/  wake_lock        wakeup_count
victor@asus ~ $

Аватара пользователя
mikhailnov
Сообщения: 259
Зарегистрирован: 29 авг 2015, 22:53
Operating system: ROSA
Контактная информация:

В Systemd-243 поломана гибернация на swap-раздел

Сообщение mikhailnov » 24 апр 2020, 14:27

bsvsf писал(а):
24 апр 2020, 04:28
Во всех этих версиях описанной проблемы не существует, она есть только в systemd-243.
Как вы это узнали?

bsvsf
Сообщения: 23
Зарегистрирован: 07 июн 2018, 04:40
Operating system: ROSA Desktop Fresh 8.1 KDE, 10 Plasma

В Systemd-243 поломана гибернация на swap-раздел

Сообщение bsvsf » 24 апр 2020, 14:43

VictorR2007 писал(а):
24 апр 2020, 14:04
resume_offset
ваше ядро создаёт файл resume_offset, поэтому ошибка не возникает, приведите ещё вывод команды для ясности:

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

cat /sys/power/resume_offset
mikhailnov писал(а):
24 апр 2020, 14:27
Как вы это узнали?
в результате анализа исходного кода различных релизов systemd

Аватара пользователя
VictorR2007
Сообщения: 7252
Зарегистрирован: 12 сен 2011, 13:00
Operating system: ROSA 2023.1

В Systemd-243 поломана гибернация на swap-раздел

Сообщение VictorR2007 » 24 апр 2020, 15:02

bsvsf писал(а):
24 апр 2020, 14:43
приведите ещё вывод команды для ясности:

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

victor@asus ~ $ cat /sys/power/resume_offset
0
victor@asus ~ $ 

bsvsf
Сообщения: 23
Зарегистрирован: 07 июн 2018, 04:40
Operating system: ROSA Desktop Fresh 8.1 KDE, 10 Plasma

В Systemd-243 поломана гибернация на swap-раздел

Сообщение bsvsf » 24 апр 2020, 15:11

Спасибо, "0" в файле /sys/power/resume_offset это как раз то, чего я безуспешно пытался добиться от ядра линейки 4.9.
Значит, буду обновлять ядро до 5.4, но это будет костыль, а не решение, т.к. проблема кроется именно в глючном systemd-243.

P.S. Код гибернации в systemd-244 в значительной степени переработан и улучшен, а в systemd-245 его ещё дошлифовали.

Аватара пользователя
mikhailnov
Сообщения: 259
Зарегистрирован: 29 авг 2015, 22:53
Operating system: ROSA
Контактная информация:

В Systemd-243 поломана гибернация на swap-раздел

Сообщение mikhailnov » 24 апр 2020, 23:15

Звучит как причина обновить systemd, но надо бы еще причин собрать, т.к. при его обновлении можно во что-нибудь неприятное вляпаться.
При желании можете попробовать бекпортировать коммиты, делающий нужные вам правки.
Для этого склонируйте git, в котором есть все патчи из пакета https://abf.io/import/systemd

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

git clone https://github.com/mikhailnov/systemd -b rosa-v243
и в нем git cherry-pick необходимые коммиты.
Затем включим ваши бекпорты в пакет.

bsvsf
Сообщения: 23
Зарегистрирован: 07 июн 2018, 04:40
Operating system: ROSA Desktop Fresh 8.1 KDE, 10 Plasma

В Systemd-243 поломана гибернация на swap-раздел

Сообщение bsvsf » 27 апр 2020, 09:58

mikhailnov писал(а):
24 апр 2020, 23:15
git clone
этот пункт прошел успешно.
mikhailnov писал(а):
24 апр 2020, 23:15
git cherry-pick необходимые коммиты
Выбрал несколько коммитов, в которых проблема точно исправлена, но далее, вне моих познаний:

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

git cherry-pick b72571e04dd6e63adcd4a03ef0b83d995623d476
Auto-merging src/shared/sleep-config.c
CONFLICT (content): Merge conflict in src/shared/sleep-config.c
error: could not apply b72571e04d... shared/sleep-config: two more error handling fixes, use structured initialization
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
Ещё несколько коммитов (возможно, неверно выбраны):
https://github.com/systemd/systemd-stab ... 8ac1e3d6b7
https://github.com/systemd/systemd-stab ... 1ce7c3106c

bsvsf
Сообщения: 23
Зарегистрирован: 07 июн 2018, 04:40
Operating system: ROSA Desktop Fresh 8.1 KDE, 10 Plasma

В Systemd-243 поломана гибернация на swap-раздел

Сообщение bsvsf » 27 апр 2020, 11:52

Нашел дату и обстоятельства, при которых проблема была привнесена:
https://github.com/systemd/systemd/pull/12760

Пост от 25 июня 2019 года со ссылкой на коммит https://github.com/systemd/systemd/comm ... d0281cb6a4

Странно, что тогда в обсуждениях никто не обратил внимание, что файла /sys/power/resume_offset может не существовать и это не является ошибочным состоянием, препятствующим гибернации.

Аватара пользователя
mikhailnov
Сообщения: 259
Зарегистрирован: 29 авг 2015, 22:53
Operating system: ROSA
Контактная информация:

В Systemd-243 поломана гибернация на swap-раздел

Сообщение mikhailnov » 29 апр 2020, 00:14

bsvsf писал(а):
27 апр 2020, 09:58
познаний
bsvsf писал(а):
27 апр 2020, 09:58
Выбрал несколько коммитов, в которых проблема точно исправлена, но далее, вне моих познаний:
Тут надо открыть файл src/shared/sleep-config.c, конфликты в нем будут помечены примерно так:
====
текст
<<<<
Оставить правильный вариант, затем:
git add .
git commit -a
Если там добавится то, чего явно нет в коммите, с которым работаете, например, если тот коммит изменяет пару строк, а у вас целая новая функция появилась, то значит надо предварительно какие-то еще коммиты затащить, сделав git cherry-pick --abort для отмены применения текущего коммита.

bsvsf
Сообщения: 23
Зарегистрирован: 07 июн 2018, 04:40
Operating system: ROSA Desktop Fresh 8.1 KDE, 10 Plasma

В Systemd-243 поломана гибернация на swap-раздел

Сообщение bsvsf » 30 апр 2020, 05:00

В итоге, обновил ядро до 4.15.0
Данная версия по-умолчанию создаёт файл /sys/power/resume_offset с "0" в качестве содержимого. Гибернация работает.
Всем спасибо за участие! :beer:

Гость 25
Сообщения: 199
Зарегистрирован: 27 фев 2020, 17:01
Operating system: Rosa Fresh

В Systemd-243 поломана гибернация на swap-раздел

Сообщение Гость 25 » 09 май 2020, 09:47

Вот не зря в версии Росы R-11 ядро до сих пор 4.15.
С ядрами версий выше не все так ладно. Вот например как здесь
Вложения
dmesg.png

Гость 25
Сообщения: 199
Зарегистрирован: 27 фев 2020, 17:01
Operating system: Rosa Fresh

В Systemd-243 поломана гибернация на swap-раздел

Сообщение Гость 25 » 09 май 2020, 09:51

Кстати как откатить ядро более позднее на более раннее? Знаю как обновить ядро до более нового. А вот как с более нового (если вдруг что то не так на новом) вернуться на старое? (если например уже успел почистить от старых ядер командой sudo urpm-package-cleanup --oldkernels)

Ответить

Вернуться в «Обсуждение ROSA Fresh R9-R11.1 (платформа 2016.1)»